summaryrefslogtreecommitdiff
path: root/driver/xf86-video-sis/src/sis_dri.h
blob: 399d757c29dcad4122027a652e0005264fb02fea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
 * SiS DRI wrapper
 *
 * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
 *
 * Licensed under the following terms:
 *
 * Permission to use, copy, modify, distribute, and sell this software and its
 * documentation for any purpose is hereby granted without fee, provided that
 * the above copyright notice appears in all copies and that both that copyright
 * notice and this permission notice appear in supporting documentation, and
 * and that the name of the copyright holder not be used in advertising
 * or publicity pertaining to distribution of the software without specific,
 * written prior permission. The copyright holder makes no representations
 * about the suitability of this software for any purpose.  It is provided
 * "as is" without expressed or implied warranty.
 *
 * THE COPYRIGHT HOLDER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
 * EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 *
 * Authors: 	Can-Ru Yeou, SiS Inc.,
 *		Thomas Winischhofer <thomas@winischhofer.net>,
 *		others.
 *
 * Previously taken and modified from tdfx_dri.h
 */

#ifndef _SIS_DRI_H_
#define _SIS_DRI_H_

#include "xf86drm.h"

/* Hack: When the types were changed, the typedefs
 * went into drm.h. This file did not exist earlier.
 */
#ifndef _DRM_H_
#define drm_handle_t drmHandle
#define drm_context_t drmContext
#endif

#define SIS_MAX_DRAWABLES 256
#define SISIOMAPSIZE (64*1024)

typedef struct {
  int CtxOwner;
  int QueueLength;		/* (300: current, 315/etc: total) length of command queue */
  unsigned int AGPCmdBufNext;   /* (rename to AGPVtxBufNext) */
  unsigned int FrameCount;
#ifdef SIS315DRI
  unsigned int  sharedWPoffset;	/* Offset to current queue position (shared with 2D) */
  unsigned int  cmdQueueOffset;	/* Offset of start of command queue in VRAM */
#endif
} SISSAREAPriv, *SISSAREAPrivPtr;

#define AGPVtxBufNext AGPCmdBufNext

#define SIS_FRONT 0
#define SIS_BACK 1
#define SIS_DEPTH 2

typedef struct {
  drm_handle_t handle;
  drmSize size;
#ifndef SISISXORG6899900
  drmAddress map;
#endif
} sisRegion, *sisRegionPtr;

typedef struct {
  sisRegion regs;			/* MMIO registers */
  sisRegion agp;			/* AGP public area */
  int deviceID;				/* = pSiS->Chipset (PCI ID) */
  int width;				/* = pScrn->virtualX */
  int height;				/* = pScrn->virtualY */
  int mem;				/* total video RAM; seems unused */
  int bytesPerPixel;			/* Screen's bpp/8 */
  int priv1;				/* unused */
  int priv2;				/* unused */
  int fbOffset;				/* Front buffer; set up, but unused by DRI driver*/
  int backOffset;			/* unused (handled by the DRI driver) */
  int depthOffset;			/* unused (handled by the DRI driver) */
  int textureOffset;			/* unused (handled by the DRI driver) */
  int textureSize;			/* unused (handled by the DRI driver) */
  unsigned int AGPCmdBufOffset;		/* (rename to AGPVtxBufOffset) */
  unsigned int AGPCmdBufSize;		/* (rename to AGPVtxBufSize)   */
  int irqEnabled;
  unsigned int scrnX;			/* TODO: = width = pScrn->virtualX */
  unsigned int scrnY;			/* TODO: = height = pScrn->virtualY */
#ifdef SIS315DRI
  unsigned char *AGPCmdBufBase;
  unsigned long AGPCmdBufAddr;
  unsigned long AGPCmdBufOffset2;	/* (rename to AGPCmdBufOffset) */
  unsigned int  AGPCmdBufSize2;		/* (rename to AGPCmdBufSize)   */
  int deviceRev;			/* Chip revision */
#endif
} SISDRIRec, *SISDRIPtr;

#define AGPVtxBufOffset AGPCmdBufOffset
#define AGPVtxBufSize AGPCmdBufSize

typedef struct {
  /* Nothing here yet */
  int dummy;
} SISConfigPrivRec, *SISConfigPrivPtr;

typedef struct {
  /* Nothing here yet */
  int dummy;
} SISDRIContextRec, *SISDRIContextPtr;

#include "screenint.h"

Bool SISDRIScreenInit(ScreenPtr pScreen);
void SISDRICloseScreen(ScreenPtr pScreen);
Bool SISDRIFinishScreenInit(ScreenPtr pScreen);

#endif