1 /************************************************************************** 2 * 3 * Copyright 2003 VMware, Inc. 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial portions 16 * of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21 * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 * 26 **************************************************************************/ 27 28 29 #ifndef _I830_REG_H_ 30 #define _I830_REG_H_ 31 32 33 #include "intel_reg.h" 34 35 #define I830_SET_FIELD( var, mask, value ) (var &= ~(mask), var |= value) 36 37 #define _3DSTATE_AA_CMD (CMD_3D | (0x06<<24)) 38 #define AA_LINE_ECAAR_WIDTH_ENABLE (1<<16) 39 #define AA_LINE_ECAAR_WIDTH_0_5 0 40 #define AA_LINE_ECAAR_WIDTH_1_0 (1<<14) 41 #define AA_LINE_ECAAR_WIDTH_2_0 (2<<14) 42 #define AA_LINE_ECAAR_WIDTH_4_0 (3<<14) 43 #define AA_LINE_REGION_WIDTH_ENABLE (1<<8) 44 #define AA_LINE_REGION_WIDTH_0_5 0 45 #define AA_LINE_REGION_WIDTH_1_0 (1<<6) 46 #define AA_LINE_REGION_WIDTH_2_0 (2<<6) 47 #define AA_LINE_REGION_WIDTH_4_0 (3<<6) 48 #define AA_LINE_ENABLE ((1<<1) | 1) 49 #define AA_LINE_DISABLE (1<<1) 50 51 #define _3DSTATE_COLOR_FACTOR_CMD (CMD_3D | (0x1d<<24) | (0x1<<16)) 52 53 #define _3DSTATE_COLOR_FACTOR_N_CMD(stage) (CMD_3D | (0x1d<<24) | \ 54 ((0x90+(stage))<<16)) 55 56 #define _3DSTATE_CONST_BLEND_COLOR_CMD (CMD_3D | (0x1d<<24) | (0x88<<16)) 57 58 #define _3DSTATE_DFLT_DIFFUSE_CMD (CMD_3D | (0x1d<<24) | (0x99<<16)) 59 60 #define _3DSTATE_DFLT_SPEC_CMD (CMD_3D | (0x1d<<24) | (0x9a<<16)) 61 62 #define _3DSTATE_DFLT_Z_CMD (CMD_3D | (0x1d<<24) | (0x98<<16)) 63 64 65 #define _3DSTATE_DST_BUF_VARS_CMD (CMD_3D | (0x1d<<24) | (0x85<<16)) 66 /* Dword 1 */ 67 #define DSTORG_HORT_BIAS(x) ((x)<<20) 68 #define DSTORG_VERT_BIAS(x) ((x)<<16) 69 #define COLOR_4_2_2_CHNL_WRT_ALL 0 70 #define COLOR_4_2_2_CHNL_WRT_Y (1<<12) 71 #define COLOR_4_2_2_CHNL_WRT_CR (2<<12) 72 #define COLOR_4_2_2_CHNL_WRT_CB (3<<12) 73 #define COLOR_4_2_2_CHNL_WRT_CRCB (4<<12) 74 #define COLR_BUF_8BIT 0 75 #define COLR_BUF_RGB555 (1<<8) 76 #define COLR_BUF_RGB565 (2<<8) 77 #define COLR_BUF_ARGB8888 (3<<8) 78 #define DEPTH_IS_Z 0 79 #define DEPTH_IS_W (1<<6) 80 #define DEPTH_FRMT_16_FIXED 0 81 #define DEPTH_FRMT_16_FLOAT (1<<2) 82 #define DEPTH_FRMT_24_FIXED_8_OTHER (2<<2) 83 #define DEPTH_FRMT_24_FLOAT_8_OTHER (3<<2) 84 #define VERT_LINE_STRIDE_1 (1<<1) 85 #define VERT_LINE_STRIDE_0 0 86 #define VERT_LINE_STRIDE_OFS_1 1 87 #define VERT_LINE_STRIDE_OFS_0 0 88 89 90 #define _3DSTATE_DRAW_RECT_CMD (CMD_3D|(0x1d<<24)|(0x80<<16)|3) 91 /* Dword 1 */ 92 #define DRAW_RECT_DIS_DEPTH_OFS (1<<30) 93 #define DRAW_DITHER_OFS_X(x) ((x)<<26) 94 #define DRAW_DITHER_OFS_Y(x) ((x)<<24) 95 /* Dword 2 */ 96 #define DRAW_YMIN(x) ((x)<<16) 97 #define DRAW_XMIN(x) (x) 98 /* Dword 3 */ 99 #define DRAW_YMAX(x) ((x)<<16) 100 #define DRAW_XMAX(x) (x) 101 /* Dword 4 */ 102 #define DRAW_YORG(x) ((x)<<16) 103 #define DRAW_XORG(x) (x) 104 105 106 #define _3DSTATE_ENABLES_1_CMD (CMD_3D|(0x3<<24)) 107 #define ENABLE_LOGIC_OP_MASK ((1<<23)|(1<<22)) 108 #define ENABLE_LOGIC_OP ((1<<23)|(1<<22)) 109 #define DISABLE_LOGIC_OP (1<<23) 110 #define ENABLE_STENCIL_TEST ((1<<21)|(1<<20)) 111 #define DISABLE_STENCIL_TEST (1<<21) 112 #define ENABLE_DEPTH_BIAS ((1<<11)|(1<<10)) 113 #define DISABLE_DEPTH_BIAS (1<<11) 114 #define ENABLE_SPEC_ADD_MASK ((1<<9)|(1<<8)) 115 #define ENABLE_SPEC_ADD ((1<<9)|(1<<8)) 116 #define DISABLE_SPEC_ADD (1<<9) 117 #define ENABLE_DIS_FOG_MASK ((1<<7)|(1<<6)) 118 #define ENABLE_FOG ((1<<7)|(1<<6)) 119 #define DISABLE_FOG (1<<7) 120 #define ENABLE_DIS_ALPHA_TEST_MASK ((1<<5)|(1<<4)) 121 #define ENABLE_ALPHA_TEST ((1<<5)|(1<<4)) 122 #define DISABLE_ALPHA_TEST (1<<5) 123 #define ENABLE_DIS_CBLEND_MASK ((1<<3)|(1<<2)) 124 #define ENABLE_COLOR_BLEND ((1<<3)|(1<<2)) 125 #define DISABLE_COLOR_BLEND (1<<3) 126 #define ENABLE_DIS_DEPTH_TEST_MASK ((1<<1)|1) 127 #define ENABLE_DEPTH_TEST ((1<<1)|1) 128 #define DISABLE_DEPTH_TEST (1<<1) 129 130 /* _3DSTATE_ENABLES_2, p138 */ 131 #define _3DSTATE_ENABLES_2_CMD (CMD_3D|(0x4<<24)) 132 #define ENABLE_STENCIL_WRITE ((1<<21)|(1<<20)) 133 #define DISABLE_STENCIL_WRITE (1<<21) 134 #define ENABLE_TEX_CACHE ((1<<17)|(1<<16)) 135 #define DISABLE_TEX_CACHE (1<<17) 136 #define ENABLE_DITHER ((1<<9)|(1<<8)) 137 #define DISABLE_DITHER (1<<9) 138 #define ENABLE_COLOR_MASK (1<<10) 139 #define WRITEMASK_ALPHA (1<<7) 140 #define WRITEMASK_ALPHA_SHIFT 7 141 #define WRITEMASK_RED (1<<6) 142 #define WRITEMASK_RED_SHIFT 6 143 #define WRITEMASK_GREEN (1<<5) 144 #define WRITEMASK_GREEN_SHIFT 5 145 #define WRITEMASK_BLUE (1<<4) 146 #define WRITEMASK_BLUE_SHIFT 4 147 #define WRITEMASK_MASK ((1<<4)|(1<<5)|(1<<6)|(1<<7)) 148 #define ENABLE_COLOR_WRITE ((1<<3)|(1<<2)) 149 #define DISABLE_COLOR_WRITE (1<<3) 150 #define ENABLE_DIS_DEPTH_WRITE_MASK 0x3 151 #define ENABLE_DEPTH_WRITE ((1<<1)|1) 152 #define DISABLE_DEPTH_WRITE (1<<1) 153 154 /* _3DSTATE_FOG_COLOR, p139 */ 155 #define _3DSTATE_FOG_COLOR_CMD (CMD_3D|(0x15<<24)) 156 #define FOG_COLOR_RED(x) ((x)<<16) 157 #define FOG_COLOR_GREEN(x) ((x)<<8) 158 #define FOG_COLOR_BLUE(x) (x) 159 160 /* _3DSTATE_FOG_MODE, p140 */ 161 #define _3DSTATE_FOG_MODE_CMD (CMD_3D|(0x1d<<24)|(0x89<<16)|2) 162 /* Dword 1 */ 163 #define FOGFUNC_ENABLE (1<<31) 164 #define FOGFUNC_VERTEX 0 165 #define FOGFUNC_PIXEL_EXP (1<<28) 166 #define FOGFUNC_PIXEL_EXP2 (2<<28) 167 #define FOGFUNC_PIXEL_LINEAR (3<<28) 168 #define FOGSRC_INDEX_Z (1<<27) 169 #define FOGSRC_INDEX_W ((1<<27)|(1<<25)) 170 #define FOG_LINEAR_CONST (1<<24) 171 #define FOG_CONST_1(x) ((x)<<4) 172 #define ENABLE_FOG_DENSITY (1<<23) 173 /* Dword 2 */ 174 #define FOG_CONST_2(x) (x) 175 /* Dword 3 */ 176 #define FOG_DENSITY(x) (x) 177 178 /* _3DSTATE_INDEPENDENT_ALPHA_BLEND, p142 */ 179 #define _3DSTATE_INDPT_ALPHA_BLEND_CMD (CMD_3D|(0x0b<<24)) 180 #define ENABLE_INDPT_ALPHA_BLEND ((1<<23)|(1<<22)) 181 #define DISABLE_INDPT_ALPHA_BLEND (1<<23) 182 #define ALPHA_BLENDFUNC_MASK 0x3f0000 183 #define ENABLE_ALPHA_BLENDFUNC (1<<21) 184 #define ABLENDFUNC_ADD 0 185 #define ABLENDFUNC_SUB (1<<16) 186 #define ABLENDFUNC_RVSE_SUB (2<<16) 187 #define ABLENDFUNC_MIN (3<<16) 188 #define ABLENDFUNC_MAX (4<<16) 189 #define SRC_DST_ABLEND_MASK 0xfff 190 #define ENABLE_SRC_ABLEND_FACTOR (1<<11) 191 #define SRC_ABLEND_FACT(x) ((x)<<6) 192 #define ENABLE_DST_ABLEND_FACTOR (1<<5) 193 #define DST_ABLEND_FACT(x) (x) 194 195 196 /* _3DSTATE_MAP_BLEND_ARG, p152 */ 197 #define _3DSTATE_MAP_BLEND_ARG_CMD(stage) (CMD_3D|(0x0e<<24)|((stage)<<20)) 198 199 #define TEXPIPE_COLOR 0 200 #define TEXPIPE_ALPHA (1<<18) 201 #define TEXPIPE_KILL (2<<18) 202 #define TEXBLEND_ARG0 0 203 #define TEXBLEND_ARG1 (1<<15) 204 #define TEXBLEND_ARG2 (2<<15) 205 #define TEXBLEND_ARG3 (3<<15) 206 #define TEXBLENDARG_MODIFY_PARMS (1<<6) 207 #define TEXBLENDARG_REPLICATE_ALPHA (1<<5) 208 #define TEXBLENDARG_INV_ARG (1<<4) 209 #define TEXBLENDARG_ONE 0 210 #define TEXBLENDARG_FACTOR 0x01 211 #define TEXBLENDARG_ACCUM 0x02 212 #define TEXBLENDARG_DIFFUSE 0x03 213 #define TEXBLENDARG_SPEC 0x04 214 #define TEXBLENDARG_CURRENT 0x05 215 #define TEXBLENDARG_TEXEL0 0x06 216 #define TEXBLENDARG_TEXEL1 0x07 217 #define TEXBLENDARG_TEXEL2 0x08 218 #define TEXBLENDARG_TEXEL3 0x09 219 #define TEXBLENDARG_FACTOR_N 0x0e 220 221 /* _3DSTATE_MAP_BLEND_OP, p155 */ 222 #define _3DSTATE_MAP_BLEND_OP_CMD(stage) (CMD_3D|(0x0d<<24)|((stage)<<20)) 223 #if 0 224 # define TEXPIPE_COLOR 0 225 # define TEXPIPE_ALPHA (1<<18) 226 # define TEXPIPE_KILL (2<<18) 227 #endif 228 #define ENABLE_TEXOUTPUT_WRT_SEL (1<<17) 229 #define TEXOP_OUTPUT_CURRENT 0 230 #define TEXOP_OUTPUT_ACCUM (1<<15) 231 #define ENABLE_TEX_CNTRL_STAGE ((1<<12)|(1<<11)) 232 #define DISABLE_TEX_CNTRL_STAGE (1<<12) 233 #define TEXOP_SCALE_SHIFT 9 234 #define TEXOP_SCALE_1X (0 << TEXOP_SCALE_SHIFT) 235 #define TEXOP_SCALE_2X (1 << TEXOP_SCALE_SHIFT) 236 #define TEXOP_SCALE_4X (2 << TEXOP_SCALE_SHIFT) 237 #define TEXOP_MODIFY_PARMS (1<<8) 238 #define TEXOP_LAST_STAGE (1<<7) 239 #define TEXBLENDOP_KILLPIXEL 0x02 240 #define TEXBLENDOP_ARG1 0x01 241 #define TEXBLENDOP_ARG2 0x02 242 #define TEXBLENDOP_MODULATE 0x03 243 #define TEXBLENDOP_ADD 0x06 244 #define TEXBLENDOP_ADDSIGNED 0x07 245 #define TEXBLENDOP_BLEND 0x08 246 #define TEXBLENDOP_BLEND_AND_ADD 0x09 247 #define TEXBLENDOP_SUBTRACT 0x0a 248 #define TEXBLENDOP_DOT3 0x0b 249 #define TEXBLENDOP_DOT4 0x0c 250 #define TEXBLENDOP_MODULATE_AND_ADD 0x0d 251 #define TEXBLENDOP_MODULATE_2X_AND_ADD 0x0e 252 #define TEXBLENDOP_MODULATE_4X_AND_ADD 0x0f 253 254 /* _3DSTATE_MAP_BUMP_TABLE, p160 TODO */ 255 /* _3DSTATE_MAP_COLOR_CHROMA_KEY, p161 TODO */ 256 257 #define _3DSTATE_MAP_COORD_TRANSFORM ((3<<29)|(0x1d<<24)|(0x8c<<16)) 258 #define DISABLE_TEX_TRANSFORM (1<<28) 259 #define TEXTURE_SET(x) ((x)<<29) 260 261 #define _3DSTATE_VERTEX_TRANSFORM ((3<<29)|(0x1d<<24)|(0x8b<<16)) 262 #define DISABLE_VIEWPORT_TRANSFORM (1<<31) 263 #define DISABLE_PERSPECTIVE_DIVIDE (1<<29) 264 265 266 /* _3DSTATE_MAP_COORD_SET_BINDINGS, p162 */ 267 #define _3DSTATE_MAP_COORD_SETBIND_CMD (CMD_3D|(0x1d<<24)|(0x02<<16)) 268 #define TEXBIND_MASK3 ((1<<15)|(1<<14)|(1<<13)|(1<<12)) 269 #define TEXBIND_MASK2 ((1<<11)|(1<<10)|(1<<9)|(1<<8)) 270 #define TEXBIND_MASK1 ((1<<7)|(1<<6)|(1<<5)|(1<<4)) 271 #define TEXBIND_MASK0 ((1<<3)|(1<<2)|(1<<1)|1) 272 273 #define TEXBIND_SET3(x) ((x)<<12) 274 #define TEXBIND_SET2(x) ((x)<<8) 275 #define TEXBIND_SET1(x) ((x)<<4) 276 #define TEXBIND_SET0(x) (x) 277 278 #define TEXCOORDSRC_KEEP 0 279 #define TEXCOORDSRC_DEFAULT 0x01 280 #define TEXCOORDSRC_VTXSET_0 0x08 281 #define TEXCOORDSRC_VTXSET_1 0x09 282 #define TEXCOORDSRC_VTXSET_2 0x0a 283 #define TEXCOORDSRC_VTXSET_3 0x0b 284 #define TEXCOORDSRC_VTXSET_4 0x0c 285 #define TEXCOORDSRC_VTXSET_5 0x0d 286 #define TEXCOORDSRC_VTXSET_6 0x0e 287 #define TEXCOORDSRC_VTXSET_7 0x0f 288 289 #define MAP_UNIT(unit) ((unit)<<16) 290 #define MAP_UNIT_MASK (0x7<<16) 291 292 /* _3DSTATE_MAP_COORD_SETS, p164 */ 293 #define _3DSTATE_MAP_COORD_SET_CMD (CMD_3D|(0x1c<<24)|(0x01<<19)) 294 #define ENABLE_TEXCOORD_PARAMS (1<<15) 295 #define TEXCOORDS_ARE_NORMAL (1<<14) 296 #define TEXCOORDS_ARE_IN_TEXELUNITS 0 297 #define TEXCOORDTYPE_CARTESIAN 0 298 #define TEXCOORDTYPE_HOMOGENEOUS (1<<11) 299 #define TEXCOORDTYPE_VECTOR (2<<11) 300 #define TEXCOORDTYPE_MASK (0x7<<11) 301 #define ENABLE_ADDR_V_CNTL (1<<7) 302 #define ENABLE_ADDR_U_CNTL (1<<3) 303 #define TEXCOORD_ADDR_V_MODE(x) ((x)<<4) 304 #define TEXCOORD_ADDR_U_MODE(x) (x) 305 #define TEXCOORDMODE_WRAP 0 306 #define TEXCOORDMODE_MIRROR 1 307 #define TEXCOORDMODE_CLAMP 2 308 #define TEXCOORDMODE_WRAP_SHORTEST 3 309 #define TEXCOORDMODE_CLAMP_BORDER 4 310 #define TEXCOORD_ADDR_V_MASK 0x70 311 #define TEXCOORD_ADDR_U_MASK 0x7 312 313 /* _3DSTATE_MAP_CUBE, p168 TODO */ 314 #define _3DSTATE_MAP_CUBE (CMD_3D|(0x1c<<24)|(0x0a<<19)) 315 #define CUBE_NEGX_ENABLE (1<<5) 316 #define CUBE_POSX_ENABLE (1<<4) 317 #define CUBE_NEGY_ENABLE (1<<3) 318 #define CUBE_POSY_ENABLE (1<<2) 319 #define CUBE_NEGZ_ENABLE (1<<1) 320 #define CUBE_POSZ_ENABLE (1<<0) 321 322 323 /* _3DSTATE_MODES_1, p190 */ 324 #define _3DSTATE_MODES_1_CMD (CMD_3D|(0x08<<24)) 325 #define BLENDFUNC_MASK 0x3f0000 326 #define ENABLE_COLR_BLND_FUNC (1<<21) 327 #define BLENDFUNC_ADD 0 328 #define BLENDFUNC_SUB (1<<16) 329 #define BLENDFUNC_RVRSE_SUB (2<<16) 330 #define BLENDFUNC_MIN (3<<16) 331 #define BLENDFUNC_MAX (4<<16) 332 #define SRC_DST_BLND_MASK 0xfff 333 #define ENABLE_SRC_BLND_FACTOR (1<<11) 334 #define ENABLE_DST_BLND_FACTOR (1<<5) 335 #define SRC_BLND_FACT(x) ((x)<<6) 336 #define DST_BLND_FACT(x) (x) 337 338 339 /* _3DSTATE_MODES_2, p192 */ 340 #define _3DSTATE_MODES_2_CMD (CMD_3D|(0x0f<<24)) 341 #define ENABLE_GLOBAL_DEPTH_BIAS (1<<22) 342 #define GLOBAL_DEPTH_BIAS(x) ((x)<<14) 343 #define ENABLE_ALPHA_TEST_FUNC (1<<13) 344 #define ENABLE_ALPHA_REF_VALUE (1<<8) 345 #define ALPHA_TEST_FUNC(x) ((x)<<9) 346 #define ALPHA_REF_VALUE(x) (x) 347 348 #define ALPHA_TEST_REF_MASK 0x3fff 349 350 /* _3DSTATE_MODES_3, p193 */ 351 #define _3DSTATE_MODES_3_CMD (CMD_3D|(0x02<<24)) 352 #define DEPTH_TEST_FUNC_MASK 0x1f0000 353 #define ENABLE_DEPTH_TEST_FUNC (1<<20) 354 /* Uses COMPAREFUNC */ 355 #define DEPTH_TEST_FUNC(x) ((x)<<16) 356 #define ENABLE_ALPHA_SHADE_MODE (1<<11) 357 #define ENABLE_FOG_SHADE_MODE (1<<9) 358 #define ENABLE_SPEC_SHADE_MODE (1<<7) 359 #define ENABLE_COLOR_SHADE_MODE (1<<5) 360 #define ALPHA_SHADE_MODE(x) ((x)<<10) 361 #define FOG_SHADE_MODE(x) ((x)<<8) 362 #define SPEC_SHADE_MODE(x) ((x)<<6) 363 #define COLOR_SHADE_MODE(x) ((x)<<4) 364 #define CULLMODE_MASK 0xf 365 #define ENABLE_CULL_MODE (1<<3) 366 #define CULLMODE_BOTH 0 367 #define CULLMODE_NONE 1 368 #define CULLMODE_CW 2 369 #define CULLMODE_CCW 3 370 371 #define SHADE_MODE_LINEAR 0 372 #define SHADE_MODE_FLAT 0x1 373 374 /* _3DSTATE_MODES_4, p195 */ 375 #define _3DSTATE_MODES_4_CMD (CMD_3D|(0x16<<24)) 376 #define ENABLE_LOGIC_OP_FUNC (1<<23) 377 #define LOGIC_OP_FUNC(x) ((x)<<18) 378 #define LOGICOP_MASK ((1<<18)|(1<<19)|(1<<20)|(1<<21)) 379 #define LOGICOP_CLEAR 0 380 #define LOGICOP_NOR 0x1 381 #define LOGICOP_AND_INV 0x2 382 #define LOGICOP_COPY_INV 0x3 383 #define LOGICOP_AND_RVRSE 0x4 384 #define LOGICOP_INV 0x5 385 #define LOGICOP_XOR 0x6 386 #define LOGICOP_NAND 0x7 387 #define LOGICOP_AND 0x8 388 #define LOGICOP_EQUIV 0x9 389 #define LOGICOP_NOOP 0xa 390 #define LOGICOP_OR_INV 0xb 391 #define LOGICOP_COPY 0xc 392 #define LOGICOP_OR_RVRSE 0xd 393 #define LOGICOP_OR 0xe 394 #define LOGICOP_SET 0xf 395 #define MODE4_ENABLE_STENCIL_TEST_MASK ((1<<17)|(0xff00)) 396 #define ENABLE_STENCIL_TEST_MASK (1<<17) 397 #define STENCIL_TEST_MASK(x) (((x)&0xff)<<8) 398 #define MODE4_ENABLE_STENCIL_WRITE_MASK ((1<<16)|(0x00ff)) 399 #define ENABLE_STENCIL_WRITE_MASK (1<<16) 400 #define STENCIL_WRITE_MASK(x) ((x)&0xff) 401 402 /* _3DSTATE_MODES_5, p196 */ 403 #define _3DSTATE_MODES_5_CMD (CMD_3D|(0x0c<<24)) 404 #define ENABLE_SPRITE_POINT_TEX (1<<23) 405 #define SPRITE_POINT_TEX_ON (1<<22) 406 #define SPRITE_POINT_TEX_OFF 0 407 #define FLUSH_RENDER_CACHE (1<<18) 408 #define FLUSH_TEXTURE_CACHE (1<<16) 409 #define FIXED_LINE_WIDTH_MASK 0xfc00 410 #define ENABLE_FIXED_LINE_WIDTH (1<<15) 411 #define FIXED_LINE_WIDTH(x) ((x)<<10) 412 #define FIXED_POINT_WIDTH_MASK 0x3ff 413 #define ENABLE_FIXED_POINT_WIDTH (1<<9) 414 #define FIXED_POINT_WIDTH(x) (x) 415 416 /* _3DSTATE_RASTERIZATION_RULES, p198 */ 417 #define _3DSTATE_RASTER_RULES_CMD (CMD_3D|(0x07<<24)) 418 #define ENABLE_POINT_RASTER_RULE (1<<15) 419 #define OGL_POINT_RASTER_RULE (1<<13) 420 #define ENABLE_LINE_STRIP_PROVOKE_VRTX (1<<8) 421 #define ENABLE_TRI_FAN_PROVOKE_VRTX (1<<5) 422 #define ENABLE_TRI_STRIP_PROVOKE_VRTX (1<<2) 423 #define LINE_STRIP_PROVOKE_VRTX_MASK (3<<6) 424 #define LINE_STRIP_PROVOKE_VRTX(x) ((x)<<6) 425 #define TRI_FAN_PROVOKE_VRTX_MASK (3<<3) 426 #define TRI_FAN_PROVOKE_VRTX(x) ((x)<<3) 427 #define TRI_STRIP_PROVOKE_VRTX_MASK (3<<0) 428 #define TRI_STRIP_PROVOKE_VRTX(x) (x) 429 430 /* _3DSTATE_SCISSOR_ENABLE, p200 */ 431 #define _3DSTATE_SCISSOR_ENABLE_CMD (CMD_3D|(0x1c<<24)|(0x10<<19)) 432 #define ENABLE_SCISSOR_RECT ((1<<1) | 1) 433 #define DISABLE_SCISSOR_RECT (1<<1) 434 435 /* _3DSTATE_SCISSOR_RECTANGLE_0, p201 */ 436 #define _3DSTATE_SCISSOR_RECT_0_CMD (CMD_3D|(0x1d<<24)|(0x81<<16)|1) 437 /* Dword 1 */ 438 #define SCISSOR_RECT_0_YMIN(x) ((x)<<16) 439 #define SCISSOR_RECT_0_XMIN(x) (x) 440 /* Dword 2 */ 441 #define SCISSOR_RECT_0_YMAX(x) ((x)<<16) 442 #define SCISSOR_RECT_0_XMAX(x) (x) 443 444 /* _3DSTATE_STENCIL_TEST, p202 */ 445 #define _3DSTATE_STENCIL_TEST_CMD (CMD_3D|(0x09<<24)) 446 #define ENABLE_STENCIL_PARMS (1<<23) 447 #define STENCIL_OPS_MASK (0xffc000) 448 #define STENCIL_FAIL_OP(x) ((x)<<20) 449 #define STENCIL_PASS_DEPTH_FAIL_OP(x) ((x)<<17) 450 #define STENCIL_PASS_DEPTH_PASS_OP(x) ((x)<<14) 451 452 #define ENABLE_STENCIL_TEST_FUNC_MASK ((1<<13)|(1<<12)|(1<<11)|(1<<10)|(1<<9)) 453 #define ENABLE_STENCIL_TEST_FUNC (1<<13) 454 /* Uses COMPAREFUNC */ 455 #define STENCIL_TEST_FUNC(x) ((x)<<9) 456 #define STENCIL_REF_VALUE_MASK ((1<<8)|0xff) 457 #define ENABLE_STENCIL_REF_VALUE (1<<8) 458 #define STENCIL_REF_VALUE(x) (x) 459 460 /* _3DSTATE_VERTEX_FORMAT, p204 */ 461 #define _3DSTATE_VFT0_CMD (CMD_3D|(0x05<<24)) 462 #define VFT0_POINT_WIDTH (1<<12) 463 #define VFT0_TEX_COUNT_MASK (7<<8) 464 #define VFT0_TEX_COUNT_SHIFT 8 465 #define VFT0_TEX_COUNT(x) ((x)<<8) 466 #define VFT0_SPEC (1<<7) 467 #define VFT0_DIFFUSE (1<<6) 468 #define VFT0_DEPTH_OFFSET (1<<5) 469 #define VFT0_XYZ (1<<1) 470 #define VFT0_XYZW (2<<1) 471 #define VFT0_XY (3<<1) 472 #define VFT0_XYW (4<<1) 473 #define VFT0_XYZW_MASK (7<<1) 474 475 /* _3DSTATE_VERTEX_FORMAT_2, p206 */ 476 #define _3DSTATE_VFT1_CMD (CMD_3D|(0x0a<<24)) 477 #define VFT1_TEX7_FMT(x) ((x)<<14) 478 #define VFT1_TEX6_FMT(x) ((x)<<12) 479 #define VFT1_TEX5_FMT(x) ((x)<<10) 480 #define VFT1_TEX4_FMT(x) ((x)<<8) 481 #define VFT1_TEX3_FMT(x) ((x)<<6) 482 #define VFT1_TEX2_FMT(x) ((x)<<4) 483 #define VFT1_TEX1_FMT(x) ((x)<<2) 484 #define VFT1_TEX0_FMT(x) (x) 485 #define VFT1_TEX0_MASK 3 486 #define VFT1_TEX1_SHIFT 2 487 488 /*New stuff picked up along the way */ 489 490 #define MLC_LOD_BIAS_MASK ((1<<7)-1) 491 492 493 /* _3DSTATE_VERTEX_TRANSFORM, p207 */ 494 #define _3DSTATE_VERTEX_TRANS_CMD (CMD_3D|(0x1d<<24)|(0x8b<<16)|0) 495 #define _3DSTATE_VERTEX_TRANS_MTX_CMD (CMD_3D|(0x1d<<24)|(0x8b<<16)|6) 496 /* Dword 1 */ 497 #define ENABLE_VIEWPORT_TRANSFORM ((1<<31)|(1<<30)) 498 #define DISABLE_VIEWPORT_TRANSFORM (1<<31) 499 #define ENABLE_PERSP_DIVIDE ((1<<29)|(1<<28)) 500 #define DISABLE_PERSP_DIVIDE (1<<29) 501 #define VRTX_TRANS_LOAD_MATRICES 0x7421 502 #define VRTX_TRANS_NO_LOAD_MATRICES 0x0000 503 /* Dword 2 -> 7 are matrix elements */ 504 505 /* _3DSTATE_W_STATE, p209 */ 506 #define _3DSTATE_W_STATE_CMD (CMD_3D|(0x1d<<24)|(0x8d<<16)|1) 507 /* Dword 1 */ 508 #define MAGIC_W_STATE_DWORD1 0x00000008 509 /* Dword 2 */ 510 #define WFAR_VALUE(x) (x) 511 512 513 /* Stipple command, carried over from the i810, apparently: 514 */ 515 #define _3DSTATE_STIPPLE ((0x3<<29)|(0x1d<<24)|(0x83<<16)) 516 #define ST1_ENABLE (1<<16) 517 #define ST1_MASK (0xffff) 518 519 520 521 #define _3DSTATE_LOAD_STATE_IMMEDIATE_2 ((0x3<<29)|(0x1d<<24)|(0x03<<16)) 522 #define LOAD_TEXTURE_MAP0 (1<<11) 523 #define LOAD_GLOBAL_COLOR_FACTOR (1<<6) 524 525 #define TM0S0_ADDRESS_MASK 0xfffffffc 526 #define TM0S0_USE_FENCE (1<<1) 527 528 #define TM0S1_HEIGHT_SHIFT 21 529 #define TM0S1_WIDTH_SHIFT 10 530 #define TM0S1_PALETTE_SELECT (1<<9) 531 #define TM0S1_MAPSURF_FORMAT_MASK (0x7 << 6) 532 #define TM0S1_MAPSURF_FORMAT_SHIFT 6 533 #define MAPSURF_8BIT_INDEXED (0<<6) 534 #define MAPSURF_8BIT (1<<6) 535 #define MAPSURF_16BIT (2<<6) 536 #define MAPSURF_32BIT (3<<6) 537 #define MAPSURF_411 (4<<6) 538 #define MAPSURF_422 (5<<6) 539 #define MAPSURF_COMPRESSED (6<<6) 540 #define MAPSURF_4BIT_INDEXED (7<<6) 541 #define TM0S1_MT_FORMAT_MASK (0x7 << 3) 542 #define TM0S1_MT_FORMAT_SHIFT 3 543 #define MT_4BIT_IDX_ARGB8888 (7<<3) /* SURFACE_4BIT_INDEXED */ 544 #define MT_8BIT_IDX_RGB565 (0<<3) /* SURFACE_8BIT_INDEXED */ 545 #define MT_8BIT_IDX_ARGB1555 (1<<3) 546 #define MT_8BIT_IDX_ARGB4444 (2<<3) 547 #define MT_8BIT_IDX_AY88 (3<<3) 548 #define MT_8BIT_IDX_ABGR8888 (4<<3) 549 #define MT_8BIT_IDX_BUMP_88DVDU (5<<3) 550 #define MT_8BIT_IDX_BUMP_655LDVDU (6<<3) 551 #define MT_8BIT_IDX_ARGB8888 (7<<3) 552 #define MT_8BIT_I8 (0<<3) /* SURFACE_8BIT */ 553 #define MT_8BIT_L8 (1<<3) 554 #define MT_16BIT_RGB565 (0<<3) /* SURFACE_16BIT */ 555 #define MT_16BIT_ARGB1555 (1<<3) 556 #define MT_16BIT_ARGB4444 (2<<3) 557 #define MT_16BIT_AY88 (3<<3) 558 #define MT_16BIT_DIB_ARGB1555_8888 (4<<3) 559 #define MT_16BIT_BUMP_88DVDU (5<<3) 560 #define MT_16BIT_BUMP_655LDVDU (6<<3) 561 #define MT_16BIT_DIB_RGB565_8888 (7<<3) 562 #define MT_32BIT_ARGB8888 (0<<3) /* SURFACE_32BIT */ 563 #define MT_32BIT_ABGR8888 (1<<3) 564 #define MT_32BIT_XRGB8888 (2<<3) /* XXX: Guess from i915_reg.h */ 565 #define MT_32BIT_BUMP_XLDVDU_8888 (6<<3) 566 #define MT_32BIT_DIB_8888 (7<<3) 567 #define MT_411_YUV411 (0<<3) /* SURFACE_411 */ 568 #define MT_422_YCRCB_SWAPY (0<<3) /* SURFACE_422 */ 569 #define MT_422_YCRCB_NORMAL (1<<3) 570 #define MT_422_YCRCB_SWAPUV (2<<3) 571 #define MT_422_YCRCB_SWAPUVY (3<<3) 572 #define MT_COMPRESS_DXT1 (0<<3) /* SURFACE_COMPRESSED */ 573 #define MT_COMPRESS_DXT2_3 (1<<3) 574 #define MT_COMPRESS_DXT4_5 (2<<3) 575 #define MT_COMPRESS_FXT1 (3<<3) 576 #define TM0S1_COLORSPACE_CONVERSION (1 << 2) 577 #define TM0S1_TILED_SURFACE (1 << 1) 578 #define TM0S1_TILE_WALK (1 << 0) 579 580 #define TM0S2_PITCH_SHIFT 21 581 #define TM0S2_CUBE_FACE_ENA_SHIFT 15 582 #define TM0S2_CUBE_FACE_ENA_MASK (1<<15) 583 #define TM0S2_MAP_FORMAT (1<<14) 584 #define TM0S2_VERTICAL_LINE_STRIDE (1<<13) 585 #define TM0S2_VERITCAL_LINE_STRIDE_OFF (1<<12) 586 #define TM0S2_OUTPUT_CHAN_SHIFT 10 587 #define TM0S2_OUTPUT_CHAN_MASK (3<<10) 588 #define TM0S2_BASE_MIP_LEVEL_SHIFT 1 589 #define TM0S2_LOD_PRECLAMP (1 << 0) 590 591 #define TM0S3_MIP_FILTER_MASK (0x3<<30) 592 #define TM0S3_MIP_FILTER_SHIFT 30 593 #define MIPFILTER_NONE 0 594 #define MIPFILTER_NEAREST 1 595 #define MIPFILTER_LINEAR 3 596 #define TM0S3_MAG_FILTER_MASK (0x3<<28) 597 #define TM0S3_MAG_FILTER_SHIFT 28 598 #define TM0S3_MIN_FILTER_MASK (0x3<<26) 599 #define TM0S3_MIN_FILTER_SHIFT 26 600 #define FILTER_NEAREST 0 601 #define FILTER_LINEAR 1 602 #define FILTER_ANISOTROPIC 2 603 604 #define TM0S3_LOD_BIAS_SHIFT 17 605 #define TM0S3_LOD_BIAS_MASK (0x1ff<<17) 606 #define TM0S3_MAX_MIP_SHIFT 9 607 #define TM0S3_MAX_MIP_MASK (0xff<<9) 608 #define TM0S3_MIN_MIP_SHIFT 3 609 #define TM0S3_MIN_MIP_MASK (0x3f<<3) 610 #define TM0S3_MIN_MIP_SHIFT_830 5 611 #define TM0S3_MIN_MIP_MASK_830 (0x3f<<5) 612 #define TM0S3_KILL_PIXEL (1<<2) 613 #define TM0S3_KEYED_FILTER (1<<1) 614 #define TM0S3_CHROMA_KEY (1<<0) 615 616 617 /* _3DSTATE_MAP_TEXEL_STREAM, p188 */ 618 #define _3DSTATE_MAP_TEX_STREAM_CMD (CMD_3D|(0x1c<<24)|(0x05<<19)) 619 #define DISABLE_TEX_STREAM_BUMP (1<<12) 620 #define ENABLE_TEX_STREAM_BUMP ((1<<12)|(1<<11)) 621 #define TEX_MODIFY_UNIT_0 0 622 #define TEX_MODIFY_UNIT_1 (1<<8) 623 #define ENABLE_TEX_STREAM_COORD_SET (1<<7) 624 #define TEX_STREAM_COORD_SET(x) ((x)<<4) 625 #define ENABLE_TEX_STREAM_MAP_IDX (1<<3) 626 #define TEX_STREAM_MAP_IDX(x) (x) 627 628 #endif 629