fix bogus assertion that checked for an empty texture heap list before
[mesa.git] / src / mesa / drivers / dri / i810 / i810_3d_reg.h
1 /* $XFree86: xc/lib/GL/mesa/src/drv/i810/i810_3d_reg.h,v 1.7 2002/02/22 21:33:03 dawes Exp $ */
2
3 #ifndef I810_3D_REG_H
4 #define I810_3D_REG_H
5
6 #include "i810_reg.h"
7
8 /* Registers not used in the X server
9 */
10
11 #define I810_NOP_ID 0x2094
12 #define I810_NOP_ID_MASK ((1<<22)-1)
13
14
15 /* 3D instructions
16 */
17
18
19 /* GFXRENDERSTATE_PV_PIXELIZATION_RULE, p149
20 *
21 * Format:
22 * 0: GFX_OP_PV_RULE | PV_*
23 *
24 */
25 #define GFX_OP_PV_RULE ((0x3<<29)|(0x7<<24))
26 #define PV_SMALL_TRI_FILTER_ENABLE (0x1<<11)
27 #define PV_UPDATE_PIXRULE (0x1<<10)
28 #define PV_PIXRULE_ENABLE (0x1<<9)
29 #define PV_UPDATE_LINELIST (0x1<<8)
30 #define PV_LINELIST_MASK (0x3<<6)
31 #define PV_LINELIST_PV0 (0x0<<6)
32 #define PV_LINELIST_PV1 (0x1<<6)
33 #define PV_UPDATE_TRIFAN (0x1<<5)
34 #define PV_TRIFAN_MASK (0x3<<3)
35 #define PV_TRIFAN_PV0 (0x0<<3)
36 #define PV_TRIFAN_PV1 (0x1<<3)
37 #define PV_TRIFAN_PV2 (0x2<<3)
38 #define PV_UPDATE_TRISTRIP (0x1<<2)
39 #define PV_TRISTRIP_MASK (0x3<<0)
40 #define PV_TRISTRIP_PV0 (0x0<<0)
41 #define PV_TRISTRIP_PV1 (0x1<<0)
42 #define PV_TRISTRIP_PV2 (0x2<<0)
43
44
45 /* GFXRENDERSTATE_SCISSOR_ENABLE, p146
46 *
47 * Format:
48 * 0: GFX_OP_SCISSOR | SC_*
49 */
50 #define GFX_OP_SCISSOR ((0x3<<29)|(0x1c<<24)|(0x10<<19))
51 #define SC_UPDATE_SCISSOR (0x1<<1)
52 #define SC_ENABLE_MASK (0x1<<0)
53 #define SC_ENABLE (0x1<<0)
54
55 /* GFXRENDERSTATE_SCISSOR_INFO, p147
56 *
57 * Format:
58 * 0: GFX_OP_SCISSOR_INFO
59 * 1: SCI_MIN_*
60 * 2: SCI_MAX_*
61 */
62 #define GFX_OP_SCISSOR_INFO ((0x3<<29)|(0x1d<<24)|(0x81<<16)|(0x1))
63 #define SCI_YMIN_MASK (0xffff<<16)
64 #define SCI_XMIN_MASK (0xffff<<0)
65 #define SCI_YMAX_MASK (0xffff<<16)
66 #define SCI_XMAX_MASK (0xffff<<0)
67
68 /* GFXRENDERSTATE_DRAWING_RECT_INFO, p144
69 *
70 * Format:
71 * 0: GFX_OP_DRAWRECT_INFO
72 * 1: DR1_*
73 * 2: DR2_*
74 * 3: DR3_*
75 * 4: DR4_*
76 */
77 #define GFX_OP_DRAWRECT_INFO ((0x3<<29)|(0x1d<<24)|(0x80<<16)|(0x3))
78 #define DR1_RECT_CLIP_ENABLE (0x0<<31)
79 #define DR1_RECT_CLIP_DISABLE (0x1<<31)
80 #define DR1_X_DITHER_BIAS_MASK (0x3<<26)
81 #define DR1_X_DITHER_BIAS_SHIFT 26
82 #define DR1_Y_DITHER_BIAS_MASK (0x3<<24)
83 #define DR1_Y_DITHER_BIAS_SHIFT 24
84 #define DR2_YMIN_MASK (0xffff<<16)
85 #define DR2_XMIN_MASK (0xffff<<0)
86 #define DR3_YMAX_MASK (0xffff<<16)
87 #define DR3_XMAX_MASK (0xffff<<0)
88 #define DR4_YORG_MASK (0x3ff<<16)
89 #define DR4_XORG_MASK (0x7ff<<0)
90
91
92 /* GFXRENDERSTATE_LINEWIDTH_CULL_SHADE_MODE, p140
93 *
94 * Format:
95 * 0: GFX_OP_LINEWIDTH_CULL_SHADE_MODE | LCS_*
96 */
97 #define GFX_OP_LINEWIDTH_CULL_SHADE_MODE ((0x3<<29)|(0x2<<24))
98 #define LCS_UPDATE_ZMODE (0x1<<20)
99 #define LCS_Z_MASK (0xf<<16)
100 #define LCS_Z_NEVER (0x1<<16)
101 #define LCS_Z_LESS (0x2<<16)
102 #define LCS_Z_EQUAL (0x3<<16)
103 #define LCS_Z_LEQUAL (0x4<<16)
104 #define LCS_Z_GREATER (0x5<<16)
105 #define LCS_Z_NOTEQUAL (0x6<<16)
106 #define LCS_Z_GEQUAL (0x7<<16)
107 #define LCS_Z_ALWAYS (0x8<<16)
108 #define LCS_UPDATE_LINEWIDTH (0x1<<15)
109 #define LCS_LINEWIDTH_MASK (0x7<<12)
110 #define LCS_LINEWIDTH_SHIFT 12
111 #define LCS_LINEWIDTH_0_5 (0x1<<12)
112 #define LCS_LINEWIDTH_1_0 (0x2<<12)
113 #define LCS_LINEWIDTH_2_0 (0x4<<12)
114 #define LCS_LINEWIDTH_3_0 (0x6<<12)
115 #define LCS_UPDATE_ALPHA_INTERP (0x1<<11)
116 #define LCS_ALPHA_FLAT (0x1<<10)
117 #define LCS_ALPHA_INTERP (0x0<<10)
118 #define LCS_UPDATE_FOG_INTERP (0x1<<9)
119 #define LCS_FOG_INTERP (0x0<<8)
120 #define LCS_FOG_FLAT (0x1<<8)
121 #define LCS_UPDATE_SPEC_INTERP (0x1<<7)
122 #define LCS_SPEC_INTERP (0x0<<6)
123 #define LCS_SPEC_FLAT (0x1<<6)
124 #define LCS_UPDATE_RGB_INTERP (0x1<<5)
125 #define LCS_RGB_INTERP (0x0<<4)
126 #define LCS_RGB_FLAT (0x1<<4)
127 #define LCS_UPDATE_CULL_MODE (0x1<<3)
128 #define LCS_CULL_MASK (0x7<<0)
129 #define LCS_CULL_DISABLE (0x1<<0)
130 #define LCS_CULL_CW (0x2<<0)
131 #define LCS_CULL_CCW (0x3<<0)
132 #define LCS_CULL_BOTH (0x4<<0)
133
134 #define LCS_INTERP_FLAT (LCS_ALPHA_FLAT|LCS_RGB_FLAT|LCS_SPEC_FLAT)
135 #define LCS_UPDATE_INTERP (LCS_UPDATE_ALPHA_INTERP| \
136 LCS_UPDATE_RGB_INTERP| \
137 LCS_UPDATE_SPEC_INTERP)
138
139
140 /* GFXRENDERSTATE_BOOLEAN_ENA_1, p142
141 *
142 */
143 #define GFX_OP_BOOL_1 ((0x3<<29)|(0x3<<24))
144 #define B1_UPDATE_SPEC_SETUP_ENABLE (1<<19)
145 #define B1_SPEC_SETUP_ENABLE (1<<18)
146 #define B1_UPDATE_ALPHA_SETUP_ENABLE (1<<17)
147 #define B1_ALPHA_SETUP_ENABLE (1<<16)
148 #define B1_UPDATE_CI_KEY_ENABLE (1<<15)
149 #define B1_CI_KEY_ENABLE (1<<14)
150 #define B1_UPDATE_CHROMAKEY_ENABLE (1<<13)
151 #define B1_CHROMAKEY_ENABLE (1<<12)
152 #define B1_UPDATE_Z_BIAS_ENABLE (1<<11)
153 #define B1_Z_BIAS_ENABLE (1<<10)
154 #define B1_UPDATE_SPEC_ENABLE (1<<9)
155 #define B1_SPEC_ENABLE (1<<8)
156 #define B1_UPDATE_FOG_ENABLE (1<<7)
157 #define B1_FOG_ENABLE (1<<6)
158 #define B1_UPDATE_ALPHA_TEST_ENABLE (1<<5)
159 #define B1_ALPHA_TEST_ENABLE (1<<4)
160 #define B1_UPDATE_BLEND_ENABLE (1<<3)
161 #define B1_BLEND_ENABLE (1<<2)
162 #define B1_UPDATE_Z_TEST_ENABLE (1<<1)
163 #define B1_Z_TEST_ENABLE (1<<0)
164
165 /* GFXRENDERSTATE_BOOLEAN_ENA_2, p143
166 *
167 */
168 #define GFX_OP_BOOL_2 ((0x3<<29)|(0x4<<24))
169 #define B2_UPDATE_MAP_CACHE_ENABLE (1<<17)
170 #define B2_MAP_CACHE_ENABLE (1<<16)
171 #define B2_UPDATE_ALPHA_DITHER_ENABLE (1<<15)
172 #define B2_ALPHA_DITHER_ENABLE (1<<14)
173 #define B2_UPDATE_FOG_DITHER_ENABLE (1<<13)
174 #define B2_FOG_DITHER_ENABLE (1<<12)
175 #define B2_UPDATE_SPEC_DITHER_ENABLE (1<<11)
176 #define B2_SPEC_DITHER_ENABLE (1<<10)
177 #define B2_UPDATE_RGB_DITHER_ENABLE (1<<9)
178 #define B2_RGB_DITHER_ENABLE (1<<8)
179 #define B2_UPDATE_FB_WRITE_ENABLE (1<<3)
180 #define B2_FB_WRITE_ENABLE (1<<2)
181 #define B2_UPDATE_ZB_WRITE_ENABLE (1<<1)
182 #define B2_ZB_WRITE_ENABLE (1<<0)
183
184
185 /* GFXRENDERSTATE_FOG_COLOR, p144
186 */
187 #define GFX_OP_FOG_COLOR ((0x3<<29)|(0x15<<24))
188 #define FOG_RED_SHIFT 16
189 #define FOG_GREEN_SHIFT 8
190 #define FOG_BLUE_SHIFT 0
191 #define FOG_RESERVED_MASK ((0x7<<16)|(0x3<<8)|(0x3))
192
193
194 /* GFXRENDERSTATE_Z_BIAS_ALPHA_FUNC_REF, p139
195 */
196 #define GFX_OP_ZBIAS_ALPHAFUNC ((0x3<<29)|(0x14<<24))
197 #define ZA_UPDATE_ZBIAS (1<<22)
198 #define ZA_ZBIAS_SHIFT 14
199 #define ZA_ZBIAS_MASK (0xff<<14)
200 #define ZA_UPDATE_ALPHAFUNC (1<<13)
201 #define ZA_ALPHA_MASK (0xf<<9)
202 #define ZA_ALPHA_NEVER (1<<9)
203 #define ZA_ALPHA_LESS (2<<9)
204 #define ZA_ALPHA_EQUAL (3<<9)
205 #define ZA_ALPHA_LEQUAL (4<<9)
206 #define ZA_ALPHA_GREATER (5<<9)
207 #define ZA_ALPHA_NOTEQUAL (6<<9)
208 #define ZA_ALPHA_GEQUAL (7<<9)
209 #define ZA_ALPHA_ALWAYS (8<<9)
210 #define ZA_UPDATE_ALPHAREF (1<<8)
211 #define ZA_ALPHAREF_MASK (0xff<<0)
212 #define ZA_ALPHAREF_SHIFT 0
213 #define ZA_ALPHAREF_RESERVED (0x7<<0)
214
215
216 /* GFXRENDERSTATE_SRC_DST_BLEND_MONO, p136
217 */
218 #define GFX_OP_SRC_DEST_MONO ((0x3<<29)|(0x8<<24))
219 #define SDM_UPDATE_MONO_ENABLE (1<<13)
220 #define SDM_MONO_ENABLE (1<<12)
221 #define SDM_UPDATE_SRC_BLEND (1<<11)
222 #define SDM_SRC_MASK (0xf<<6)
223 #define SDM_SRC_ZERO (0x1<<6)
224 #define SDM_SRC_ONE (0x2<<6)
225 #define SDM_SRC_SRC_COLOR (0x3<<6)
226 #define SDM_SRC_INV_SRC_COLOR (0x4<<6)
227 #define SDM_SRC_SRC_ALPHA (0x5<<6)
228 #define SDM_SRC_INV_SRC_ALPHA (0x6<<6)
229 #define SDM_SRC_DST_COLOR (0x9<<6)
230 #define SDM_SRC_INV_DST_COLOR (0xa<<6)
231 #define SDM_SRC_BOTH_SRC_ALPHA (0xc<<6)
232 #define SDM_SRC_BOTH_INV_SRC_ALPHA (0xd<<6)
233 #define SDM_UPDATE_DST_BLEND (1<<5)
234 #define SDM_DST_MASK (0xf<<0)
235 #define SDM_DST_ZERO (0x1<<0)
236 #define SDM_DST_ONE (0x2<<0)
237 #define SDM_DST_SRC_COLOR (0x3<<0)
238 #define SDM_DST_INV_SRC_COLOR (0x4<<0)
239 #define SDM_DST_SRC_ALPHA (0x5<<0)
240 #define SDM_DST_INV_SRC_ALPHA (0x6<<0)
241 #define SDM_DST_DST_COLOR (0x9<<0)
242 #define SDM_DST_INV_DST_COLOR (0xa<<0)
243 #define SDM_DST_BOTH_SRC_ALPHA (0xc<<0)
244 #define SDM_DST_BOTH_INV_SRC_ALPHA (0xd<<0)
245
246
247 /* GFXRENDERSTATE_COLOR_FACTOR, p134
248 *
249 * Format:
250 * 0: GFX_OP_COLOR_FACTOR
251 * 1: ARGB8888 color factor
252 */
253 #define GFX_OP_COLOR_FACTOR ((0x3<<29)|(0x1d<<24)|(0x1<<16)|0x0)
254
255 /* GFXRENDERSTATE_MAP_ALPHA_BLEND_STAGES, p132
256 */
257 #define GFX_OP_MAP_ALPHA_STAGES ((0x3<<29)|(0x1<<24))
258 #define MA_STAGE_SHIFT 20
259 #define MA_STAGE_0 (0<<20)
260 #define MA_STAGE_1 (1<<20)
261 #define MA_STAGE_2 (2<<20)
262 #define MA_UPDATE_ARG1 (1<<18)
263 #define MA_ARG1_MASK ((0x7<<15)|(0x1<<13))
264 #define MA_ARG1_ALPHA_FACTOR (0x1<<15)
265 #define MA_ARG1_ITERATED_ALPHA (0x3<<15)
266 #define MA_ARG1_CURRENT_ALPHA (0x5<<15)
267 #define MA_ARG1_TEX0_ALPHA (0x6<<15)
268 #define MA_ARG1_TEX1_ALPHA (0x7<<15)
269 #define MA_ARG1_INVERT (0x1<<13)
270 #define MA_ARG1_DONT_INVERT (0x0<<13)
271 #define MA_UPDATE_ARG2 (1<<12)
272 #define MA_ARG2_MASK ((0x7<<8)|(0x1<<6))
273 #define MA_ARG2_ALPHA_FACTOR (0x1<<8)
274 #define MA_ARG2_ITERATED_ALPHA (0x3<<8)
275 #define MA_ARG2_CURRENT_ALPHA (0x5<<8)
276 #define MA_ARG2_TEX0_ALPHA (0x6<<8)
277 #define MA_ARG2_TEX1_ALPHA (0x7<<8)
278 #define MA_ARG2_INVERT (0x1<<6)
279 #define MA_ARG2_DONT_INVERT (0x0<<6)
280 #define MA_UPDATE_OP (1<<5)
281 #define MA_OP_MASK (0xf)
282 #define MA_OP_ARG1 (0x1)
283 #define MA_OP_ARG2 (0x2)
284 #define MA_OP_MODULATE (0x3)
285 #define MA_OP_MODULATE_X2 (0x4)
286 #define MA_OP_MODULATE_X4 (0x5)
287 #define MA_OP_ADD (0x6)
288 #define MA_OP_ADD_SIGNED (0x7)
289 #define MA_OP_LIN_BLEND_ITER_ALPHA (0x8)
290 #define MA_OP_LIN_BLEND_ALPHA_FACTOR (0xa)
291 #define MA_OP_LIN_BLEND_TEX0_ALPHA (0x10)
292 #define MA_OP_LIN_BLEND_TEX1_ALPHA (0x11)
293
294
295 /* GFXRENDERSTATE_MAP_COLOR_BLEND_STAGES, p129
296 */
297 #define GFX_OP_MAP_COLOR_STAGES ((0x3<<29)|(0x0<<24))
298 #define MC_STAGE_SHIFT 20
299 #define MC_STAGE_0 (0<<20)
300 #define MC_STAGE_1 (1<<20)
301 #define MC_STAGE_2 (2<<20)
302 #define MC_UPDATE_DEST (1<<19)
303 #define MC_DEST_MASK (1<<18)
304 #define MC_DEST_CURRENT (0<<18)
305 #define MC_DEST_ACCUMULATOR (1<<18)
306 #define MC_UPDATE_ARG1 (1<<17)
307 #define MC_ARG1_MASK ((0x7<<14)|(0x1<<13)|(0x1<<12))
308 #define MC_ARG1_ONE (0x0<<14)
309 #define MC_ARG1_COLOR_FACTOR (0x1<<14)
310 #define MC_ARG1_ACCUMULATOR (0x2<<14)
311 #define MC_ARG1_ITERATED_COLOR (0x3<<14)
312 #define MC_ARG1_SPECULAR_COLOR (0x4<<14)
313 #define MC_ARG1_CURRENT_COLOR (0x5<<14)
314 #define MC_ARG1_TEX0_COLOR (0x6<<14)
315 #define MC_ARG1_TEX1_COLOR (0x7<<14)
316 #define MC_ARG1_DONT_REPLICATE_ALPHA (0x0<<13)
317 #define MC_ARG1_REPLICATE_ALPHA (0x1<<13)
318 #define MC_ARG1_DONT_INVERT (0x0<<12)
319 #define MC_ARG1_INVERT (0x1<<12)
320 #define MC_UPDATE_ARG2 (1<<11)
321 #define MC_ARG2_MASK ((0x7<<8)|(0x1<<7)|(0x1<<6))
322 #define MC_ARG2_ONE (0x0<<8)
323 #define MC_ARG2_COLOR_FACTOR (0x1<<8)
324 #define MC_ARG2_ACCUMULATOR (0x2<<8)
325 #define MC_ARG2_ITERATED_COLOR (0x3<<8)
326 #define MC_ARG2_SPECULAR_COLOR (0x4<<8)
327 #define MC_ARG2_CURRENT_COLOR (0x5<<8)
328 #define MC_ARG2_TEX0_COLOR (0x6<<8)
329 #define MC_ARG2_TEX1_COLOR (0x7<<8)
330 #define MC_ARG2_DONT_REPLICATE_ALPHA (0x0<<7)
331 #define MC_ARG2_REPLICATE_ALPHA (0x1<<7)
332 #define MC_ARG2_DONT_INVERT (0x0<<6)
333 #define MC_ARG2_INVERT (0x1<<6)
334 #define MC_UPDATE_OP (1<<5)
335 #define MC_OP_MASK (0xf)
336 #define MC_OP_DISABLE (0x0)
337 #define MC_OP_ARG1 (0x1)
338 #define MC_OP_ARG2 (0x2)
339 #define MC_OP_MODULATE (0x3)
340 #define MC_OP_MODULATE_X2 (0x4)
341 #define MC_OP_MODULATE_X4 (0x5)
342 #define MC_OP_ADD (0x6)
343 #define MC_OP_ADD_SIGNED (0x7)
344 #define MC_OP_LIN_BLEND_ITER_ALPHA (0x8)
345 #define MC_OP_LIN_BLEND_ALPHA_FACTOR (0xa)
346 #define MC_OP_LIN_BLEND_TEX0_ALPHA (0x10)
347 #define MC_OP_LIN_BLEND_TEX1_ALPHA (0x11)
348 #define MC_OP_LIN_BLEND_TEX0_COLOR (0x12)
349 #define MC_OP_LIN_BLEND_TEX1_COLOR (0x13)
350 #define MC_OP_SUBTRACT (0x14)
351
352 /* GFXRENDERSTATE_MAP_PALETTE_LOAD, p128
353 *
354 * Format:
355 * 0: GFX_OP_MAP_PALETTE_LOAD
356 * 1: 16bpp color[0]
357 * ...
358 * 256: 16bpp color[255]
359 */
360 #define GFX_OP_MAP_PALETTE_LOAD ((0x3<<29)|(0x1d<<24)|(0x82<<16)|0xff)
361
362 /* GFXRENDERSTATE_MAP_LOD_CONTROL, p127
363 */
364 #define GFX_OP_MAP_LOD_CTL ((0x3<<29)|(0x1c<<24)|(0x4<<19))
365 #define MLC_MAP_ID_SHIFT 16
366 #define MLC_MAP_0 (0<<16)
367 #define MLC_MAP_1 (1<<16)
368 #define MLC_UPDATE_DITHER_WEIGHT (1<<10)
369 #define MLC_DITHER_WEIGHT_MASK (0x3<<8)
370 #define MLC_DITHER_WEIGHT_FULL (0x0<<8)
371 #define MLC_DITHER_WEIGHT_50 (0x1<<8)
372 #define MLC_DITHER_WEIGHT_25 (0x2<<8)
373 #define MLC_DITHER_WEIGHT_12 (0x3<<8)
374 #define MLC_UPDATE_LOD_BIAS (1<<7)
375 #define MLC_LOD_BIAS_MASK ((1<<7)-1)
376
377 /* GFXRENDERSTATE_MAP_LOD_LIMITS, p126
378 */
379 #define GFX_OP_MAP_LOD_LIMITS ((0x3<<29)|(0x1c<<24)|(0x3<<19))
380 #define MLL_MAP_ID_SHIFT 16
381 #define MLL_MAP_0 (0<<16)
382 #define MLL_MAP_1 (1<<16)
383 #define MLL_UPDATE_MAX_MIP (1<<13)
384 #define MLL_MAX_MIP_SHIFT 5
385 #define MLL_MAX_MIP_MASK (0xff<<5)
386 #define MLL_MAX_MIP_ONE (0x10<<5)
387 #define MLL_UPDATE_MIN_MIP (1<<4)
388 #define MLL_MIN_MIP_SHIFT 0
389 #define MLL_MIN_MIP_MASK (0xf<<0)
390
391 /* GFXRENDERSTATE_MAP_FILTER, p124
392 */
393 #define GFX_OP_MAP_FILTER ((0x3<<29)|(0x1c<<24)|(0x2<<19))
394 #define MF_MAP_ID_SHIFT 16
395 #define MF_MAP_0 (0<<16)
396 #define MF_MAP_1 (1<<16)
397 #define MF_UPDATE_ANISOTROPIC (1<<12)
398 #define MF_ANISOTROPIC_MASK (1<<10)
399 #define MF_ANISOTROPIC_ENABLE (1<<10)
400 #define MF_UPDATE_MIP_FILTER (1<<9)
401 #define MF_MIP_MASK (0x3<<6)
402 #define MF_MIP_NONE (0x0<<6)
403 #define MF_MIP_NEAREST (0x1<<6)
404 #define MF_MIP_DITHER (0x2<<6)
405 #define MF_MIP_LINEAR (0x3<<6)
406 #define MF_UPDATE_MAG_FILTER (1<<5)
407 #define MF_MAG_MASK (1<<3)
408 #define MF_MAG_LINEAR (1<<3)
409 #define MF_MAG_NEAREST (0<<3)
410 #define MF_UPDATE_MIN_FILTER (1<<2)
411 #define MF_MIN_MASK (1<<0)
412 #define MF_MIN_LINEAR (1<<0)
413 #define MF_MIN_NEAREST (0<<0)
414
415 /* GFXRENDERSTATE_MAP_INFO, p118
416 */
417 #define GFX_OP_MAP_INFO ((0x3<<29)|(0x1d<<24)|0x2)
418 #define MI1_MAP_ID_SHIFT 28
419 #define MI1_MAP_0 (0<<28)
420 #define MI1_MAP_1 (1<<28)
421 #define MI1_FMT_MASK (0x7<<24)
422 #define MI1_FMT_8CI (0x0<<24)
423 #define MI1_FMT_8BPP (0x1<<24)
424 #define MI1_FMT_16BPP (0x2<<24)
425 #define MI1_FMT_422 (0x5<<24)
426 #define MI1_PF_MASK (0x3<<21)
427 #define MI1_PF_8CI_RGB565 (0x0<<21)
428 #define MI1_PF_8CI_ARGB1555 (0x1<<21)
429 #define MI1_PF_8CI_ARGB4444 (0x2<<21)
430 #define MI1_PF_8CI_AY88 (0x3<<21)
431 #define MI1_PF_16BPP_RGB565 (0x0<<21)
432 #define MI1_PF_16BPP_ARGB1555 (0x1<<21)
433 #define MI1_PF_16BPP_ARGB4444 (0x2<<21)
434 #define MI1_PF_16BPP_AY88 (0x3<<21)
435 #define MI1_PF_422_YCRCB_SWAP_Y (0x0<<21)
436 #define MI1_PF_422_YCRCB (0x1<<21)
437 #define MI1_PF_422_YCRCB_SWAP_UV (0x2<<21)
438 #define MI1_PF_422_YCRCB_SWAP_YUV (0x3<<21)
439 #define MI1_OUTPUT_CHANNEL_MASK (0x3<<19)
440 #define MI1_COLOR_CONV_ENABLE (1<<18)
441 #define MI1_VERT_STRIDE_MASK (1<<17)
442 #define MI1_VERT_STRIDE_1 (1<<17)
443 #define MI1_VERT_OFFSET_MASK (1<<16)
444 #define MI1_VERT_OFFSET_1 (1<<16)
445 #define MI1_ENABLE_FENCE_REGS (1<<10)
446 #define MI1_TILED_SURFACE (1<<9)
447 #define MI1_TILE_WALK_X (0<<8)
448 #define MI1_TILE_WALK_Y (1<<8)
449 #define MI1_PITCH_MASK (0xf<<0)
450 #define MI2_DIMENSIONS_ARE_LOG2 (1<<31)
451 #define MI2_DIMENSIONS_ARE_EXACT (0<<31)
452 #define MI2_HEIGHT_SHIFT 16
453 #define MI2_HEIGHT_MASK (0x1ff<<16)
454 #define MI2_WIDTH_SHIFT 0
455 #define MI2_WIDTH_MASK (0x1ff<<0)
456 #define MI3_BASE_ADDR_MASK (~0xf)
457
458 /* GFXRENDERSTATE_MAP_COORD_SETS, p116
459 */
460 #define GFX_OP_MAP_COORD_SETS ((0x3<<29)|(0x1c<<24)|(0x1<<19))
461 #define MCS_COORD_ID_SHIFT 16
462 #define MCS_COORD_0 (0<<16)
463 #define MCS_COORD_1 (1<<16)
464 #define MCS_UPDATE_NORMALIZED (1<<15)
465 #define MCS_NORMALIZED_COORDS_MASK (1<<14)
466 #define MCS_NORMALIZED_COORDS (1<<14)
467 #define MCS_UPDATE_V_STATE (1<<7)
468 #define MCS_V_STATE_MASK (0x3<<4)
469 #define MCS_V_WRAP (0x0<<4)
470 #define MCS_V_MIRROR (0x1<<4)
471 #define MCS_V_CLAMP (0x2<<4)
472 #define MCS_V_WRAP_SHORTEST (0x3<<4)
473 #define MCS_UPDATE_U_STATE (1<<3)
474 #define MCS_U_STATE_MASK (0x3<<0)
475 #define MCS_U_WRAP (0x0<<0)
476 #define MCS_U_MIRROR (0x1<<0)
477 #define MCS_U_CLAMP (0x2<<0)
478 #define MCS_U_WRAP_SHORTEST (0x3<<0)
479
480 /* GFXRENDERSTATE_MAP_TEXELS, p115
481 */
482 #define GFX_OP_MAP_TEXELS ((0x3<<29)|(0x1c<<24)|(0x0<<19))
483 #define MT_UPDATE_TEXEL1_STATE (1<<15)
484 #define MT_TEXEL1_DISABLE (0<<14)
485 #define MT_TEXEL1_ENABLE (1<<14)
486 #define MT_TEXEL1_COORD0 (0<<11)
487 #define MT_TEXEL1_COORD1 (1<<11)
488 #define MT_TEXEL1_MAP0 (0<<8)
489 #define MT_TEXEL1_MAP1 (1<<8)
490 #define MT_UPDATE_TEXEL0_STATE (1<<7)
491 #define MT_TEXEL0_DISABLE (0<<6)
492 #define MT_TEXEL0_ENABLE (1<<6)
493 #define MT_TEXEL0_COORD0 (0<<3)
494 #define MT_TEXEL0_COORD1 (1<<3)
495 #define MT_TEXEL0_MAP0 (0<<0)
496 #define MT_TEXEL0_MAP1 (1<<0)
497
498 /* GFXRENDERSTATE_VERTEX_FORMAT, p110
499 */
500 #define GFX_OP_VERTEX_FMT ((0x3<<29)|(0x5<<24))
501 #define VF_TEXCOORD_COUNT_SHIFT 8
502 #define VF_TEXCOORD_COUNT_0 (0<<8)
503 #define VF_TEXCOORD_COUNT_1 (1<<8)
504 #define VF_TEXCOORD_COUNT_2 (2<<8)
505 #define VF_SPEC_FOG_ENABLE (1<<7)
506 #define VF_RGBA_ENABLE (1<<6)
507 #define VF_Z_OFFSET_ENABLE (1<<5)
508 #define VF_XYZ (0x1<<1)
509 #define VF_XYZW (0x2<<1)
510 #define VF_XY (0x3<<1)
511 #define VF_XYW (0x4<<1)
512
513
514 #define VERT_X_MASK (~0xf)
515 #define VERT_X_EDGE_V2V0 (1<<2)
516 #define VERT_X_EDGE_V1V2 (1<<1)
517 #define VERT_X_EDGE_V0V1 (1<<0)
518
519 /* Not enabled fields should not be sent to hardware:
520 */
521 typedef struct {
522 union {
523 float x;
524 unsigned int edge_flags;
525 } x;
526 float y;
527 float z;
528 float z_bias;
529 float oow;
530 unsigned int argb;
531 unsigned int fog_spec_rgb; /* spec g and r ignored. */
532 float tu0;
533 float tv0;
534 float tu1;
535 float tv1;
536 } i810_full_vertex;
537
538
539
540 /* GFXCMDPARSER_BATCH_BUFFER, p105
541 *
542 * Not clear whether start address must be shifted or not. Not clear
543 * whether address is physical system memory, or subject to GTT
544 * translation. Because the address appears to be 32 bits long,
545 * perhaps it refers to physical system memory...
546 */
547 #define CMD_OP_BATCH_BUFFER ((0x0<<29)|(0x30<<23)|0x1)
548 #define BB1_START_ADDR_MASK (~0x7)
549 #define BB1_PROTECTED (1<<0)
550 #define BB1_UNPROTECTED (0<<0)
551 #define BB2_END_ADDR_MASK (~0x7)
552
553 /* Hardware seems to barf on buffers larger than this (in strange ways)...
554 */
555 #define MAX_BATCH (512*1024)
556
557
558 /* GFXCMDPARSER_Z_BUFFER_INFO, p98
559 *
560 * Base address is in GTT space, and must be 4K aligned
561 */
562 #define CMD_OP_Z_BUFFER_INFO ((0x0<<29)|(0x16<<23))
563 #define ZB_BASE_ADDR_SHIFT 0
564 #define ZB_BASE_ADDR_MASK (~((1<<12)-1))
565 #define ZB_PITCH_512B (0x0<<0)
566 #define ZB_PITCH_1K (0x1<<0)
567 #define ZB_PITCH_2K (0x2<<0)
568 #define ZB_PITCH_4K (0x3<<0)
569
570 /* GFXCMDPARSER_FRONT_BUFFER_INFO, p97
571 *
572 * Format:
573 * 0: CMD_OP_FRONT_BUFFER_INFO | (pitch<<FB0_PITCH_SHIFT) | FB0_*
574 * 1: FB1_*
575 */
576 #define CMD_OP_FRONT_BUFFER_INFO ((0x0<<29)|(0x14<<23))
577 #define FB0_PITCH_SHIFT 8
578 #define FB0_FLIP_SYNC (0<<6)
579 #define FB0_FLIP_ASYNC (1<<6)
580 #define FB0_BASE_ADDR_SHIFT 0
581 #define FB0_BASE_ADDR_MASK 0x03FFFFF8
582
583 /* GFXCMDPARSER_DEST_BUFFER_INFO, p96
584 *
585 * Format:
586 */
587 #define CMD_OP_DESTBUFFER_INFO ((0x0<<29)|(0x15<<23))
588 #define DB1_BASE_ADDR_SHIFT 0
589 #define DB1_BASE_ADDR_MASK 0x03FFF000
590 #define DB1_PITCH_512B (0x0<<0)
591 #define DB1_PITCH_1K (0x1<<0)
592 #define DB1_PITCH_2K (0x2<<0)
593 #define DB1_PITCH_4K (0x4<<0)
594
595
596 /* GFXRENDERSTATE_DEST_BUFFER_VARIABLES, p152
597 *
598 * Format:
599 * 0: GFX_OP_DESTBUFFER_VARS
600 * 1: DEST_*
601 */
602 #define GFX_OP_DESTBUFFER_VARS ((0x3<<29)|(0x1d<<24)|(0x85<<16)|0x0)
603 #define DV_HORG_BIAS_MASK (0xf<<20)
604 #define DV_HORG_BIAS_OGL (0x0<<20)
605 #define DV_VORG_BIAS_MASK (0xf<<16)
606 #define DV_VORG_BIAS_OGL (0x0<<16)
607 #define DV_PF_MASK (0x7<<8)
608 #define DV_PF_INDEX (0x0<<8)
609 #define DV_PF_555 (0x1<<8)
610 #define DV_PF_565 (0x2<<8)
611
612 #define GFX_OP_ANTIALIAS ((0x3<<29)|(0x6<<24))
613 #define AA_UPDATE_EDGEFLAG (1<<13)
614 #define AA_ENABLE_EDGEFLAG (1<<12)
615 #define AA_UPDATE_POLYWIDTH (1<<11)
616 #define AA_POLYWIDTH_05 (1<<9)
617 #define AA_POLYWIDTH_10 (2<<9)
618 #define AA_POLYWIDTH_20 (3<<9)
619 #define AA_POLYWIDTH_40 (4<<9)
620 #define AA_UPDATE_LINEWIDTH (1<<8)
621 #define AA_LINEWIDTH_05 (1<<6)
622 #define AA_LINEWIDTH_10 (2<<6)
623 #define AA_LINEWIDTH_20 (3<<6)
624 #define AA_LINEWIDTH_40 (4<<6)
625 #define AA_UPDATE_BB_EXPANSION (1<<5)
626 #define AA_BB_EXPANSION_SHIFT 2
627 #define AA_UPDATE_AA_ENABLE (1<<1)
628 #define AA_ENABLE (1<<0)
629
630 #define GFX_OP_STIPPLE ((0x3<<29)|(0x1d<<24)|(0x83<<16))
631 #define ST1_ENABLE (1<<16)
632 #define ST1_MASK (0xffff)
633
634 #define I810_SET_FIELD( var, mask, value ) (var &= ~(mask), var |= value)
635
636 #endif