1/************************************************************************** 2 * 3 * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 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 TUNGSTEN GRAPHICS 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#define I830_SET_FIELD( var, mask, value ) (var &= ~(mask), var |= value) 33 34#define CMD_3D (0x3<<29) 35 36#define PRIM3D_INLINE (CMD_3D | (0x1f<<24)) 37#define PRIM3D_TRILIST (0x0<<18) 38#define PRIM3D_TRISTRIP (0x1<<18) 39#define PRIM3D_TRISTRIP_RVRSE (0x2<<18) 40#define PRIM3D_TRIFAN (0x3<<18) 41#define PRIM3D_POLY (0x4<<18) 42#define PRIM3D_LINELIST (0x5<<18) 43#define PRIM3D_LINESTRIP (0x6<<18) 44#define PRIM3D_RECTLIST (0x7<<18) 45#define PRIM3D_POINTLIST (0x8<<18) 46#define PRIM3D_DIB (0x9<<18) 47#define PRIM3D_CLEAR_RECT (0xa<<18) 48#define PRIM3D_ZONE_INIT (0xd<<18) 49#define PRIM3D_MASK (0x1f<<18) 50 51#define _3DSTATE_AA_CMD (CMD_3D | (0x06<<24)) 52#define AA_LINE_ECAAR_WIDTH_ENABLE (1<<16) 53#define AA_LINE_ECAAR_WIDTH_0_5 0 54#define AA_LINE_ECAAR_WIDTH_1_0 (1<<14) 55#define AA_LINE_ECAAR_WIDTH_2_0 (2<<14) 56#define AA_LINE_ECAAR_WIDTH_4_0 (3<<14) 57#define AA_LINE_REGION_WIDTH_ENABLE (1<<8) 58#define AA_LINE_REGION_WIDTH_0_5 0 59#define AA_LINE_REGION_WIDTH_1_0 (1<<6) 60#define AA_LINE_REGION_WIDTH_2_0 (2<<6) 61#define AA_LINE_REGION_WIDTH_4_0 (3<<6) 62#define AA_LINE_ENABLE ((1<<1) | 1) 63#define AA_LINE_DISABLE (1<<1) 64 65#define _3DSTATE_BUF_INFO_CMD (CMD_3D | (0x1d<<24) | (0x8e<<16) | 1) 66/* Dword 1 */ 67#define BUF_3D_ID_COLOR_BACK (0x3<<24) 68#define BUF_3D_ID_DEPTH (0x7<<24) 69#define BUF_3D_USE_FENCE (1<<23) 70#define BUF_3D_TILED_SURFACE (1<<22) 71#define BUF_3D_TILE_WALK_X 0 72#define BUF_3D_TILE_WALK_Y (1<<21) 73#define BUF_3D_PITCH(x) (((x)/4)<<2) 74/* Dword 2 */ 75#define BUF_3D_ADDR(x) ((x) & ~0x3) 76 77 78#define _3DSTATE_COLOR_FACTOR_CMD (CMD_3D | (0x1d<<24) | (0x1<<16)) 79 80#define _3DSTATE_COLOR_FACTOR_N_CMD(stage) (CMD_3D | (0x1d<<24) | \ 81 ((0x90+(stage))<<16)) 82 83#define _3DSTATE_CONST_BLEND_COLOR_CMD (CMD_3D | (0x1d<<24) | (0x88<<16)) 84 85#define _3DSTATE_DFLT_DIFFUSE_CMD (CMD_3D | (0x1d<<24) | (0x99<<16)) 86 87#define _3DSTATE_DFLT_SPEC_CMD (CMD_3D | (0x1d<<24) | (0x9a<<16)) 88 89#define _3DSTATE_DFLT_Z_CMD (CMD_3D | (0x1d<<24) | (0x98<<16)) 90 91 92#define _3DSTATE_DST_BUF_VARS_CMD (CMD_3D | (0x1d<<24) | (0x85<<16)) 93/* Dword 1 */ 94#define DSTORG_HORT_BIAS(x) ((x)<<20) 95#define DSTORG_VERT_BIAS(x) ((x)<<16) 96#define COLOR_4_2_2_CHNL_WRT_ALL 0 97#define COLOR_4_2_2_CHNL_WRT_Y (1<<12) 98#define COLOR_4_2_2_CHNL_WRT_CR (2<<12) 99#define COLOR_4_2_2_CHNL_WRT_CB (3<<12) 100#define COLOR_4_2_2_CHNL_WRT_CRCB (4<<12) 101#define COLR_BUF_8BIT 0 102#define COLR_BUF_RGB555 (1<<8) 103#define COLR_BUF_RGB565 (2<<8) 104#define COLR_BUF_ARGB8888 (3<<8) 105#define COLR_BUF_ARGB4444 (8<<8) 106#define COLR_BUF_ARGB1555 (9<<8) 107#define DEPTH_IS_Z 0 108#define DEPTH_IS_W (1<<6) 109#define DEPTH_FRMT_16_FIXED 0 110#define DEPTH_FRMT_16_FLOAT (1<<2) 111#define DEPTH_FRMT_24_FIXED_8_OTHER (2<<2) 112#define DEPTH_FRMT_24_FLOAT_8_OTHER (3<<2) 113#define VERT_LINE_STRIDE_1 (1<<1) 114#define VERT_LINE_STRIDE_0 0 115#define VERT_LINE_STRIDE_OFS_1 1 116#define VERT_LINE_STRIDE_OFS_0 0 117 118 119#define _3DSTATE_DRAW_RECT_CMD (CMD_3D|(0x1d<<24)|(0x80<<16)|3) 120/* Dword 1 */ 121#define DRAW_RECT_DIS_DEPTH_OFS (1<<30) 122#define DRAW_DITHER_OFS_X(x) ((x)<<26) 123#define DRAW_DITHER_OFS_Y(x) ((x)<<24) 124/* Dword 2 */ 125#define DRAW_YMIN(x) ((x)<<16) 126#define DRAW_XMIN(x) (x) 127/* Dword 3 */ 128#define DRAW_YMAX(x) ((x)<<16) 129#define DRAW_XMAX(x) (x) 130/* Dword 4 */ 131#define DRAW_YORG(x) ((x)<<16) 132#define DRAW_XORG(x) (x) 133 134 135#define _3DSTATE_ENABLES_1_CMD (CMD_3D|(0x3<<24)) 136#define ENABLE_LOGIC_OP_MASK ((1<<23)|(1<<22)) 137#define ENABLE_LOGIC_OP ((1<<23)|(1<<22)) 138#define DISABLE_LOGIC_OP (1<<23) 139#define ENABLE_STENCIL_TEST ((1<<21)|(1<<20)) 140#define DISABLE_STENCIL_TEST (1<<21) 141#define ENABLE_DEPTH_BIAS ((1<<11)|(1<<10)) 142#define DISABLE_DEPTH_BIAS (1<<11) 143#define ENABLE_SPEC_ADD_MASK ((1<<9)|(1<<8)) 144#define ENABLE_SPEC_ADD ((1<<9)|(1<<8)) 145#define DISABLE_SPEC_ADD (1<<9) 146#define ENABLE_DIS_FOG_MASK ((1<<7)|(1<<6)) 147#define ENABLE_FOG ((1<<7)|(1<<6)) 148#define DISABLE_FOG (1<<7) 149#define ENABLE_DIS_ALPHA_TEST_MASK ((1<<5)|(1<<4)) 150#define ENABLE_ALPHA_TEST ((1<<5)|(1<<4)) 151#define DISABLE_ALPHA_TEST (1<<5) 152#define ENABLE_DIS_CBLEND_MASK ((1<<3)|(1<<2)) 153#define ENABLE_COLOR_BLEND ((1<<3)|(1<<2)) 154#define DISABLE_COLOR_BLEND (1<<3) 155#define ENABLE_DIS_DEPTH_TEST_MASK ((1<<1)|1) 156#define ENABLE_DEPTH_TEST ((1<<1)|1) 157#define DISABLE_DEPTH_TEST (1<<1) 158 159/* _3DSTATE_ENABLES_2, p138 */ 160#define _3DSTATE_ENABLES_2_CMD (CMD_3D|(0x4<<24)) 161#define ENABLE_STENCIL_WRITE ((1<<21)|(1<<20)) 162#define DISABLE_STENCIL_WRITE (1<<21) 163#define ENABLE_TEX_CACHE ((1<<17)|(1<<16)) 164#define DISABLE_TEX_CACHE (1<<17) 165#define ENABLE_DITHER ((1<<9)|(1<<8)) 166#define DISABLE_DITHER (1<<9) 167#define ENABLE_COLOR_MASK (1<<10) 168#define WRITEMASK_ALPHA (1<<7) 169#define WRITEMASK_ALPHA_SHIFT 7 170#define WRITEMASK_RED (1<<6) 171#define WRITEMASK_RED_SHIFT 6 172#define WRITEMASK_GREEN (1<<5) 173#define WRITEMASK_GREEN_SHIFT 5 174#define WRITEMASK_BLUE (1<<4) 175#define WRITEMASK_BLUE_SHIFT 4 176#define WRITEMASK_MASK ((1<<4)|(1<<5)|(1<<6)|(1<<7)) 177#define ENABLE_COLOR_WRITE ((1<<3)|(1<<2)) 178#define DISABLE_COLOR_WRITE (1<<3) 179#define ENABLE_DIS_DEPTH_WRITE_MASK 0x3 180#define ENABLE_DEPTH_WRITE ((1<<1)|1) 181#define DISABLE_DEPTH_WRITE (1<<1) 182 183/* _3DSTATE_FOG_COLOR, p139 */ 184#define _3DSTATE_FOG_COLOR_CMD (CMD_3D|(0x15<<24)) 185#define FOG_COLOR_RED(x) ((x)<<16) 186#define FOG_COLOR_GREEN(x) ((x)<<8) 187#define FOG_COLOR_BLUE(x) (x) 188 189/* _3DSTATE_FOG_MODE, p140 */ 190#define _3DSTATE_FOG_MODE_CMD (CMD_3D|(0x1d<<24)|(0x89<<16)|2) 191/* Dword 1 */ 192#define FOGFUNC_ENABLE (1<<31) 193#define FOGFUNC_VERTEX 0 194#define FOGFUNC_PIXEL_EXP (1<<28) 195#define FOGFUNC_PIXEL_EXP2 (2<<28) 196#define FOGFUNC_PIXEL_LINEAR (3<<28) 197#define FOGSRC_INDEX_Z (1<<27) 198#define FOGSRC_INDEX_W ((1<<27)|(1<<25)) 199#define FOG_LINEAR_CONST (1<<24) 200#define FOG_CONST_1(x) ((x)<<4) 201#define ENABLE_FOG_DENSITY (1<<23) 202/* Dword 2 */ 203#define FOG_CONST_2(x) (x) 204/* Dword 3 */ 205#define FOG_DENSITY(x) (x) 206 207/* _3DSTATE_INDEPENDENT_ALPHA_BLEND, p142 */ 208#define _3DSTATE_INDPT_ALPHA_BLEND_CMD (CMD_3D|(0x0b<<24)) 209#define ENABLE_INDPT_ALPHA_BLEND ((1<<23)|(1<<22)) 210#define DISABLE_INDPT_ALPHA_BLEND (1<<23) 211#define ALPHA_BLENDFUNC_MASK 0x3f0000 212#define ENABLE_ALPHA_BLENDFUNC (1<<21) 213#define ABLENDFUNC_ADD 0 214#define ABLENDFUNC_SUB (1<<16) 215#define ABLENDFUNC_RVSE_SUB (2<<16) 216#define ABLENDFUNC_MIN (3<<16) 217#define ABLENDFUNC_MAX (4<<16) 218#define SRC_DST_ABLEND_MASK 0xfff 219#define ENABLE_SRC_ABLEND_FACTOR (1<<11) 220#define SRC_ABLEND_FACT(x) ((x)<<6) 221#define ENABLE_DST_ABLEND_FACTOR (1<<5) 222#define DST_ABLEND_FACT(x) (x) 223 224#define BLENDFACTOR_ZERO 0x01 225#define BLENDFACTOR_ONE 0x02 226#define BLENDFACTOR_SRC_COLR 0x03 227#define BLENDFACTOR_INV_SRC_COLR 0x04 228#define BLENDFACTOR_SRC_ALPHA 0x05 229#define BLENDFACTOR_INV_SRC_ALPHA 0x06 230#define BLENDFACTOR_DST_ALPHA 0x07 231#define BLENDFACTOR_INV_DST_ALPHA 0x08 232#define BLENDFACTOR_DST_COLR 0x09 233#define BLENDFACTOR_INV_DST_COLR 0x0a 234#define BLENDFACTOR_SRC_ALPHA_SATURATE 0x0b 235#define BLENDFACTOR_CONST_COLOR 0x0c 236#define BLENDFACTOR_INV_CONST_COLOR 0x0d 237#define BLENDFACTOR_CONST_ALPHA 0x0e 238#define BLENDFACTOR_INV_CONST_ALPHA 0x0f 239#define BLENDFACTOR_MASK 0x0f 240 241/* _3DSTATE_MAP_BLEND_ARG, p152 */ 242#define _3DSTATE_MAP_BLEND_ARG_CMD(stage) (CMD_3D|(0x0e<<24)|((stage)<<20)) 243 244#define TEXPIPE_COLOR 0 245#define TEXPIPE_ALPHA (1<<18) 246#define TEXPIPE_KILL (2<<18) 247#define TEXBLEND_ARG0 0 248#define TEXBLEND_ARG1 (1<<15) 249#define TEXBLEND_ARG2 (2<<15) 250#define TEXBLEND_ARG3 (3<<15) 251#define TEXBLENDARG_MODIFY_PARMS (1<<6) 252#define TEXBLENDARG_REPLICATE_ALPHA (1<<5) 253#define TEXBLENDARG_INV_ARG (1<<4) 254#define TEXBLENDARG_ONE 0 255#define TEXBLENDARG_FACTOR 0x01 256#define TEXBLENDARG_ACCUM 0x02 257#define TEXBLENDARG_DIFFUSE 0x03 258#define TEXBLENDARG_SPEC 0x04 259#define TEXBLENDARG_CURRENT 0x05 260#define TEXBLENDARG_TEXEL0 0x06 261#define TEXBLENDARG_TEXEL1 0x07 262#define TEXBLENDARG_TEXEL2 0x08 263#define TEXBLENDARG_TEXEL3 0x09 264#define TEXBLENDARG_FACTOR_N 0x0e 265 266/* _3DSTATE_MAP_BLEND_OP, p155 */ 267#define _3DSTATE_MAP_BLEND_OP_CMD(stage) (CMD_3D|(0x0d<<24)|((stage)<<20)) 268#if 0 269# define TEXPIPE_COLOR 0 270# define TEXPIPE_ALPHA (1<<18) 271# define TEXPIPE_KILL (2<<18) 272#endif 273#define ENABLE_TEXOUTPUT_WRT_SEL (1<<17) 274#define TEXOP_OUTPUT_CURRENT 0 275#define TEXOP_OUTPUT_ACCUM (1<<15) 276#define ENABLE_TEX_CNTRL_STAGE ((1<<12)|(1<<11)) 277#define DISABLE_TEX_CNTRL_STAGE (1<<12) 278#define TEXOP_SCALE_SHIFT 9 279#define TEXOP_SCALE_1X (0 << TEXOP_SCALE_SHIFT) 280#define TEXOP_SCALE_2X (1 << TEXOP_SCALE_SHIFT) 281#define TEXOP_SCALE_4X (2 << TEXOP_SCALE_SHIFT) 282#define TEXOP_MODIFY_PARMS (1<<8) 283#define TEXOP_LAST_STAGE (1<<7) 284#define TEXBLENDOP_KILLPIXEL 0x02 285#define TEXBLENDOP_ARG1 0x01 286#define TEXBLENDOP_ARG2 0x02 287#define TEXBLENDOP_MODULATE 0x03 288#define TEXBLENDOP_ADD 0x06 289#define TEXBLENDOP_ADDSIGNED 0x07 290#define TEXBLENDOP_BLEND 0x08 291#define TEXBLENDOP_BLEND_AND_ADD 0x09 292#define TEXBLENDOP_SUBTRACT 0x0a 293#define TEXBLENDOP_DOT3 0x0b 294#define TEXBLENDOP_DOT4 0x0c 295#define TEXBLENDOP_MODULATE_AND_ADD 0x0d 296#define TEXBLENDOP_MODULATE_2X_AND_ADD 0x0e 297#define TEXBLENDOP_MODULATE_4X_AND_ADD 0x0f 298 299/* _3DSTATE_MAP_BUMP_TABLE, p160 TODO */ 300/* _3DSTATE_MAP_COLOR_CHROMA_KEY, p161 TODO */ 301 302#define _3DSTATE_MAP_COORD_TRANSFORM ((3<<29)|(0x1d<<24)|(0x8c<<16)) 303#define DISABLE_TEX_TRANSFORM (1<<28) 304#define TEXTURE_SET(x) (x<<29) 305 306#define _3DSTATE_VERTEX_TRANSFORM ((3<<29)|(0x1d<<24)|(0x8b<<16)) 307#define DISABLE_VIEWPORT_TRANSFORM (1<<31) 308#define DISABLE_PERSPECTIVE_DIVIDE (1<<29) 309 310 311/* _3DSTATE_MAP_COORD_SET_BINDINGS, p162 */ 312#define _3DSTATE_MAP_COORD_SETBIND_CMD (CMD_3D|(0x1d<<24)|(0x02<<16)) 313#define TEXBIND_MASK3 ((1<<15)|(1<<14)|(1<<13)|(1<<12)) 314#define TEXBIND_MASK2 ((1<<11)|(1<<10)|(1<<9)|(1<<8)) 315#define TEXBIND_MASK1 ((1<<7)|(1<<6)|(1<<5)|(1<<4)) 316#define TEXBIND_MASK0 ((1<<3)|(1<<2)|(1<<1)|1) 317 318#define TEXBIND_SET3(x) ((x)<<12) 319#define TEXBIND_SET2(x) ((x)<<8) 320#define TEXBIND_SET1(x) ((x)<<4) 321#define TEXBIND_SET0(x) (x) 322 323#define TEXCOORDSRC_KEEP 0 324#define TEXCOORDSRC_DEFAULT 0x01 325#define TEXCOORDSRC_VTXSET_0 0x08 326#define TEXCOORDSRC_VTXSET_1 0x09 327#define TEXCOORDSRC_VTXSET_2 0x0a 328#define TEXCOORDSRC_VTXSET_3 0x0b 329#define TEXCOORDSRC_VTXSET_4 0x0c 330#define TEXCOORDSRC_VTXSET_5 0x0d 331#define TEXCOORDSRC_VTXSET_6 0x0e 332#define TEXCOORDSRC_VTXSET_7 0x0f 333 334#define MAP_UNIT(unit) ((unit)<<16) 335#define MAP_UNIT_MASK (0x7<<16) 336 337/* _3DSTATE_MAP_COORD_SETS, p164 */ 338#define _3DSTATE_MAP_COORD_SET_CMD (CMD_3D|(0x1c<<24)|(0x01<<19)) 339#define TEXCOORD_SET(n) ((n)<<16) 340#define ENABLE_TEXCOORD_PARAMS (1<<15) 341#define TEXCOORDS_ARE_NORMAL (1<<14) 342#define TEXCOORDS_ARE_IN_TEXELUNITS 0 343#define TEXCOORDTYPE_CARTESIAN 0 344#define TEXCOORDTYPE_HOMOGENEOUS (1<<11) 345#define TEXCOORDTYPE_VECTOR (2<<11) 346#define TEXCOORDTYPE_MASK (0x7<<11) 347#define ENABLE_ADDR_V_CNTL (1<<7) 348#define ENABLE_ADDR_U_CNTL (1<<3) 349#define TEXCOORD_ADDR_V_MODE(x) ((x)<<4) 350#define TEXCOORD_ADDR_U_MODE(x) (x) 351#define TEXCOORDMODE_WRAP 0 352#define TEXCOORDMODE_MIRROR 1 353#define TEXCOORDMODE_CLAMP 2 354#define TEXCOORDMODE_WRAP_SHORTEST 3 355#define TEXCOORDMODE_CLAMP_BORDER 4 356#define TEXCOORD_ADDR_V_MASK 0x70 357#define TEXCOORD_ADDR_U_MASK 0x7 358 359/* _3DSTATE_MAP_CUBE, p168 TODO */ 360#define _3DSTATE_MAP_CUBE (CMD_3D|(0x1c<<24)|(0x0a<<19)) 361#define CUBE_NEGX_ENABLE (1<<5) 362#define CUBE_POSX_ENABLE (1<<4) 363#define CUBE_NEGY_ENABLE (1<<3) 364#define CUBE_POSY_ENABLE (1<<2) 365#define CUBE_NEGZ_ENABLE (1<<1) 366#define CUBE_POSZ_ENABLE (1<<0) 367 368#define _3DSTATE_MAP_INFO_CMD (CMD_3D|(0x1d<<24)|(0x0<<16)|3) 369#define TEXMAP_INDEX(x) ((x)<<28) 370#define MAP_SURFACE_8BIT (1<<24) 371#define MAP_SURFACE_16BIT (2<<24) 372#define MAP_SURFACE_32BIT (3<<24) 373#define MAP_FORMAT_2D (0) 374#define MAP_FORMAT_3D_CUBE (1<<11) 375 376/* _3DSTATE_MODES_1, p190 */ 377#define _3DSTATE_MODES_1_CMD (CMD_3D|(0x08<<24)) 378#define BLENDFUNC_MASK 0x3f0000 379#define ENABLE_COLR_BLND_FUNC (1<<21) 380#define BLENDFUNC_ADD 0 381#define BLENDFUNC_SUB (1<<16) 382#define BLENDFUNC_RVRSE_SUB (2<<16) 383#define BLENDFUNC_MIN (3<<16) 384#define BLENDFUNC_MAX (4<<16) 385#define SRC_DST_BLND_MASK 0xfff 386#define ENABLE_SRC_BLND_FACTOR (1<<11) 387#define ENABLE_DST_BLND_FACTOR (1<<5) 388#define SRC_BLND_FACT(x) ((x)<<6) 389#define DST_BLND_FACT(x) (x) 390 391 392/* _3DSTATE_MODES_2, p192 */ 393#define _3DSTATE_MODES_2_CMD (CMD_3D|(0x0f<<24)) 394#define ENABLE_GLOBAL_DEPTH_BIAS (1<<22) 395#define GLOBAL_DEPTH_BIAS(x) ((x)<<14) 396#define ENABLE_ALPHA_TEST_FUNC (1<<13) 397#define ENABLE_ALPHA_REF_VALUE (1<<8) 398#define ALPHA_TEST_FUNC(x) ((x)<<9) 399#define ALPHA_REF_VALUE(x) (x) 400 401#define ALPHA_TEST_REF_MASK 0x3fff 402 403/* _3DSTATE_MODES_3, p193 */ 404#define _3DSTATE_MODES_3_CMD (CMD_3D|(0x02<<24)) 405#define DEPTH_TEST_FUNC_MASK 0x1f0000 406#define ENABLE_DEPTH_TEST_FUNC (1<<20) 407/* Uses COMPAREFUNC */ 408#define DEPTH_TEST_FUNC(x) ((x)<<16) 409#define ENABLE_ALPHA_SHADE_MODE (1<<11) 410#define ENABLE_FOG_SHADE_MODE (1<<9) 411#define ENABLE_SPEC_SHADE_MODE (1<<7) 412#define ENABLE_COLOR_SHADE_MODE (1<<5) 413#define ALPHA_SHADE_MODE(x) ((x)<<10) 414#define FOG_SHADE_MODE(x) ((x)<<8) 415#define SPEC_SHADE_MODE(x) ((x)<<6) 416#define COLOR_SHADE_MODE(x) ((x)<<4) 417#define CULLMODE_MASK 0xf 418#define ENABLE_CULL_MODE (1<<3) 419#define CULLMODE_BOTH 0 420#define CULLMODE_NONE 1 421#define CULLMODE_CW 2 422#define CULLMODE_CCW 3 423 424#define SHADE_MODE_LINEAR 0 425#define SHADE_MODE_FLAT 0x1 426 427/* _3DSTATE_MODES_4, p195 */ 428#define _3DSTATE_MODES_4_CMD (CMD_3D|(0x16<<24)) 429#define ENABLE_LOGIC_OP_FUNC (1<<23) 430#define LOGIC_OP_FUNC(x) ((x)<<18) 431#define LOGICOP_MASK ((1<<18)|(1<<19)|(1<<20)|(1<<21)) 432#define LOGICOP_CLEAR 0 433#define LOGICOP_NOR 0x1 434#define LOGICOP_AND_INV 0x2 435#define LOGICOP_COPY_INV 0x3 436#define LOGICOP_AND_RVRSE 0x4 437#define LOGICOP_INV 0x5 438#define LOGICOP_XOR 0x6 439#define LOGICOP_NAND 0x7 440#define LOGICOP_AND 0x8 441#define LOGICOP_EQUIV 0x9 442#define LOGICOP_NOOP 0xa 443#define LOGICOP_OR_INV 0xb 444#define LOGICOP_COPY 0xc 445#define LOGICOP_OR_RVRSE 0xd 446#define LOGICOP_OR 0xe 447#define LOGICOP_SET 0xf 448#define MODE4_ENABLE_STENCIL_TEST_MASK ((1<<17)|(0xff00)) 449#define ENABLE_STENCIL_TEST_MASK (1<<17) 450#define STENCIL_TEST_MASK(x) ((x)<<8) 451#define MODE4_ENABLE_STENCIL_WRITE_MASK ((1<<16)|(0x00ff)) 452#define ENABLE_STENCIL_WRITE_MASK (1<<16) 453#define STENCIL_WRITE_MASK(x) ((x)&0xff) 454 455/* _3DSTATE_MODES_5, p196 */ 456#define _3DSTATE_MODES_5_CMD (CMD_3D|(0x0c<<24)) 457#define ENABLE_SPRITE_POINT_TEX (1<<23) 458#define SPRITE_POINT_TEX_ON (1<<22) 459#define SPRITE_POINT_TEX_OFF 0 460#define FLUSH_RENDER_CACHE (1<<18) 461#define FLUSH_TEXTURE_CACHE (1<<16) 462#define FIXED_LINE_WIDTH_MASK 0xfc00 463#define ENABLE_FIXED_LINE_WIDTH (1<<15) 464#define FIXED_LINE_WIDTH(x) ((x)<<10) 465#define FIXED_POINT_WIDTH_MASK 0x3ff 466#define ENABLE_FIXED_POINT_WIDTH (1<<9) 467#define FIXED_POINT_WIDTH(x) (x) 468 469/* _3DSTATE_RASTERIZATION_RULES, p198 */ 470#define _3DSTATE_RASTER_RULES_CMD (CMD_3D|(0x07<<24)) 471#define ENABLE_POINT_RASTER_RULE (1<<15) 472#define OGL_POINT_RASTER_RULE (1<<13) 473#define ENABLE_LINE_STRIP_PROVOKE_VRTX (1<<8) 474#define ENABLE_TRI_FAN_PROVOKE_VRTX (1<<5) 475#define ENABLE_TRI_STRIP_PROVOKE_VRTX (1<<2) 476#define LINE_STRIP_PROVOKE_VRTX(x) ((x)<<6) 477#define TRI_FAN_PROVOKE_VRTX(x) ((x)<<3) 478#define TRI_STRIP_PROVOKE_VRTX(x) (x) 479 480/* _3DSTATE_SCISSOR_ENABLE, p200 */ 481#define _3DSTATE_SCISSOR_ENABLE_CMD (CMD_3D|(0x1c<<24)|(0x10<<19)) 482#define ENABLE_SCISSOR_RECT ((1<<1) | 1) 483#define DISABLE_SCISSOR_RECT (1<<1) 484 485/* _3DSTATE_SCISSOR_RECTANGLE_0, p201 */ 486#define _3DSTATE_SCISSOR_RECT_0_CMD (CMD_3D|(0x1d<<24)|(0x81<<16)|1) 487/* Dword 1 */ 488#define SCISSOR_RECT_0_YMIN(x) ((x)<<16) 489#define SCISSOR_RECT_0_XMIN(x) (x) 490/* Dword 2 */ 491#define SCISSOR_RECT_0_YMAX(x) ((x)<<16) 492#define SCISSOR_RECT_0_XMAX(x) (x) 493 494/* _3DSTATE_STENCIL_TEST, p202 */ 495#define _3DSTATE_STENCIL_TEST_CMD (CMD_3D|(0x09<<24)) 496#define ENABLE_STENCIL_PARMS (1<<23) 497#define STENCIL_OPS_MASK (0xffc000) 498#define STENCIL_FAIL_OP(x) ((x)<<20) 499#define STENCIL_PASS_DEPTH_FAIL_OP(x) ((x)<<17) 500#define STENCIL_PASS_DEPTH_PASS_OP(x) ((x)<<14) 501 502#define ENABLE_STENCIL_TEST_FUNC_MASK ((1<<13)|(1<<12)|(1<<11)|(1<<10)|(1<<9)) 503#define ENABLE_STENCIL_TEST_FUNC (1<<13) 504/* Uses COMPAREFUNC */ 505#define STENCIL_TEST_FUNC(x) ((x)<<9) 506#define STENCIL_REF_VALUE_MASK ((1<<8)|0xff) 507#define ENABLE_STENCIL_REF_VALUE (1<<8) 508#define STENCIL_REF_VALUE(x) (x) 509 510/* _3DSTATE_VERTEX_FORMAT, p204 */ 511#define _3DSTATE_VFT0_CMD (CMD_3D|(0x05<<24)) 512#define VFT0_POINT_WIDTH (1<<12) 513#define VFT0_TEX_COUNT_MASK (7<<8) 514#define VFT0_TEX_COUNT_SHIFT 8 515#define VFT0_TEX_COUNT(x) ((x)<<8) 516#define VFT0_SPEC (1<<7) 517#define VFT0_DIFFUSE (1<<6) 518#define VFT0_DEPTH_OFFSET (1<<5) 519#define VFT0_XYZ (1<<1) 520#define VFT0_XYZW (2<<1) 521#define VFT0_XY (3<<1) 522#define VFT0_XYW (4<<1) 523#define VFT0_XYZW_MASK (7<<1) 524 525/* _3DSTATE_VERTEX_FORMAT_2, p206 */ 526#define _3DSTATE_VERTEX_FORMAT_2_CMD (CMD_3D|(0x0a<<24)) 527#define VFT1_TEX7_FMT(x) ((x)<<14) 528#define VFT1_TEX6_FMT(x) ((x)<<12) 529#define VFT1_TEX5_FMT(x) ((x)<<10) 530#define VFT1_TEX4_FMT(x) ((x)<<8) 531#define VFT1_TEX3_FMT(x) ((x)<<6) 532#define VFT1_TEX2_FMT(x) ((x)<<4) 533#define VFT1_TEX1_FMT(x) ((x)<<2) 534#define VFT1_TEX0_FMT(x) (x) 535#define VFT1_TEX0_MASK 3 536#define VFT1_TEX1_SHIFT 2 537#define TEXCOORDFMT_2D 0 538#define TEXCOORDFMT_3D 1 539#define TEXCOORDFMT_4D 2 540#define TEXCOORDFMT_1D 3 541 542/*New stuff picked up along the way */ 543 544#define MLC_LOD_BIAS_MASK ((1<<7)-1) 545 546 547/* _3DSTATE_VERTEX_TRANSFORM, p207 */ 548#define _3DSTATE_VERTEX_TRANS_CMD (CMD_3D|(0x1d<<24)|(0x8b<<16)|0) 549#define _3DSTATE_VERTEX_TRANS_MTX_CMD (CMD_3D|(0x1d<<24)|(0x8b<<16)|6) 550/* Dword 1 */ 551#define ENABLE_VIEWPORT_TRANSFORM ((1<<31)|(1<<30)) 552#define DISABLE_VIEWPORT_TRANSFORM (1<<31) 553#define ENABLE_PERSP_DIVIDE ((1<<29)|(1<<28)) 554#define DISABLE_PERSP_DIVIDE (1<<29) 555#define VRTX_TRANS_LOAD_MATRICES 0x7421 556#define VRTX_TRANS_NO_LOAD_MATRICES 0x0000 557/* Dword 2 -> 7 are matrix elements */ 558 559/* _3DSTATE_W_STATE, p209 */ 560#define _3DSTATE_W_STATE_CMD (CMD_3D|(0x1d<<24)|(0x8d<<16)|1) 561/* Dword 1 */ 562#define MAGIC_W_STATE_DWORD1 0x00000008 563/* Dword 2 */ 564#define WFAR_VALUE(x) (x) 565 566 567/* Stipple command, carried over from the i810, apparently: 568 */ 569#define _3DSTATE_STIPPLE (CMD_3D|(0x1d<<24)|(0x83<<16)) 570#define ST1_ENABLE (1<<16) 571#define ST1_MASK (0xffff) 572 573#define _3DSTATE_LOAD_STATE_IMMEDIATE_1 (CMD_3D|(0x1d<<24)|(0x04<<16)) 574#define I1_LOAD_S(n) (1<<((n)+4)) 575#define S3_POINT_WIDTH_SHIFT 23 576#define S3_LINE_WIDTH_SHIFT 19 577#define S3_ALPHA_SHADE_MODE_SHIFT 18 578#define S3_FOG_SHADE_MODE_SHIFT 17 579#define S3_SPEC_SHADE_MODE_SHIFT 16 580#define S3_COLOR_SHADE_MODE_SHIFT 15 581#define S3_CULL_MODE_SHIFT 13 582#define S3_CULLMODE_BOTH (0) 583#define S3_CULLMODE_NONE (1<<13) 584#define S3_CULLMODE_CW (2<<13) 585#define S3_CULLMODE_CCW (3<<13) 586#define S3_POINT_WIDTH_PRESENT (1<<12) 587#define S3_SPEC_FOG_PRESENT (1<<11) 588#define S3_DIFFUSE_PRESENT (1<<10) 589#define S3_DEPTH_OFFSET_PRESENT (1<<9) 590#define S3_POSITION_SHIFT 6 591#define S3_VERTEXHAS_XYZ (1<<6) 592#define S3_VERTEXHAS_XYZW (2<<6) 593#define S3_VERTEXHAS_XY (3<<6) 594#define S3_VERTEXHAS_XYW (4<<6) 595#define S3_ENABLE_SPEC_ADD (1<<5) 596#define S3_ENABLE_FOG (1<<4) 597#define S3_ENABLE_LOCAL_DEPTH_BIAS (1<<3) 598#define S3_ENABLE_SPRITE_POINT (1<<1) 599#define S3_ENABLE_ANTIALIASING 1 600#define S8_ENABLE_ALPHA_TEST (1<<31) 601#define S8_ALPHA_TEST_FUNC_SHIFT 28 602#define S8_ALPHA_REFVALUE_SHIFT 20 603#define S8_ENABLE_DEPTH_TEST (1<<19) 604#define S8_DEPTH_TEST_FUNC_SHIFT 16 605#define S8_ENABLE_COLOR_BLEND (1<<15) 606#define S8_COLOR_BLEND_FUNC_SHIFT 12 607#define S8_BLENDFUNC_ADD (0) 608#define S8_BLENDFUNC_SUB (1<<12) 609#define S8_BLENDFUNC_RVRSE_SUB (2<<12) 610#define S8_BLENDFUNC_MIN (3<<12) 611#define S8_BLENDFUNC_MAX (4<<12) 612#define S8_SRC_BLEND_FACTOR_SHIFT 8 613#define S8_DST_BLEND_FACTOR_SHIFT 4 614#define S8_ENABLE_DEPTH_BUFFER_WRITE (1<<3) 615#define S8_ENABLE_COLOR_BUFFER_WRITE (1<<2) 616 617#define _3DSTATE_LOAD_STATE_IMMEDIATE_2 (CMD_3D|(0x1d<<24)|(0x03<<16)) 618#define LOAD_TEXTURE_MAP(x) (1<<((x)+11)) 619#define LOAD_TEXTURE_BLEND_STAGE(x) (1<<((x)+7)) 620#define LOAD_GLOBAL_COLOR_FACTOR (1<<6) 621 622#define TM0S0_ADDRESS_MASK 0xfffffffc 623#define TM0S0_USE_FENCE (1<<1) 624 625#define TM0S1_HEIGHT_SHIFT 21 626#define TM0S1_WIDTH_SHIFT 10 627#define TM0S1_PALETTE_SELECT (1<<9) 628#define TM0S1_MAPSURF_FORMAT_MASK (0x7 << 6) 629#define TM0S1_MAPSURF_FORMAT_SHIFT 6 630#define MAPSURF_8BIT_INDEXED (0<<6) 631#define MAPSURF_8BIT (1<<6) 632#define MAPSURF_16BIT (2<<6) 633#define MAPSURF_32BIT (3<<6) 634#define MAPSURF_411 (4<<6) 635#define MAPSURF_422 (5<<6) 636#define MAPSURF_COMPRESSED (6<<6) 637#define MAPSURF_4BIT_INDEXED (7<<6) 638#define TM0S1_MT_FORMAT_MASK (0x7 << 3) 639#define TM0S1_MT_FORMAT_SHIFT 3 640#define MT_4BIT_IDX_ARGB8888 (7<<3) /* SURFACE_4BIT_INDEXED */ 641#define MT_8BIT_IDX_RGB565 (0<<3) /* SURFACE_8BIT_INDEXED */ 642#define MT_8BIT_IDX_ARGB1555 (1<<3) 643#define MT_8BIT_IDX_ARGB4444 (2<<3) 644#define MT_8BIT_IDX_AY88 (3<<3) 645#define MT_8BIT_IDX_ABGR8888 (4<<3) 646#define MT_8BIT_IDX_BUMP_88DVDU (5<<3) 647#define MT_8BIT_IDX_BUMP_655LDVDU (6<<3) 648#define MT_8BIT_IDX_ARGB8888 (7<<3) 649#define MT_8BIT_I8 (0<<3) /* SURFACE_8BIT */ 650#define MT_8BIT_L8 (1<<3) 651#define MT_8BIT_A8 (4<<3) 652#define MT_16BIT_RGB565 (0<<3) /* SURFACE_16BIT */ 653#define MT_16BIT_ARGB1555 (1<<3) 654#define MT_16BIT_ARGB4444 (2<<3) 655#define MT_16BIT_AY88 (3<<3) 656#define MT_16BIT_DIB_ARGB1555_8888 (4<<3) 657#define MT_16BIT_BUMP_88DVDU (5<<3) 658#define MT_16BIT_BUMP_655LDVDU (6<<3) 659#define MT_16BIT_DIB_RGB565_8888 (7<<3) 660#define MT_32BIT_ARGB8888 (0<<3) /* SURFACE_32BIT */ 661#define MT_32BIT_ABGR8888 (1<<3) 662#define MT_32BIT_XRGB8888 (2<<3) 663#define MT_32BIT_XBGR8888 (3<<3) 664#define MT_32BIT_BUMP_XLDVDU_8888 (6<<3) 665#define MT_32BIT_DIB_8888 (7<<3) 666#define MT_411_YUV411 (0<<3) /* SURFACE_411 */ 667#define MT_422_YCRCB_SWAPY (0<<3) /* SURFACE_422 */ 668#define MT_422_YCRCB_NORMAL (1<<3) 669#define MT_422_YCRCB_SWAPUV (2<<3) 670#define MT_422_YCRCB_SWAPUVY (3<<3) 671#define MT_COMPRESS_DXT1 (0<<3) /* SURFACE_COMPRESSED */ 672#define MT_COMPRESS_DXT2_3 (1<<3) 673#define MT_COMPRESS_DXT4_5 (2<<3) 674#define MT_COMPRESS_FXT1 (3<<3) 675#define TM0S1_COLORSPACE_CONVERSION (1 << 2) 676#define TM0S1_TILED_SURFACE (1 << 1) 677#define TM0S1_TILE_WALK (1 << 0) 678 679#define TM0S2_PITCH_SHIFT 21 680#define TM0S2_CUBE_FACE_ENA_SHIFT 15 681#define TM0S2_CUBE_FACE_ENA_MASK (1<<15) 682#define TM0S2_MAP_FORMAT (1<<14) 683#define TM0S2_MAP_2D (0<<14) 684#define TM0S2_MAP_3D_CUBE (1<<14) 685#define TM0S2_VERTICAL_LINE_STRIDE (1<<13) 686#define TM0S2_VERITCAL_LINE_STRIDE_OFF (1<<12) 687#define TM0S2_OUTPUT_CHAN_SHIFT 10 688#define TM0S2_OUTPUT_CHAN_MASK (3<<10) 689 690#define TM0S3_MIP_FILTER_MASK (0x3<<30) 691#define TM0S3_MIP_FILTER_SHIFT 30 692#define MIPFILTER_NONE 0 693#define MIPFILTER_NEAREST 1 694#define MIPFILTER_LINEAR 3 695#define TM0S3_MAG_FILTER_MASK (0x3<<28) 696#define TM0S3_MAG_FILTER_SHIFT 28 697#define TM0S3_MIN_FILTER_MASK (0x3<<26) 698#define TM0S3_MIN_FILTER_SHIFT 26 699#define FILTER_NEAREST 0 700#define FILTER_LINEAR 1 701#define FILTER_ANISOTROPIC 2 702 703#define TM0S3_LOD_BIAS_SHIFT 17 704#define TM0S3_LOD_BIAS_MASK (0x1ff<<17) 705#define TM0S3_MAX_MIP_SHIFT 9 706#define TM0S3_MAX_MIP_MASK (0xff<<9) 707#define TM0S3_MIN_MIP_SHIFT 3 708#define TM0S3_MIN_MIP_MASK (0x3f<<3) 709#define TM0S3_KILL_PIXEL (1<<2) 710#define TM0S3_KEYED_FILTER (1<<1) 711#define TM0S3_CHROMA_KEY (1<<0) 712 713 714/* _3DSTATE_MAP_TEXEL_STREAM, p188 */ 715#define _3DSTATE_MAP_TEX_STREAM_CMD (CMD_3D|(0x1c<<24)|(0x05<<19)) 716#define DISABLE_TEX_STREAM_BUMP (1<<12) 717#define ENABLE_TEX_STREAM_BUMP ((1<<12)|(1<<11)) 718#define TEX_MODIFY_UNIT_0 0 719#define TEX_MODIFY_UNIT_1 (1<<8) 720#define ENABLE_TEX_STREAM_COORD_SET (1<<7) 721#define TEX_STREAM_COORD_SET(x) ((x)<<4) 722#define ENABLE_TEX_STREAM_MAP_IDX (1<<3) 723#define TEX_STREAM_MAP_IDX(x) (x) 724 725 726#define FLUSH_MAP_CACHE (1<<0) 727 728#define _3DSTATE_MAP_FILTER_CMD (CMD_3D|(0x1c<<24)|(0x02<<19)) 729#define FILTER_TEXMAP_INDEX(x) ((x) << 16) 730#define MAG_MODE_FILTER_ENABLE (1 << 5) 731#define MIN_MODE_FILTER_ENABLE (1 << 2) 732#define MAG_MAPFILTER_NEAREST (0 << 3) 733#define MAG_MAPFILTER_LINEAR (1 << 3) 734#define MAG_MAPFILTER_ANISOTROPIC (2 << 3) 735#define MIN_MAPFILTER_NEAREST (0) 736#define MIN_MAPFILTER_LINEAR (1) 737#define MIN_MAPFILTER_ANISOTROPIC (2) 738#define ENABLE_KEYS (1<<15) 739#define DISABLE_COLOR_KEY 0 740#define DISABLE_CHROMA_KEY 0 741#define DISABLE_KILL_PIXEL 0 742#define ENABLE_MIP_MODE_FILTER (1 << 9) 743#define MIPFILTER_NONE 0 744#define MIPFILTER_NEAREST 1 745#define MIPFILTER_LINEAR 3 746 747#endif 748