savage_drm.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026: #ifndef __SAVAGE_DRM_H__
027: #define __SAVAGE_DRM_H__
028:
029: #ifndef __SAVAGE_SAREA_DEFINES__
030: #define __SAVAGE_SAREA_DEFINES__
031:
032:
033:
034:
035:
036:
037:
038:
039: #define SAVAGE_CARD_HEAP 0
040: #define SAVAGE_AGP_HEAP 1
041: #define SAVAGE_NR_TEX_HEAPS 2
042: #define SAVAGE_NR_TEX_REGIONS 16
043: #define SAVAGE_LOG_MIN_TEX_REGION_SIZE 16
044:
045: #endif
046:
047: typedef struct _drm_savage_sarea {
048:
049:
050: struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS +
051: 1];
052: unsigned int texAge[SAVAGE_NR_TEX_HEAPS];
053:
054:
055:
056: int ctxOwner;
057: } drm_savage_sarea_t, *drm_savage_sarea_ptr;
058:
059:
060:
061: #define DRM_SAVAGE_BCI_INIT 0x00
062: #define DRM_SAVAGE_BCI_CMDBUF 0x01
063: #define DRM_SAVAGE_BCI_EVENT_EMIT 0x02
064: #define DRM_SAVAGE_BCI_EVENT_WAIT 0x03
065:
066: #define DRM_IOCTL_SAVAGE_BCI_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t)
067: #define DRM_IOCTL_SAVAGE_BCI_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t)
068: #define DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_EMIT, drm_savage_event_emit_t)
069: #define DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t)
070:
071: #define SAVAGE_DMA_PCI 1
072: #define SAVAGE_DMA_AGP 3
073: typedef struct drm_savage_init {
074: enum {
075: SAVAGE_INIT_BCI = 1,
076: SAVAGE_CLEANUP_BCI = 2
077: } func;
078: unsigned int sarea_priv_offset;
079:
080:
081: unsigned int cob_size;
082: unsigned int bci_threshold_lo, bci_threshold_hi;
083: unsigned int dma_type;
084:
085:
086: unsigned int fb_bpp;
087: unsigned int front_offset, front_pitch;
088: unsigned int back_offset, back_pitch;
089: unsigned int depth_bpp;
090: unsigned int depth_offset, depth_pitch;
091:
092:
093: unsigned int texture_offset;
094: unsigned int texture_size;
095:
096:
097: unsigned long status_offset;
098: unsigned long buffers_offset;
099: unsigned long agp_textures_offset;
100: unsigned long cmd_dma_offset;
101: } drm_savage_init_t;
102:
103: typedef union drm_savage_cmd_header drm_savage_cmd_header_t;
104: typedef struct drm_savage_cmdbuf {
105:
106: drm_savage_cmd_header_t *cmd_addr;
107: unsigned int size;
108:
109: unsigned int dma_idx;
110: int discard;
111:
112: unsigned int *vb_addr;
113: unsigned int vb_size;
114: unsigned int vb_stride;
115:
116: struct drm_clip_rect *box_addr;
117: unsigned int nbox;
118: } drm_savage_cmdbuf_t;
119:
120: #define SAVAGE_WAIT_2D 0x1
121: #define SAVAGE_WAIT_3D 0x2
122: #define SAVAGE_WAIT_IRQ 0x4
123: typedef struct drm_savage_event {
124: unsigned int count;
125: unsigned int flags;
126: } drm_savage_event_emit_t, drm_savage_event_wait_t;
127:
128:
129:
130: #define SAVAGE_CMD_STATE 0
131: #define SAVAGE_CMD_DMA_PRIM 1
132: #define SAVAGE_CMD_VB_PRIM 2
133: #define SAVAGE_CMD_DMA_IDX 3
134: #define SAVAGE_CMD_VB_IDX 4
135: #define SAVAGE_CMD_CLEAR 5
136: #define SAVAGE_CMD_SWAP 6
137:
138:
139:
140: #define SAVAGE_PRIM_TRILIST 0
141: #define SAVAGE_PRIM_TRISTRIP 1
142: #define SAVAGE_PRIM_TRIFAN 2
143: #define SAVAGE_PRIM_TRILIST_201 3
144:
145:
146:
147:
148: #define SAVAGE_SKIP_Z 0x01
149: #define SAVAGE_SKIP_W 0x02
150: #define SAVAGE_SKIP_C0 0x04
151: #define SAVAGE_SKIP_C1 0x08
152: #define SAVAGE_SKIP_S0 0x10
153: #define SAVAGE_SKIP_T0 0x20
154: #define SAVAGE_SKIP_ST0 0x30
155: #define SAVAGE_SKIP_S1 0x40
156: #define SAVAGE_SKIP_T1 0x80
157: #define SAVAGE_SKIP_ST1 0xc0
158: #define SAVAGE_SKIP_ALL_S3D 0x3f
159: #define SAVAGE_SKIP_ALL_S4 0xff
160:
161:
162:
163: #define SAVAGE_FRONT 0x1
164: #define SAVAGE_BACK 0x2
165: #define SAVAGE_DEPTH 0x4
166:
167:
168:
169: union drm_savage_cmd_header {
170: struct {
171: unsigned char cmd;
172: unsigned char pad0;
173: unsigned short pad1;
174: unsigned short pad2;
175: unsigned short pad3;
176: } cmd;
177: struct {
178: unsigned char cmd;
179: unsigned char global;
180: unsigned short count;
181: unsigned short start;
182: unsigned short pad3;
183: } state;
184: struct {
185: unsigned char cmd;
186: unsigned char prim;
187: unsigned short skip;
188: unsigned short count;
189: unsigned short start;
190: } prim;
191: struct {
192: unsigned char cmd;
193: unsigned char prim;
194: unsigned short skip;
195: unsigned short count;
196: unsigned short pad3;
197: } idx;
198: struct {
199: unsigned char cmd;
200: unsigned char pad0;
201: unsigned short pad1;
202: unsigned int flags;
203: } clear0;
204: struct {
205: unsigned int mask;
206: unsigned int value;
207: } clear1;
208: };
209:
210: #endif
211:
© Andrew Scott 2006 -
2025,
All Rights Reserved