Minor r200 vertex program cleanups. Remove disabled leftovers from r300 vertex progra...
[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
263 #define MA_ARG_ONE (0x0<<2)
264 #define MA_ARG_ALPHA_FACTOR (0x1<<2)
265 #define MA_ARG_ITERATED_ALPHA (0x3<<2)
266 #define MA_ARG_CURRENT_ALPHA (0x5<<2)
267 #define MA_ARG_TEX0_ALPHA (0x6<<2)
268 #define MA_ARG_TEX1_ALPHA (0x7<<2)
269 #define MA_ARG_INVERT (0x1)
270 #define MA_ARG_DONT_INVERT (0x0)
271
272 #define MA_UPDATE_ARG1 (1<<18)
273 #define MA_ARG1_SHIFT 13
274 #define MA_ARG1_MASK (0x1d << MA_ARG1_SHIFT)
275
276 #define MA_UPDATE_ARG2 (1<<12)
277 #define MA_ARG2_SHIFT 6
278 #define MA_ARG2_MASK (0x1d << MA_ARG2_SHIFT)
279
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 #define MA_OP_SUBTRACT (0x14)
294
295
296 /* GFXRENDERSTATE_MAP_COLOR_BLEND_STAGES, p129
297 */
298 #define GFX_OP_MAP_COLOR_STAGES ((0x3<<29)|(0x0<<24))
299 #define MC_STAGE_SHIFT 20
300 #define MC_STAGE_0 (0<<20)
301 #define MC_STAGE_1 (1<<20)
302 #define MC_STAGE_2 (2<<20)
303 #define MC_UPDATE_DEST (1<<19)
304 #define MC_DEST_MASK (1<<18)
305 #define MC_DEST_CURRENT (0<<18)
306 #define MC_DEST_ACCUMULATOR (1<<18)
307
308 #define MC_ARG_ONE (0x0<<2)
309 #define MC_ARG_COLOR_FACTOR (0x1<<2)
310 #define MC_ARG_ACCUMULATOR (0x2<<2)
311 #define MC_ARG_ITERATED_COLOR (0x3<<2)
312 #define MC_ARG_SPECULAR_COLOR (0x4<<2)
313 #define MC_ARG_CURRENT_COLOR (0x5<<2)
314 #define MC_ARG_TEX0_COLOR (0x6<<2)
315 #define MC_ARG_TEX1_COLOR (0x7<<2)
316 #define MC_ARG_DONT_REPLICATE_ALPHA (0x0<<1)
317 #define MC_ARG_REPLICATE_ALPHA (0x1<<1)
318 #define MC_ARG_DONT_INVERT (0x0)
319 #define MC_ARG_INVERT (0x1)
320
321 #define MC_UPDATE_ARG1 (1<<17)
322 #define MC_ARG1_SHIFT 12
323 #define MC_ARG1_MASK (0x1f << MC_ARG1_SHIFT)
324
325 #define MC_UPDATE_ARG2 (1<<11)
326 #define MC_ARG2_SHIFT 6
327 #define MC_ARG2_MASK (0x1f << MC_ARG2_SHIFT)
328
329 #define MC_UPDATE_OP (1<<5)
330 #define MC_OP_MASK (0xf)
331 #define MC_OP_DISABLE (0x0)
332 #define MC_OP_ARG1 (0x1)
333 #define MC_OP_ARG2 (0x2)
334 #define MC_OP_MODULATE (0x3)
335 #define MC_OP_MODULATE_X2 (0x4)
336 #define MC_OP_MODULATE_X4 (0x5)
337 #define MC_OP_ADD (0x6)
338 #define MC_OP_ADD_SIGNED (0x7)
339 #define MC_OP_LIN_BLEND_ITER_ALPHA (0x8)
340 #define MC_OP_LIN_BLEND_ALPHA_FACTOR (0xa)
341 #define MC_OP_LIN_BLEND_TEX0_ALPHA (0x10)
342 #define MC_OP_LIN_BLEND_TEX1_ALPHA (0x11)
343 #define MC_OP_LIN_BLEND_TEX0_COLOR (0x12)
344 #define MC_OP_LIN_BLEND_TEX1_COLOR (0x13)
345 #define MC_OP_SUBTRACT (0x14)
346
347 /* GFXRENDERSTATE_MAP_PALETTE_LOAD, p128
348 *
349 * Format:
350 * 0: GFX_OP_MAP_PALETTE_LOAD
351 * 1: 16bpp color[0]
352 * ...
353 * 256: 16bpp color[255]
354 */
355 #define GFX_OP_MAP_PALETTE_LOAD ((0x3<<29)|(0x1d<<24)|(0x82<<16)|0xff)
356
357 /* GFXRENDERSTATE_MAP_LOD_CONTROL, p127
358 */
359 #define GFX_OP_MAP_LOD_CTL ((0x3<<29)|(0x1c<<24)|(0x4<<19))
360 #define MLC_MAP_ID_SHIFT 16
361 #define MLC_MAP_0 (0<<16)
362 #define MLC_MAP_1 (1<<16)
363 #define MLC_UPDATE_DITHER_WEIGHT (1<<10)
364 #define MLC_DITHER_WEIGHT_MASK (0x3<<8)
365 #define MLC_DITHER_WEIGHT_FULL (0x0<<8)
366 #define MLC_DITHER_WEIGHT_50 (0x1<<8)
367 #define MLC_DITHER_WEIGHT_25 (0x2<<8)
368 #define MLC_DITHER_WEIGHT_12 (0x3<<8)
369 #define MLC_UPDATE_LOD_BIAS (1<<7)
370 #define MLC_LOD_BIAS_MASK ((1<<7)-1)
371
372 /* GFXRENDERSTATE_MAP_LOD_LIMITS, p126
373 */
374 #define GFX_OP_MAP_LOD_LIMITS ((0x3<<29)|(0x1c<<24)|(0x3<<19))
375 #define MLL_MAP_ID_SHIFT 16
376 #define MLL_MAP_0 (0<<16)
377 #define MLL_MAP_1 (1<<16)
378 #define MLL_UPDATE_MAX_MIP (1<<13)
379 #define MLL_MAX_MIP_SHIFT 5
380 #define MLL_MAX_MIP_MASK (0xff<<5)
381 #define MLL_MAX_MIP_ONE (0x10<<5)
382 #define MLL_UPDATE_MIN_MIP (1<<4)
383 #define MLL_MIN_MIP_SHIFT 0
384 #define MLL_MIN_MIP_MASK (0xf<<0)
385
386 /* GFXRENDERSTATE_MAP_FILTER, p124
387 */
388 #define GFX_OP_MAP_FILTER ((0x3<<29)|(0x1c<<24)|(0x2<<19))
389 #define MF_MAP_ID_SHIFT 16
390 #define MF_MAP_0 (0<<16)
391 #define MF_MAP_1 (1<<16)
392 #define MF_UPDATE_ANISOTROPIC (1<<12)
393 #define MF_ANISOTROPIC_MASK (1<<10)
394 #define MF_ANISOTROPIC_ENABLE (1<<10)
395 #define MF_UPDATE_MIP_FILTER (1<<9)
396 #define MF_MIP_MASK (0x3<<6)
397 #define MF_MIP_NONE (0x0<<6)
398 #define MF_MIP_NEAREST (0x1<<6)
399 #define MF_MIP_DITHER (0x2<<6)
400 #define MF_MIP_LINEAR (0x3<<6)
401 #define MF_UPDATE_MAG_FILTER (1<<5)
402 #define MF_MAG_MASK (1<<3)
403 #define MF_MAG_LINEAR (1<<3)
404 #define MF_MAG_NEAREST (0<<3)
405 #define MF_UPDATE_MIN_FILTER (1<<2)
406 #define MF_MIN_MASK (1<<0)
407 #define MF_MIN_LINEAR (1<<0)
408 #define MF_MIN_NEAREST (0<<0)
409
410 /* GFXRENDERSTATE_MAP_INFO, p118
411 */
412 #define GFX_OP_MAP_INFO ((0x3<<29)|(0x1d<<24)|0x2)
413 #define MI1_MAP_ID_SHIFT 28
414 #define MI1_MAP_0 (0<<28)
415 #define MI1_MAP_1 (1<<28)
416 #define MI1_FMT_MASK (0x7<<24)
417 #define MI1_FMT_8CI (0x0<<24)
418 #define MI1_FMT_8BPP (0x1<<24)
419 #define MI1_FMT_16BPP (0x2<<24)
420 #define MI1_FMT_422 (0x5<<24)
421 #define MI1_PF_MASK (0x3<<21)
422 #define MI1_PF_8CI_RGB565 (0x0<<21)
423 #define MI1_PF_8CI_ARGB1555 (0x1<<21)
424 #define MI1_PF_8CI_ARGB4444 (0x2<<21)
425 #define MI1_PF_8CI_AY88 (0x3<<21)
426 #define MI1_PF_16BPP_RGB565 (0x0<<21)
427 #define MI1_PF_16BPP_ARGB1555 (0x1<<21)
428 #define MI1_PF_16BPP_ARGB4444 (0x2<<21)
429 #define MI1_PF_16BPP_AY88 (0x3<<21)
430 #define MI1_PF_422_YCRCB_SWAP_Y (0x0<<21)
431 #define MI1_PF_422_YCRCB (0x1<<21)
432 #define MI1_PF_422_YCRCB_SWAP_UV (0x2<<21)
433 #define MI1_PF_422_YCRCB_SWAP_YUV (0x3<<21)
434 #define MI1_OUTPUT_CHANNEL_MASK (0x3<<19)
435 #define MI1_COLOR_CONV_ENABLE (1<<18)
436 #define MI1_VERT_STRIDE_MASK (1<<17)
437 #define MI1_VERT_STRIDE_1 (1<<17)
438 #define MI1_VERT_OFFSET_MASK (1<<16)
439 #define MI1_VERT_OFFSET_1 (1<<16)
440 #define MI1_ENABLE_FENCE_REGS (1<<10)
441 #define MI1_TILED_SURFACE (1<<9)
442 #define MI1_TILE_WALK_X (0<<8)
443 #define MI1_TILE_WALK_Y (1<<8)
444 #define MI1_PITCH_MASK (0xf<<0)
445 #define MI2_DIMENSIONS_ARE_LOG2 (1<<31)
446 #define MI2_DIMENSIONS_ARE_EXACT (0<<31)
447 #define MI2_HEIGHT_SHIFT 16
448 #define MI2_HEIGHT_MASK (0x1ff<<16)
449 #define MI2_WIDTH_SHIFT 0
450 #define MI2_WIDTH_MASK (0x1ff<<0)
451 #define MI3_BASE_ADDR_MASK (~0xf)
452
453 /* GFXRENDERSTATE_MAP_COORD_SETS, p116
454 */
455 #define GFX_OP_MAP_COORD_SETS ((0x3<<29)|(0x1c<<24)|(0x1<<19))
456 #define MCS_COORD_ID_SHIFT 16
457 #define MCS_COORD_0 (0<<16)
458 #define MCS_COORD_1 (1<<16)
459 #define MCS_UPDATE_NORMALIZED (1<<15)
460 #define MCS_NORMALIZED_COORDS_MASK (1<<14)
461 #define MCS_NORMALIZED_COORDS (1<<14)
462 #define MCS_UPDATE_V_STATE (1<<7)
463 #define MCS_V_STATE_MASK (0x3<<4)
464 #define MCS_V_WRAP (0x0<<4)
465 #define MCS_V_MIRROR (0x1<<4)
466 #define MCS_V_CLAMP (0x2<<4)
467 #define MCS_V_WRAP_SHORTEST (0x3<<4)
468 #define MCS_UPDATE_U_STATE (1<<3)
469 #define MCS_U_STATE_MASK (0x3<<0)
470 #define MCS_U_WRAP (0x0<<0)
471 #define MCS_U_MIRROR (0x1<<0)
472 #define MCS_U_CLAMP (0x2<<0)
473 #define MCS_U_WRAP_SHORTEST (0x3<<0)
474
475 /* GFXRENDERSTATE_MAP_TEXELS, p115
476 */
477 #define GFX_OP_MAP_TEXELS ((0x3<<29)|(0x1c<<24)|(0x0<<19))
478 #define MT_UPDATE_TEXEL1_STATE (1<<15)
479 #define MT_TEXEL1_DISABLE (0<<14)
480 #define MT_TEXEL1_ENABLE (1<<14)
481 #define MT_TEXEL1_COORD0 (0<<11)
482 #define MT_TEXEL1_COORD1 (1<<11)
483 #define MT_TEXEL1_MAP0 (0<<8)
484 #define MT_TEXEL1_MAP1 (1<<8)
485 #define MT_UPDATE_TEXEL0_STATE (1<<7)
486 #define MT_TEXEL0_DISABLE (0<<6)
487 #define MT_TEXEL0_ENABLE (1<<6)
488 #define MT_TEXEL0_COORD0 (0<<3)
489 #define MT_TEXEL0_COORD1 (1<<3)
490 #define MT_TEXEL0_MAP0 (0<<0)
491 #define MT_TEXEL0_MAP1 (1<<0)
492
493 /* GFXRENDERSTATE_VERTEX_FORMAT, p110
494 */
495 #define GFX_OP_VERTEX_FMT ((0x3<<29)|(0x5<<24))
496 #define VF_TEXCOORD_COUNT_SHIFT 8
497 #define VF_TEXCOORD_COUNT_0 (0<<8)
498 #define VF_TEXCOORD_COUNT_1 (1<<8)
499 #define VF_TEXCOORD_COUNT_2 (2<<8)
500 #define VF_SPEC_FOG_ENABLE (1<<7)
501 #define VF_RGBA_ENABLE (1<<6)
502 #define VF_Z_OFFSET_ENABLE (1<<5)
503 #define VF_XYZ (0x1<<1)
504 #define VF_XYZW (0x2<<1)
505 #define VF_XY (0x3<<1)
506 #define VF_XYW (0x4<<1)
507
508
509 #define VERT_X_MASK (~0xf)
510 #define VERT_X_EDGE_V2V0 (1<<2)
511 #define VERT_X_EDGE_V1V2 (1<<1)
512 #define VERT_X_EDGE_V0V1 (1<<0)
513
514 /* Not enabled fields should not be sent to hardware:
515 */
516 typedef struct {
517 union {
518 float x;
519 unsigned int edge_flags;
520 } x;
521 float y;
522 float z;
523 float z_bias;
524 float oow;
525 unsigned int argb;
526 unsigned int fog_spec_rgb; /* spec g and r ignored. */
527 float tu0;
528 float tv0;
529 float tu1;
530 float tv1;
531 } i810_full_vertex;
532
533
534
535 /* GFXCMDPARSER_BATCH_BUFFER, p105
536 *
537 * Not clear whether start address must be shifted or not. Not clear
538 * whether address is physical system memory, or subject to GTT
539 * translation. Because the address appears to be 32 bits long,
540 * perhaps it refers to physical system memory...
541 */
542 #define CMD_OP_BATCH_BUFFER ((0x0<<29)|(0x30<<23)|0x1)
543 #define BB1_START_ADDR_MASK (~0x7)
544 #define BB1_PROTECTED (1<<0)
545 #define BB1_UNPROTECTED (0<<0)
546 #define BB2_END_ADDR_MASK (~0x7)
547
548 /* Hardware seems to barf on buffers larger than this (in strange ways)...
549 */
550 #define MAX_BATCH (512*1024)
551
552
553 /* GFXCMDPARSER_Z_BUFFER_INFO, p98
554 *
555 * Base address is in GTT space, and must be 4K aligned
556 */
557 #define CMD_OP_Z_BUFFER_INFO ((0x0<<29)|(0x16<<23))
558 #define ZB_BASE_ADDR_SHIFT 0
559 #define ZB_BASE_ADDR_MASK (~((1<<12)-1))
560 #define ZB_PITCH_512B (0x0<<0)
561 #define ZB_PITCH_1K (0x1<<0)
562 #define ZB_PITCH_2K (0x2<<0)
563 #define ZB_PITCH_4K (0x3<<0)
564
565 /* GFXCMDPARSER_FRONT_BUFFER_INFO, p97
566 *
567 * Format:
568 * 0: CMD_OP_FRONT_BUFFER_INFO | (pitch<<FB0_PITCH_SHIFT) | FB0_*
569 * 1: FB1_*
570 */
571 #define CMD_OP_FRONT_BUFFER_INFO ((0x0<<29)|(0x14<<23))
572 #define FB0_PITCH_SHIFT 8
573 #define FB0_FLIP_SYNC (0<<6)
574 #define FB0_FLIP_ASYNC (1<<6)
575 #define FB0_BASE_ADDR_SHIFT 0
576 #define FB0_BASE_ADDR_MASK 0x03FFFFF8
577
578 /* GFXCMDPARSER_DEST_BUFFER_INFO, p96
579 *
580 * Format:
581 */
582 #define CMD_OP_DESTBUFFER_INFO ((0x0<<29)|(0x15<<23))
583 #define DB1_BASE_ADDR_SHIFT 0
584 #define DB1_BASE_ADDR_MASK 0x03FFF000
585 #define DB1_PITCH_512B (0x0<<0)
586 #define DB1_PITCH_1K (0x1<<0)
587 #define DB1_PITCH_2K (0x2<<0)
588 #define DB1_PITCH_4K (0x4<<0)
589
590
591 /* GFXRENDERSTATE_DEST_BUFFER_VARIABLES, p152
592 *
593 * Format:
594 * 0: GFX_OP_DESTBUFFER_VARS
595 * 1: DEST_*
596 */
597 #define GFX_OP_DESTBUFFER_VARS ((0x3<<29)|(0x1d<<24)|(0x85<<16)|0x0)
598 #define DV_HORG_BIAS_MASK (0xf<<20)
599 #define DV_HORG_BIAS_OGL (0x0<<20)
600 #define DV_VORG_BIAS_MASK (0xf<<16)
601 #define DV_VORG_BIAS_OGL (0x0<<16)
602 #define DV_PF_MASK (0x7<<8)
603 #define DV_PF_INDEX (0x0<<8)
604 #define DV_PF_555 (0x1<<8)
605 #define DV_PF_565 (0x2<<8)
606
607 #define GFX_OP_ANTIALIAS ((0x3<<29)|(0x6<<24))
608 #define AA_UPDATE_EDGEFLAG (1<<13)
609 #define AA_ENABLE_EDGEFLAG (1<<12)
610 #define AA_UPDATE_POLYWIDTH (1<<11)
611 #define AA_POLYWIDTH_05 (1<<9)
612 #define AA_POLYWIDTH_10 (2<<9)
613 #define AA_POLYWIDTH_20 (3<<9)
614 #define AA_POLYWIDTH_40 (4<<9)
615 #define AA_UPDATE_LINEWIDTH (1<<8)
616 #define AA_LINEWIDTH_05 (1<<6)
617 #define AA_LINEWIDTH_10 (2<<6)
618 #define AA_LINEWIDTH_20 (3<<6)
619 #define AA_LINEWIDTH_40 (4<<6)
620 #define AA_UPDATE_BB_EXPANSION (1<<5)
621 #define AA_BB_EXPANSION_SHIFT 2
622 #define AA_UPDATE_AA_ENABLE (1<<1)
623 #define AA_ENABLE (1<<0)
624
625 #define GFX_OP_STIPPLE ((0x3<<29)|(0x1d<<24)|(0x83<<16))
626 #define ST1_ENABLE (1<<16)
627 #define ST1_MASK (0xffff)
628
629 #define I810_SET_FIELD( var, mask, value ) (var &= ~(mask), var |= value)
630
631 #endif