1428d7b3dSmrg/************************************************************************** 2428d7b3dSmrg * 3428d7b3dSmrg * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 4428d7b3dSmrg * All Rights Reserved. 5428d7b3dSmrg * 6428d7b3dSmrg * Permission is hereby granted, free of charge, to any person obtaining a 7428d7b3dSmrg * copy of this software and associated documentation files (the 8428d7b3dSmrg * "Software"), to deal in the Software without restriction, including 9428d7b3dSmrg * without limitation the rights to use, copy, modify, merge, publish, 10428d7b3dSmrg * distribute, sub license, and/or sell copies of the Software, and to 11428d7b3dSmrg * permit persons to whom the Software is furnished to do so, subject to 12428d7b3dSmrg * the following conditions: 13428d7b3dSmrg * 14428d7b3dSmrg * The above copyright notice and this permission notice (including the 15428d7b3dSmrg * next paragraph) shall be included in all copies or substantial portions 16428d7b3dSmrg * of the Software. 17428d7b3dSmrg * 18428d7b3dSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19428d7b3dSmrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20428d7b3dSmrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21428d7b3dSmrg * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22428d7b3dSmrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23428d7b3dSmrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24428d7b3dSmrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25428d7b3dSmrg * 26428d7b3dSmrg **************************************************************************/ 27428d7b3dSmrg 28428d7b3dSmrg#ifndef GEN2_RENDER_H 29428d7b3dSmrg#define GEN2_RENDER_H 30428d7b3dSmrg 31428d7b3dSmrg#define CMD_3D (0x3<<29) 32428d7b3dSmrg 33428d7b3dSmrg#define PRIM3D_INLINE (CMD_3D | (0x1f<<24)) 34428d7b3dSmrg#define PRIM3D_TRILIST (0x0<<18) 35428d7b3dSmrg#define PRIM3D_TRISTRIP (0x1<<18) 36428d7b3dSmrg#define PRIM3D_TRISTRIP_RVRSE (0x2<<18) 37428d7b3dSmrg#define PRIM3D_TRIFAN (0x3<<18) 38428d7b3dSmrg#define PRIM3D_POLY (0x4<<18) 39428d7b3dSmrg#define PRIM3D_LINELIST (0x5<<18) 40428d7b3dSmrg#define PRIM3D_LINESTRIP (0x6<<18) 41428d7b3dSmrg#define PRIM3D_RECTLIST (0x7<<18) 42428d7b3dSmrg#define PRIM3D_POINTLIST (0x8<<18) 43428d7b3dSmrg#define PRIM3D_DIB (0x9<<18) 44428d7b3dSmrg#define PRIM3D_CLEAR_RECT (0xa<<18) 45428d7b3dSmrg#define PRIM3D_ZONE_INIT (0xd<<18) 46428d7b3dSmrg#define PRIM3D_MASK (0x1f<<18) 47428d7b3dSmrg 48428d7b3dSmrg#define _3DSTATE_AA_CMD (CMD_3D | (0x06<<24)) 49428d7b3dSmrg#define AA_LINE_ECAAR_WIDTH_ENABLE (1<<16) 50428d7b3dSmrg#define AA_LINE_ECAAR_WIDTH_0_5 0 51428d7b3dSmrg#define AA_LINE_ECAAR_WIDTH_1_0 (1<<14) 52428d7b3dSmrg#define AA_LINE_ECAAR_WIDTH_2_0 (2<<14) 53428d7b3dSmrg#define AA_LINE_ECAAR_WIDTH_4_0 (3<<14) 54428d7b3dSmrg#define AA_LINE_REGION_WIDTH_ENABLE (1<<8) 55428d7b3dSmrg#define AA_LINE_REGION_WIDTH_0_5 0 56428d7b3dSmrg#define AA_LINE_REGION_WIDTH_1_0 (1<<6) 57428d7b3dSmrg#define AA_LINE_REGION_WIDTH_2_0 (2<<6) 58428d7b3dSmrg#define AA_LINE_REGION_WIDTH_4_0 (3<<6) 59428d7b3dSmrg#define AA_LINE_ENABLE ((1<<1) | 1) 60428d7b3dSmrg#define AA_LINE_DISABLE (1<<1) 61428d7b3dSmrg 62428d7b3dSmrg#define _3DSTATE_BUF_INFO_CMD (CMD_3D | (0x1d<<24) | (0x8e<<16) | 1) 63428d7b3dSmrg/* Dword 1 */ 64428d7b3dSmrg#define BUF_3D_ID_COLOR_BACK (0x3<<24) 65428d7b3dSmrg#define BUF_3D_ID_DEPTH (0x7<<24) 66428d7b3dSmrg#define BUF_3D_USE_FENCE (1<<23) 67428d7b3dSmrg#define BUF_3D_TILED_SURFACE (1<<22) 68428d7b3dSmrg#define BUF_3D_TILE_WALK_X 0 69428d7b3dSmrg#define BUF_3D_TILE_WALK_Y (1<<21) 70428d7b3dSmrg#define BUF_3D_PITCH(x) (((x)/4)<<2) 71428d7b3dSmrg/* Dword 2 */ 72428d7b3dSmrg#define BUF_3D_ADDR(x) ((x) & ~0x3) 73428d7b3dSmrg 74428d7b3dSmrg#define _3DSTATE_COLOR_FACTOR_CMD (CMD_3D | (0x1d<<24) | (0x1<<16)) 75428d7b3dSmrg 76428d7b3dSmrg#define _3DSTATE_COLOR_FACTOR_N_CMD(stage) (CMD_3D | (0x1d<<24) | \ 77428d7b3dSmrg ((0x90+(stage))<<16)) 78428d7b3dSmrg 79428d7b3dSmrg#define _3DSTATE_CONST_BLEND_COLOR_CMD (CMD_3D | (0x1d<<24) | (0x88<<16)) 80428d7b3dSmrg 81428d7b3dSmrg#define _3DSTATE_DFLT_DIFFUSE_CMD (CMD_3D | (0x1d<<24) | (0x99<<16)) 82428d7b3dSmrg 83428d7b3dSmrg#define _3DSTATE_DFLT_SPECULAR_CMD (CMD_3D | (0x1d<<24) | (0x9a<<16)) 84428d7b3dSmrg 85428d7b3dSmrg#define _3DSTATE_DFLT_Z_CMD (CMD_3D | (0x1d<<24) | (0x98<<16)) 86428d7b3dSmrg 87428d7b3dSmrg#define _3DSTATE_DST_BUF_VARS_CMD (CMD_3D | (0x1d<<24) | (0x85<<16)) 88428d7b3dSmrg/* Dword 1 */ 89428d7b3dSmrg#define DSTORG_HORT_BIAS(x) ((x)<<20) 90428d7b3dSmrg#define DSTORG_VERT_BIAS(x) ((x)<<16) 91428d7b3dSmrg#define COLOR_4_2_2_CHNL_WRT_ALL 0 92428d7b3dSmrg#define COLOR_4_2_2_CHNL_WRT_Y (1<<12) 93428d7b3dSmrg#define COLOR_4_2_2_CHNL_WRT_CR (2<<12) 94428d7b3dSmrg#define COLOR_4_2_2_CHNL_WRT_CB (3<<12) 95428d7b3dSmrg#define COLOR_4_2_2_CHNL_WRT_CRCB (4<<12) 96428d7b3dSmrg#define COLR_BUF_8BIT 0 97428d7b3dSmrg#define COLR_BUF_RGB555 (1<<8) 98428d7b3dSmrg#define COLR_BUF_RGB565 (2<<8) 99428d7b3dSmrg#define COLR_BUF_ARGB8888 (3<<8) 100428d7b3dSmrg#define COLR_BUF_ARGB4444 (8<<8) 101428d7b3dSmrg#define COLR_BUF_ARGB1555 (9<<8) 102428d7b3dSmrg#define DEPTH_IS_Z 0 103428d7b3dSmrg#define DEPTH_IS_W (1<<6) 104428d7b3dSmrg#define DEPTH_FRMT_16_FIXED 0 105428d7b3dSmrg#define DEPTH_FRMT_16_FLOAT (1<<2) 106428d7b3dSmrg#define DEPTH_FRMT_24_FIXED_8_OTHER (2<<2) 107428d7b3dSmrg#define DEPTH_FRMT_24_FLOAT_8_OTHER (3<<2) 108428d7b3dSmrg#define VERT_LINE_STRIDE_1 (1<<1) 109428d7b3dSmrg#define VERT_LINE_STRIDE_0 0 110428d7b3dSmrg#define VERT_LINE_STRIDE_OFS_1 1 111428d7b3dSmrg#define VERT_LINE_STRIDE_OFS_0 0 112428d7b3dSmrg 113428d7b3dSmrg#define _3DSTATE_DRAW_RECT_CMD (CMD_3D|(0x1d<<24)|(0x80<<16)|3) 114428d7b3dSmrg/* Dword 1 */ 115428d7b3dSmrg#define DRAW_RECT_DIS_DEPTH_OFS (1<<30) 116428d7b3dSmrg#define DRAW_DITHER_OFS_X(x) ((x)<<26) 117428d7b3dSmrg#define DRAW_DITHER_OFS_Y(x) ((x)<<24) 118428d7b3dSmrg/* Dword 2 */ 119428d7b3dSmrg#define DRAW_YMIN(x) ((x)<<16) 120428d7b3dSmrg#define DRAW_XMIN(x) (x) 121428d7b3dSmrg/* Dword 3 */ 122428d7b3dSmrg#define DRAW_YMAX(x) ((x)<<16) 123428d7b3dSmrg#define DRAW_XMAX(x) (x) 124428d7b3dSmrg/* Dword 4 */ 125428d7b3dSmrg#define DRAW_YORG(x) ((x)<<16) 126428d7b3dSmrg#define DRAW_XORG(x) (x) 127428d7b3dSmrg 128428d7b3dSmrg#define _3DSTATE_ENABLES_1_CMD (CMD_3D|(0x3<<24)) 129428d7b3dSmrg#define ENABLE_LOGIC_OP_MASK ((1<<23)|(1<<22)) 130428d7b3dSmrg#define ENABLE_LOGIC_OP ((1<<23)|(1<<22)) 131428d7b3dSmrg#define DISABLE_LOGIC_OP (1<<23) 132428d7b3dSmrg#define ENABLE_STENCIL_TEST ((1<<21)|(1<<20)) 133428d7b3dSmrg#define DISABLE_STENCIL_TEST (1<<21) 134428d7b3dSmrg#define ENABLE_DEPTH_BIAS ((1<<11)|(1<<10)) 135428d7b3dSmrg#define DISABLE_DEPTH_BIAS (1<<11) 136428d7b3dSmrg#define ENABLE_SPEC_ADD_MASK ((1<<9)|(1<<8)) 137428d7b3dSmrg#define ENABLE_SPEC_ADD ((1<<9)|(1<<8)) 138428d7b3dSmrg#define DISABLE_SPEC_ADD (1<<9) 139428d7b3dSmrg#define ENABLE_DIS_FOG_MASK ((1<<7)|(1<<6)) 140428d7b3dSmrg#define ENABLE_FOG ((1<<7)|(1<<6)) 141428d7b3dSmrg#define DISABLE_FOG (1<<7) 142428d7b3dSmrg#define ENABLE_DIS_ALPHA_TEST_MASK ((1<<5)|(1<<4)) 143428d7b3dSmrg#define ENABLE_ALPHA_TEST ((1<<5)|(1<<4)) 144428d7b3dSmrg#define DISABLE_ALPHA_TEST (1<<5) 145428d7b3dSmrg#define ENABLE_DIS_CBLEND_MASK ((1<<3)|(1<<2)) 146428d7b3dSmrg#define ENABLE_COLOR_BLEND ((1<<3)|(1<<2)) 147428d7b3dSmrg#define DISABLE_COLOR_BLEND (1<<3) 148428d7b3dSmrg#define ENABLE_DIS_DEPTH_TEST_MASK ((1<<1)|1) 149428d7b3dSmrg#define ENABLE_DEPTH_TEST ((1<<1)|1) 150428d7b3dSmrg#define DISABLE_DEPTH_TEST (1<<1) 151428d7b3dSmrg 152428d7b3dSmrg/* _3DSTATE_ENABLES_2, p138 */ 153428d7b3dSmrg#define _3DSTATE_ENABLES_2_CMD (CMD_3D|(0x4<<24)) 154428d7b3dSmrg#define ENABLE_STENCIL_WRITE ((1<<21)|(1<<20)) 155428d7b3dSmrg#define DISABLE_STENCIL_WRITE (1<<21) 156428d7b3dSmrg#define ENABLE_TEX_CACHE ((1<<17)|(1<<16)) 157428d7b3dSmrg#define DISABLE_TEX_CACHE (1<<17) 158428d7b3dSmrg#define ENABLE_DITHER ((1<<9)|(1<<8)) 159428d7b3dSmrg#define DISABLE_DITHER (1<<9) 160428d7b3dSmrg#define ENABLE_COLOR_MASK (1<<10) 161428d7b3dSmrg#define WRITEMASK_ALPHA (1<<7) 162428d7b3dSmrg#define WRITEMASK_ALPHA_SHIFT 7 163428d7b3dSmrg#define WRITEMASK_RED (1<<6) 164428d7b3dSmrg#define WRITEMASK_RED_SHIFT 6 165428d7b3dSmrg#define WRITEMASK_GREEN (1<<5) 166428d7b3dSmrg#define WRITEMASK_GREEN_SHIFT 5 167428d7b3dSmrg#define WRITEMASK_BLUE (1<<4) 168428d7b3dSmrg#define WRITEMASK_BLUE_SHIFT 4 169428d7b3dSmrg#define WRITEMASK_MASK ((1<<4)|(1<<5)|(1<<6)|(1<<7)) 170428d7b3dSmrg#define ENABLE_COLOR_WRITE ((1<<3)|(1<<2)) 171428d7b3dSmrg#define DISABLE_COLOR_WRITE (1<<3) 172428d7b3dSmrg#define ENABLE_DIS_DEPTH_WRITE_MASK 0x3 173428d7b3dSmrg#define ENABLE_DEPTH_WRITE ((1<<1)|1) 174428d7b3dSmrg#define DISABLE_DEPTH_WRITE (1<<1) 175428d7b3dSmrg 176428d7b3dSmrg/* _3DSTATE_FOG_COLOR, p139 */ 177428d7b3dSmrg#define _3DSTATE_FOG_COLOR_CMD (CMD_3D|(0x15<<24)) 178428d7b3dSmrg#define FOG_COLOR_RED(x) ((x)<<16) 179428d7b3dSmrg#define FOG_COLOR_GREEN(x) ((x)<<8) 180428d7b3dSmrg#define FOG_COLOR_BLUE(x) (x) 181428d7b3dSmrg 182428d7b3dSmrg/* _3DSTATE_FOG_MODE, p140 */ 183428d7b3dSmrg#define _3DSTATE_FOG_MODE_CMD (CMD_3D|(0x1d<<24)|(0x89<<16)|2) 184428d7b3dSmrg/* Dword 1 */ 185428d7b3dSmrg#define FOGFUNC_ENABLE (1<<31) 186428d7b3dSmrg#define FOGFUNC_VERTEX 0 187428d7b3dSmrg#define FOGFUNC_PIXEL_EXP (1<<28) 188428d7b3dSmrg#define FOGFUNC_PIXEL_EXP2 (2<<28) 189428d7b3dSmrg#define FOGFUNC_PIXEL_LINEAR (3<<28) 190428d7b3dSmrg#define FOGSRC_INDEX_Z (1<<27) 191428d7b3dSmrg#define FOGSRC_INDEX_W ((1<<27)|(1<<25)) 192428d7b3dSmrg#define FOG_LINEAR_CONST (1<<24) 193428d7b3dSmrg#define FOG_CONST_1(x) ((x)<<4) 194428d7b3dSmrg#define ENABLE_FOG_DENSITY (1<<23) 195428d7b3dSmrg/* Dword 2 */ 196428d7b3dSmrg#define FOG_CONST_2(x) (x) 197428d7b3dSmrg/* Dword 3 */ 198428d7b3dSmrg#define FOG_DENSITY(x) (x) 199428d7b3dSmrg 200428d7b3dSmrg/* _3DSTATE_INDEPENDENT_ALPHA_BLEND, p142 */ 201428d7b3dSmrg#define _3DSTATE_INDPT_ALPHA_BLEND_CMD (CMD_3D|(0x0b<<24)) 202428d7b3dSmrg#define ENABLE_INDPT_ALPHA_BLEND ((1<<23)|(1<<22)) 203428d7b3dSmrg#define DISABLE_INDPT_ALPHA_BLEND (1<<23) 204428d7b3dSmrg#define ALPHA_BLENDFUNC_MASK 0x3f0000 205428d7b3dSmrg#define ENABLE_ALPHA_BLENDFUNC (1<<21) 206428d7b3dSmrg#define ABLENDFUNC_ADD 0 207428d7b3dSmrg#define ABLENDFUNC_SUB (1<<16) 208428d7b3dSmrg#define ABLENDFUNC_RVSE_SUB (2<<16) 209428d7b3dSmrg#define ABLENDFUNC_MIN (3<<16) 210428d7b3dSmrg#define ABLENDFUNC_MAX (4<<16) 211428d7b3dSmrg#define SRC_DST_ABLEND_MASK 0xfff 212428d7b3dSmrg#define ENABLE_SRC_ABLEND_FACTOR (1<<11) 213428d7b3dSmrg#define SRC_ABLEND_FACT(x) ((x)<<6) 214428d7b3dSmrg#define ENABLE_DST_ABLEND_FACTOR (1<<5) 215428d7b3dSmrg#define DST_ABLEND_FACT(x) (x) 216428d7b3dSmrg 217428d7b3dSmrg#define BLENDFACTOR_ZERO 0x01 218428d7b3dSmrg#define BLENDFACTOR_ONE 0x02 219428d7b3dSmrg#define BLENDFACTOR_SRC_COLR 0x03 220428d7b3dSmrg#define BLENDFACTOR_INV_SRC_COLR 0x04 221428d7b3dSmrg#define BLENDFACTOR_SRC_ALPHA 0x05 222428d7b3dSmrg#define BLENDFACTOR_INV_SRC_ALPHA 0x06 223428d7b3dSmrg#define BLENDFACTOR_DST_ALPHA 0x07 224428d7b3dSmrg#define BLENDFACTOR_INV_DST_ALPHA 0x08 225428d7b3dSmrg#define BLENDFACTOR_DST_COLR 0x09 226428d7b3dSmrg#define BLENDFACTOR_INV_DST_COLR 0x0a 227428d7b3dSmrg#define BLENDFACTOR_SRC_ALPHA_SATURATE 0x0b 228428d7b3dSmrg#define BLENDFACTOR_CONST_COLOR 0x0c 229428d7b3dSmrg#define BLENDFACTOR_INV_CONST_COLOR 0x0d 230428d7b3dSmrg#define BLENDFACTOR_CONST_ALPHA 0x0e 231428d7b3dSmrg#define BLENDFACTOR_INV_CONST_ALPHA 0x0f 232428d7b3dSmrg#define BLENDFACTOR_MASK 0x0f 233428d7b3dSmrg 234428d7b3dSmrg/* _3DSTATE_MAP_BLEND_ARG, p152 */ 235428d7b3dSmrg#define _3DSTATE_MAP_BLEND_ARG_CMD(stage) (CMD_3D|(0x0e<<24)|((stage)<<20)) 236428d7b3dSmrg 237428d7b3dSmrg#define TEXPIPE_COLOR 0 238428d7b3dSmrg#define TEXPIPE_ALPHA (1<<18) 239428d7b3dSmrg#define TEXPIPE_KILL (2<<18) 240428d7b3dSmrg#define TEXBLEND_ARG0 0 241428d7b3dSmrg#define TEXBLEND_ARG1 (1<<15) 242428d7b3dSmrg#define TEXBLEND_ARG2 (2<<15) 243428d7b3dSmrg#define TEXBLEND_ARG3 (3<<15) 244428d7b3dSmrg#define TEXBLENDARG_MODIFY_PARMS (1<<6) 245428d7b3dSmrg#define TEXBLENDARG_REPLICATE_ALPHA (1<<5) 246428d7b3dSmrg#define TEXBLENDARG_INV_ARG (1<<4) 247428d7b3dSmrg#define TEXBLENDARG_ONE 0 248428d7b3dSmrg#define TEXBLENDARG_FACTOR 0x01 249428d7b3dSmrg#define TEXBLENDARG_ACCUM 0x02 250428d7b3dSmrg#define TEXBLENDARG_DIFFUSE 0x03 251428d7b3dSmrg#define TEXBLENDARG_SPEC 0x04 252428d7b3dSmrg#define TEXBLENDARG_CURRENT 0x05 253428d7b3dSmrg#define TEXBLENDARG_TEXEL0 0x06 254428d7b3dSmrg#define TEXBLENDARG_TEXEL1 0x07 255428d7b3dSmrg#define TEXBLENDARG_TEXEL2 0x08 256428d7b3dSmrg#define TEXBLENDARG_TEXEL3 0x09 257428d7b3dSmrg#define TEXBLENDARG_FACTOR_N 0x0e 258428d7b3dSmrg 259428d7b3dSmrg/* _3DSTATE_MAP_BLEND_OP, p155 */ 260428d7b3dSmrg#define _3DSTATE_MAP_BLEND_OP_CMD(stage) (CMD_3D|(0x0d<<24)|((stage)<<20)) 261428d7b3dSmrg#if 0 262428d7b3dSmrg# define TEXPIPE_COLOR 0 263428d7b3dSmrg# define TEXPIPE_ALPHA (1<<18) 264428d7b3dSmrg# define TEXPIPE_KILL (2<<18) 265428d7b3dSmrg#endif 266428d7b3dSmrg#define ENABLE_TEXOUTPUT_WRT_SEL (1<<17) 267428d7b3dSmrg#define TEXOP_OUTPUT_CURRENT 0 268428d7b3dSmrg#define TEXOP_OUTPUT_ACCUM (1<<15) 269428d7b3dSmrg#define ENABLE_TEX_CNTRL_STAGE ((1<<12)|(1<<11)) 270428d7b3dSmrg#define DISABLE_TEX_CNTRL_STAGE (1<<12) 271428d7b3dSmrg#define TEXOP_SCALE_SHIFT 9 272428d7b3dSmrg#define TEXOP_SCALE_1X (0 << TEXOP_SCALE_SHIFT) 273428d7b3dSmrg#define TEXOP_SCALE_2X (1 << TEXOP_SCALE_SHIFT) 274428d7b3dSmrg#define TEXOP_SCALE_4X (2 << TEXOP_SCALE_SHIFT) 275428d7b3dSmrg#define TEXOP_MODIFY_PARMS (1<<8) 276428d7b3dSmrg#define TEXOP_LAST_STAGE (1<<7) 277428d7b3dSmrg#define TEXBLENDOP_KILLPIXEL 0x02 278428d7b3dSmrg#define TEXBLENDOP_ARG1 0x01 279428d7b3dSmrg#define TEXBLENDOP_ARG2 0x02 280428d7b3dSmrg#define TEXBLENDOP_MODULATE 0x03 281428d7b3dSmrg#define TEXBLENDOP_ADD 0x06 282428d7b3dSmrg#define TEXBLENDOP_ADDSIGNED 0x07 283428d7b3dSmrg#define TEXBLENDOP_BLEND 0x08 284428d7b3dSmrg#define TEXBLENDOP_BLEND_AND_ADD 0x09 285428d7b3dSmrg#define TEXBLENDOP_SUBTRACT 0x0a 286428d7b3dSmrg#define TEXBLENDOP_DOT3 0x0b 287428d7b3dSmrg#define TEXBLENDOP_DOT4 0x0c 288428d7b3dSmrg#define TEXBLENDOP_MODULATE_AND_ADD 0x0d 289428d7b3dSmrg#define TEXBLENDOP_MODULATE_2X_AND_ADD 0x0e 290428d7b3dSmrg#define TEXBLENDOP_MODULATE_4X_AND_ADD 0x0f 291428d7b3dSmrg 292428d7b3dSmrg/* _3DSTATE_MAP_BUMP_TABLE, p160 TODO */ 293428d7b3dSmrg/* _3DSTATE_MAP_COLOR_CHROMA_KEY, p161 TODO */ 294428d7b3dSmrg 295428d7b3dSmrg#define _3DSTATE_MAP_COORD_TRANSFORM ((3<<29)|(0x1d<<24)|(0x8c<<16)) 296428d7b3dSmrg#define DISABLE_TEX_TRANSFORM (1<<28) 297428d7b3dSmrg#define TEXTURE_SET(x) (x<<29) 298428d7b3dSmrg 299428d7b3dSmrg#define _3DSTATE_VERTEX_TRANSFORM ((3<<29)|(0x1d<<24)|(0x8b<<16)) 300428d7b3dSmrg#define DISABLE_VIEWPORT_TRANSFORM (1<<31) 301428d7b3dSmrg#define DISABLE_PERSPECTIVE_DIVIDE (1<<29) 302428d7b3dSmrg 303428d7b3dSmrg/* _3DSTATE_MAP_COORD_SET_BINDINGS, p162 */ 304428d7b3dSmrg#define _3DSTATE_MAP_COORD_SETBIND_CMD (CMD_3D|(0x1d<<24)|(0x02<<16)) 305428d7b3dSmrg#define TEXBIND_MASK3 ((1<<15)|(1<<14)|(1<<13)|(1<<12)) 306428d7b3dSmrg#define TEXBIND_MASK2 ((1<<11)|(1<<10)|(1<<9)|(1<<8)) 307428d7b3dSmrg#define TEXBIND_MASK1 ((1<<7)|(1<<6)|(1<<5)|(1<<4)) 308428d7b3dSmrg#define TEXBIND_MASK0 ((1<<3)|(1<<2)|(1<<1)|1) 309428d7b3dSmrg 310428d7b3dSmrg#define TEXBIND_SET3(x) ((x)<<12) 311428d7b3dSmrg#define TEXBIND_SET2(x) ((x)<<8) 312428d7b3dSmrg#define TEXBIND_SET1(x) ((x)<<4) 313428d7b3dSmrg#define TEXBIND_SET0(x) (x) 314428d7b3dSmrg 315428d7b3dSmrg#define TEXCOORDSRC_KEEP 0 316428d7b3dSmrg#define TEXCOORDSRC_DEFAULT 0x01 317428d7b3dSmrg#define TEXCOORDSRC_VTXSET_0 0x08 318428d7b3dSmrg#define TEXCOORDSRC_VTXSET_1 0x09 319428d7b3dSmrg#define TEXCOORDSRC_VTXSET_2 0x0a 320428d7b3dSmrg#define TEXCOORDSRC_VTXSET_3 0x0b 321428d7b3dSmrg#define TEXCOORDSRC_VTXSET_4 0x0c 322428d7b3dSmrg#define TEXCOORDSRC_VTXSET_5 0x0d 323428d7b3dSmrg#define TEXCOORDSRC_VTXSET_6 0x0e 324428d7b3dSmrg#define TEXCOORDSRC_VTXSET_7 0x0f 325428d7b3dSmrg 326428d7b3dSmrg#define MAP_UNIT(unit) ((unit)<<16) 327428d7b3dSmrg#define MAP_UNIT_MASK (0x7<<16) 328428d7b3dSmrg 329428d7b3dSmrg/* _3DSTATE_MAP_COORD_SETS, p164 */ 330428d7b3dSmrg#define _3DSTATE_MAP_COORD_SET_CMD (CMD_3D|(0x1c<<24)|(0x01<<19)) 331428d7b3dSmrg#define TEXCOORD_SET(n) ((n)<<16) 332428d7b3dSmrg#define ENABLE_TEXCOORD_PARAMS (1<<15) 333428d7b3dSmrg#define TEXCOORDS_ARE_NORMAL (1<<14) 334428d7b3dSmrg#define TEXCOORDS_ARE_IN_TEXELUNITS 0 335428d7b3dSmrg#define TEXCOORDTYPE_CARTESIAN 0 336428d7b3dSmrg#define TEXCOORDTYPE_HOMOGENEOUS (1<<11) 337428d7b3dSmrg#define TEXCOORDTYPE_VECTOR (2<<11) 338428d7b3dSmrg#define TEXCOORDTYPE_MASK (0x7<<11) 339428d7b3dSmrg#define ENABLE_ADDR_V_CNTL (1<<7) 340428d7b3dSmrg#define ENABLE_ADDR_U_CNTL (1<<3) 341428d7b3dSmrg#define TEXCOORD_ADDR_V_MODE(x) ((x)<<4) 342428d7b3dSmrg#define TEXCOORD_ADDR_U_MODE(x) (x) 343428d7b3dSmrg#define TEXCOORDMODE_WRAP 0 344428d7b3dSmrg#define TEXCOORDMODE_MIRROR 1 345428d7b3dSmrg#define TEXCOORDMODE_CLAMP 2 346428d7b3dSmrg#define TEXCOORDMODE_WRAP_SHORTEST 3 347428d7b3dSmrg#define TEXCOORDMODE_CLAMP_BORDER 4 348428d7b3dSmrg#define TEXCOORD_ADDR_V_MASK 0x70 349428d7b3dSmrg#define TEXCOORD_ADDR_U_MASK 0x7 350428d7b3dSmrg 351428d7b3dSmrg/* _3DSTATE_MAP_CUBE, p168 TODO */ 352428d7b3dSmrg#define _3DSTATE_MAP_CUBE (CMD_3D|(0x1c<<24)|(0x0a<<19)) 353428d7b3dSmrg#define CUBE_NEGX_ENABLE (1<<5) 354428d7b3dSmrg#define CUBE_POSX_ENABLE (1<<4) 355428d7b3dSmrg#define CUBE_NEGY_ENABLE (1<<3) 356428d7b3dSmrg#define CUBE_POSY_ENABLE (1<<2) 357428d7b3dSmrg#define CUBE_NEGZ_ENABLE (1<<1) 358428d7b3dSmrg#define CUBE_POSZ_ENABLE (1<<0) 359428d7b3dSmrg 360428d7b3dSmrg#define _3DSTATE_MAP_INFO_CMD (CMD_3D|(0x1d<<24)|(0x0<<16)|3) 361428d7b3dSmrg#define TEXMAP_INDEX(x) ((x)<<28) 362428d7b3dSmrg#define MAP_SURFACE_8BIT (1<<24) 363428d7b3dSmrg#define MAP_SURFACE_16BIT (2<<24) 364428d7b3dSmrg#define MAP_SURFACE_32BIT (3<<24) 365428d7b3dSmrg#define MAP_FORMAT_2D (0) 366428d7b3dSmrg#define MAP_FORMAT_3D_CUBE (1<<11) 367428d7b3dSmrg 368428d7b3dSmrg/* _3DSTATE_MODES_1, p190 */ 369428d7b3dSmrg#define _3DSTATE_MODES_1_CMD (CMD_3D|(0x08<<24)) 370428d7b3dSmrg#define BLENDFUNC_MASK 0x3f0000 371428d7b3dSmrg#define ENABLE_COLR_BLND_FUNC (1<<21) 372428d7b3dSmrg#define BLENDFUNC_ADD 0 373428d7b3dSmrg#define BLENDFUNC_SUB (1<<16) 374428d7b3dSmrg#define BLENDFUNC_RVRSE_SUB (2<<16) 375428d7b3dSmrg#define BLENDFUNC_MIN (3<<16) 376428d7b3dSmrg#define BLENDFUNC_MAX (4<<16) 377428d7b3dSmrg#define SRC_DST_BLND_MASK 0xfff 378428d7b3dSmrg#define ENABLE_SRC_BLND_FACTOR (1<<11) 379428d7b3dSmrg#define ENABLE_DST_BLND_FACTOR (1<<5) 380428d7b3dSmrg#define SRC_BLND_FACT(x) ((x)<<6) 381428d7b3dSmrg#define DST_BLND_FACT(x) (x) 382428d7b3dSmrg 383428d7b3dSmrg/* _3DSTATE_MODES_2, p192 */ 384428d7b3dSmrg#define _3DSTATE_MODES_2_CMD (CMD_3D|(0x0f<<24)) 385428d7b3dSmrg#define ENABLE_GLOBAL_DEPTH_BIAS (1<<22) 386428d7b3dSmrg#define GLOBAL_DEPTH_BIAS(x) ((x)<<14) 387428d7b3dSmrg#define ENABLE_ALPHA_TEST_FUNC (1<<13) 388428d7b3dSmrg#define ENABLE_ALPHA_REF_VALUE (1<<8) 389428d7b3dSmrg#define ALPHA_TEST_FUNC(x) ((x)<<9) 390428d7b3dSmrg#define ALPHA_REF_VALUE(x) (x) 391428d7b3dSmrg 392428d7b3dSmrg#define ALPHA_TEST_REF_MASK 0x3fff 393428d7b3dSmrg 394428d7b3dSmrg/* _3DSTATE_MODES_3, p193 */ 395428d7b3dSmrg#define _3DSTATE_MODES_3_CMD (CMD_3D|(0x02<<24)) 396428d7b3dSmrg#define DEPTH_TEST_FUNC_MASK 0x1f0000 397428d7b3dSmrg#define ENABLE_DEPTH_TEST_FUNC (1<<20) 398428d7b3dSmrg/* Uses COMPAREFUNC */ 399428d7b3dSmrg#define DEPTH_TEST_FUNC(x) ((x)<<16) 400428d7b3dSmrg#define ENABLE_ALPHA_SHADE_MODE (1<<11) 401428d7b3dSmrg#define ENABLE_FOG_SHADE_MODE (1<<9) 402428d7b3dSmrg#define ENABLE_SPEC_SHADE_MODE (1<<7) 403428d7b3dSmrg#define ENABLE_COLOR_SHADE_MODE (1<<5) 404428d7b3dSmrg#define ALPHA_SHADE_MODE(x) ((x)<<10) 405428d7b3dSmrg#define FOG_SHADE_MODE(x) ((x)<<8) 406428d7b3dSmrg#define SPEC_SHADE_MODE(x) ((x)<<6) 407428d7b3dSmrg#define COLOR_SHADE_MODE(x) ((x)<<4) 408428d7b3dSmrg#define CULLMODE_MASK 0xf 409428d7b3dSmrg#define ENABLE_CULL_MODE (1<<3) 410428d7b3dSmrg#define CULLMODE_BOTH 0 411428d7b3dSmrg#define CULLMODE_NONE 1 412428d7b3dSmrg#define CULLMODE_CW 2 413428d7b3dSmrg#define CULLMODE_CCW 3 414428d7b3dSmrg 415428d7b3dSmrg#define SHADE_MODE_LINEAR 0 416428d7b3dSmrg#define SHADE_MODE_FLAT 0x1 417428d7b3dSmrg 418428d7b3dSmrg/* _3DSTATE_MODES_4, p195 */ 419428d7b3dSmrg#define _3DSTATE_MODES_4_CMD (CMD_3D|(0x16<<24)) 420428d7b3dSmrg#define ENABLE_LOGIC_OP_FUNC (1<<23) 421428d7b3dSmrg#define LOGIC_OP_FUNC(x) ((x)<<18) 422428d7b3dSmrg#define LOGICOP_MASK ((1<<18)|(1<<19)|(1<<20)|(1<<21)) 423428d7b3dSmrg#define LOGICOP_CLEAR 0 424428d7b3dSmrg#define LOGICOP_NOR 0x1 425428d7b3dSmrg#define LOGICOP_AND_INV 0x2 426428d7b3dSmrg#define LOGICOP_COPY_INV 0x3 427428d7b3dSmrg#define LOGICOP_AND_RVRSE 0x4 428428d7b3dSmrg#define LOGICOP_INV 0x5 429428d7b3dSmrg#define LOGICOP_XOR 0x6 430428d7b3dSmrg#define LOGICOP_NAND 0x7 431428d7b3dSmrg#define LOGICOP_AND 0x8 432428d7b3dSmrg#define LOGICOP_EQUIV 0x9 433428d7b3dSmrg#define LOGICOP_NOOP 0xa 434428d7b3dSmrg#define LOGICOP_OR_INV 0xb 435428d7b3dSmrg#define LOGICOP_COPY 0xc 436428d7b3dSmrg#define LOGICOP_OR_RVRSE 0xd 437428d7b3dSmrg#define LOGICOP_OR 0xe 438428d7b3dSmrg#define LOGICOP_SET 0xf 439428d7b3dSmrg#define MODE4_ENABLE_STENCIL_TEST_MASK ((1<<17)|(0xff00)) 440428d7b3dSmrg#define ENABLE_STENCIL_TEST_MASK (1<<17) 441428d7b3dSmrg#define STENCIL_TEST_MASK(x) ((x)<<8) 442428d7b3dSmrg#define MODE4_ENABLE_STENCIL_WRITE_MASK ((1<<16)|(0x00ff)) 443428d7b3dSmrg#define ENABLE_STENCIL_WRITE_MASK (1<<16) 444428d7b3dSmrg#define STENCIL_WRITE_MASK(x) ((x)&0xff) 445428d7b3dSmrg 446428d7b3dSmrg/* _3DSTATE_MODES_5, p196 */ 447428d7b3dSmrg#define _3DSTATE_MODES_5_CMD (CMD_3D|(0x0c<<24)) 448428d7b3dSmrg#define ENABLE_SPRITE_POINT_TEX (1<<23) 449428d7b3dSmrg#define SPRITE_POINT_TEX_ON (1<<22) 450428d7b3dSmrg#define PIPELINE_FLUSH_RENDER_CACHE (1<<18) 451428d7b3dSmrg#define PIPELINE_FLUSH_TEXTURE_CACHE (1<<16) 452428d7b3dSmrg#define FIXED_LINE_WIDTH_MASK 0xfc00 453428d7b3dSmrg#define ENABLE_FIXED_LINE_WIDTH (1<<15) 454428d7b3dSmrg#define FIXED_LINE_WIDTH(x) ((x)<<10) 455428d7b3dSmrg#define FIXED_POINT_WIDTH_MASK 0x3ff 456428d7b3dSmrg#define ENABLE_FIXED_POINT_WIDTH (1<<9) 457428d7b3dSmrg#define FIXED_POINT_WIDTH(x) (x) 458428d7b3dSmrg 459428d7b3dSmrg/* _3DSTATE_RASTERIZATION_RULES, p198 */ 460428d7b3dSmrg#define _3DSTATE_RASTER_RULES_CMD (CMD_3D|(0x07<<24)) 461428d7b3dSmrg#define ENABLE_POINT_RASTER_RULE (1<<15) 462428d7b3dSmrg#define OGL_POINT_RASTER_RULE (1<<13) 463428d7b3dSmrg#define ENABLE_LINE_STRIP_PROVOKE_VRTX (1<<8) 464428d7b3dSmrg#define ENABLE_TRI_FAN_PROVOKE_VRTX (1<<5) 465428d7b3dSmrg#define ENABLE_TRI_STRIP_PROVOKE_VRTX (1<<2) 466428d7b3dSmrg#define LINE_STRIP_PROVOKE_VRTX(x) ((x)<<6) 467428d7b3dSmrg#define TRI_FAN_PROVOKE_VRTX(x) ((x)<<3) 468428d7b3dSmrg#define TRI_STRIP_PROVOKE_VRTX(x) (x) 469428d7b3dSmrg 470428d7b3dSmrg/* _3DSTATE_SCISSOR_ENABLE, p200 */ 471428d7b3dSmrg#define _3DSTATE_SCISSOR_ENABLE_CMD (CMD_3D|(0x1c<<24)|(0x10<<19)) 472428d7b3dSmrg#define ENABLE_SCISSOR_RECT ((1<<1) | 1) 473428d7b3dSmrg#define DISABLE_SCISSOR_RECT (1<<1) 474428d7b3dSmrg 475428d7b3dSmrg/* _3DSTATE_SCISSOR_RECTANGLE_0, p201 */ 476428d7b3dSmrg#define _3DSTATE_SCISSOR_RECT_0_CMD (CMD_3D|(0x1d<<24)|(0x81<<16)|1) 477428d7b3dSmrg/* Dword 1 */ 478428d7b3dSmrg#define SCISSOR_RECT_0_YMIN(x) ((x)<<16) 479428d7b3dSmrg#define SCISSOR_RECT_0_XMIN(x) (x) 480428d7b3dSmrg/* Dword 2 */ 481428d7b3dSmrg#define SCISSOR_RECT_0_YMAX(x) ((x)<<16) 482428d7b3dSmrg#define SCISSOR_RECT_0_XMAX(x) (x) 483428d7b3dSmrg 484428d7b3dSmrg/* _3DSTATE_STENCIL_TEST, p202 */ 485428d7b3dSmrg#define _3DSTATE_STENCIL_TEST_CMD (CMD_3D|(0x09<<24)) 486428d7b3dSmrg#define ENABLE_STENCIL_PARMS (1<<23) 487428d7b3dSmrg#define STENCIL_OPS_MASK (0xffc000) 488428d7b3dSmrg#define STENCIL_FAIL_OP(x) ((x)<<20) 489428d7b3dSmrg#define STENCIL_PASS_DEPTH_FAIL_OP(x) ((x)<<17) 490428d7b3dSmrg#define STENCIL_PASS_DEPTH_PASS_OP(x) ((x)<<14) 491428d7b3dSmrg 492428d7b3dSmrg#define ENABLE_STENCIL_TEST_FUNC_MASK ((1<<13)|(1<<12)|(1<<11)|(1<<10)|(1<<9)) 493428d7b3dSmrg#define ENABLE_STENCIL_TEST_FUNC (1<<13) 494428d7b3dSmrg/* Uses COMPAREFUNC */ 495428d7b3dSmrg#define STENCIL_TEST_FUNC(x) ((x)<<9) 496428d7b3dSmrg#define STENCIL_REF_VALUE_MASK ((1<<8)|0xff) 497428d7b3dSmrg#define ENABLE_STENCIL_REF_VALUE (1<<8) 498428d7b3dSmrg#define STENCIL_REF_VALUE(x) (x) 499428d7b3dSmrg 500428d7b3dSmrg/* _3DSTATE_VERTEX_FORMAT, p204 */ 501428d7b3dSmrg#define _3DSTATE_VFT0_CMD (CMD_3D|(0x05<<24)) 502428d7b3dSmrg#define VFT0_POINT_WIDTH (1<<12) 503428d7b3dSmrg#define VFT0_TEX_COUNT_MASK (7<<8) 504428d7b3dSmrg#define VFT0_TEX_COUNT_SHIFT 8 505428d7b3dSmrg#define VFT0_TEX_COUNT(x) ((x)<<8) 506428d7b3dSmrg#define VFT0_SPEC (1<<7) 507428d7b3dSmrg#define VFT0_DIFFUSE (1<<6) 508428d7b3dSmrg#define VFT0_DEPTH_OFFSET (1<<5) 509428d7b3dSmrg#define VFT0_XYZ (1<<1) 510428d7b3dSmrg#define VFT0_XYZW (2<<1) 511428d7b3dSmrg#define VFT0_XY (3<<1) 512428d7b3dSmrg#define VFT0_XYW (4<<1) 513428d7b3dSmrg#define VFT0_XYZW_MASK (7<<1) 514428d7b3dSmrg 515428d7b3dSmrg/* _3DSTATE_VERTEX_FORMAT_2, p206 */ 516428d7b3dSmrg#define _3DSTATE_VERTEX_FORMAT_2_CMD (CMD_3D|(0x0a<<24)) 517428d7b3dSmrg#define VFT1_TEX7_FMT(x) ((x)<<14) 518428d7b3dSmrg#define VFT1_TEX6_FMT(x) ((x)<<12) 519428d7b3dSmrg#define VFT1_TEX5_FMT(x) ((x)<<10) 520428d7b3dSmrg#define VFT1_TEX4_FMT(x) ((x)<<8) 521428d7b3dSmrg#define VFT1_TEX3_FMT(x) ((x)<<6) 522428d7b3dSmrg#define VFT1_TEX2_FMT(x) ((x)<<4) 523428d7b3dSmrg#define VFT1_TEX1_FMT(x) ((x)<<2) 524428d7b3dSmrg#define VFT1_TEX0_FMT(x) (x) 525428d7b3dSmrg#define VFT1_TEX0_MASK 3 526428d7b3dSmrg#define VFT1_TEX1_SHIFT 2 527428d7b3dSmrg#define TEXCOORDFMT_2D 0 528428d7b3dSmrg#define TEXCOORDFMT_3D 1 529428d7b3dSmrg#define TEXCOORDFMT_4D 2 530428d7b3dSmrg#define TEXCOORDFMT_1D 3 531428d7b3dSmrg 532428d7b3dSmrg/*New stuff picked up along the way */ 533428d7b3dSmrg 534428d7b3dSmrg#define MLC_LOD_BIAS_MASK ((1<<7)-1) 535428d7b3dSmrg 536428d7b3dSmrg/* _3DSTATE_VERTEX_TRANSFORM, p207 */ 537428d7b3dSmrg#define _3DSTATE_VERTEX_TRANS_CMD (CMD_3D|(0x1d<<24)|(0x8b<<16)|0) 538428d7b3dSmrg#define _3DSTATE_VERTEX_TRANS_MTX_CMD (CMD_3D|(0x1d<<24)|(0x8b<<16)|6) 539428d7b3dSmrg/* Dword 1 */ 540428d7b3dSmrg#define ENABLE_VIEWPORT_TRANSFORM ((1<<31)|(1<<30)) 541428d7b3dSmrg#define DISABLE_VIEWPORT_TRANSFORM (1<<31) 542428d7b3dSmrg#define ENABLE_PERSP_DIVIDE ((1<<29)|(1<<28)) 543428d7b3dSmrg#define DISABLE_PERSP_DIVIDE (1<<29) 544428d7b3dSmrg#define VRTX_TRANS_LOAD_MATRICES 0x7421 545428d7b3dSmrg#define VRTX_TRANS_NO_LOAD_MATRICES 0x0000 546428d7b3dSmrg/* Dword 2 -> 7 are matrix elements */ 547428d7b3dSmrg 548428d7b3dSmrg/* _3DSTATE_W_STATE, p209 */ 549428d7b3dSmrg#define _3DSTATE_W_STATE_CMD (CMD_3D|(0x1d<<24)|(0x8d<<16)|1) 550428d7b3dSmrg/* Dword 1 */ 551428d7b3dSmrg#define MAGIC_W_STATE_DWORD1 0x00000008 552428d7b3dSmrg/* Dword 2 */ 553428d7b3dSmrg#define WFAR_VALUE(x) (x) 554428d7b3dSmrg 555428d7b3dSmrg/* Stipple command, carried over from the i810, apparently: 556428d7b3dSmrg */ 557428d7b3dSmrg#define _3DSTATE_STIPPLE (CMD_3D|(0x1d<<24)|(0x83<<16)) 558428d7b3dSmrg#define ST1_ENABLE (1<<16) 559428d7b3dSmrg#define ST1_MASK (0xffff) 560428d7b3dSmrg 561428d7b3dSmrg#define _3DSTATE_LOAD_STATE_IMMEDIATE_1 (CMD_3D|(0x1d<<24)|(0x04<<16)) 562428d7b3dSmrg#define I1_LOAD_S(n) (1<<((n)+4)) 563428d7b3dSmrg#define S3_POINT_WIDTH_SHIFT 23 564428d7b3dSmrg#define S3_LINE_WIDTH_SHIFT 19 565428d7b3dSmrg#define S3_ALPHA_SHADE_MODE_SHIFT 18 566428d7b3dSmrg#define S3_FOG_SHADE_MODE_SHIFT 17 567428d7b3dSmrg#define S3_SPEC_SHADE_MODE_SHIFT 16 568428d7b3dSmrg#define S3_COLOR_SHADE_MODE_SHIFT 15 569428d7b3dSmrg#define S3_CULL_MODE_SHIFT 13 570428d7b3dSmrg#define S3_CULLMODE_BOTH (0) 571428d7b3dSmrg#define S3_CULLMODE_NONE (1<<13) 572428d7b3dSmrg#define S3_CULLMODE_CW (2<<13) 573428d7b3dSmrg#define S3_CULLMODE_CCW (3<<13) 574428d7b3dSmrg#define S3_POINT_WIDTH_PRESENT (1<<12) 575428d7b3dSmrg#define S3_SPEC_FOG_PRESENT (1<<11) 576428d7b3dSmrg#define S3_DIFFUSE_PRESENT (1<<10) 577428d7b3dSmrg#define S3_DEPTH_OFFSET_PRESENT (1<<9) 578428d7b3dSmrg#define S3_POSITION_SHIFT 6 579428d7b3dSmrg#define S3_VERTEXHAS_XYZ (1<<6) 580428d7b3dSmrg#define S3_VERTEXHAS_XYZW (2<<6) 581428d7b3dSmrg#define S3_VERTEXHAS_XY (3<<6) 582428d7b3dSmrg#define S3_VERTEXHAS_XYW (4<<6) 583428d7b3dSmrg#define S3_ENABLE_SPEC_ADD (1<<5) 584428d7b3dSmrg#define S3_ENABLE_FOG (1<<4) 585428d7b3dSmrg#define S3_ENABLE_LOCAL_DEPTH_BIAS (1<<3) 586428d7b3dSmrg#define S3_ENABLE_SPRITE_POINT (1<<1) 587428d7b3dSmrg#define S3_ENABLE_ANTIALIASING 1 588428d7b3dSmrg#define S7_ENABLE_LOGIC_OP (1<<0) 589428d7b3dSmrg#define S8_ENABLE_ALPHA_TEST (1<<31) 590428d7b3dSmrg#define S8_ALPHA_TEST_FUNC_SHIFT 28 591428d7b3dSmrg#define S8_ALPHA_REFVALUE_SHIFT 20 592428d7b3dSmrg#define S8_ENABLE_DEPTH_TEST (1<<19) 593428d7b3dSmrg#define S8_DEPTH_TEST_FUNC_SHIFT 16 594428d7b3dSmrg#define S8_ENABLE_COLOR_BLEND (1<<15) 595428d7b3dSmrg#define S8_COLOR_BLEND_FUNC_SHIFT 12 596428d7b3dSmrg#define S8_BLENDFUNC_ADD (0) 597428d7b3dSmrg#define S8_BLENDFUNC_SUB (1<<12) 598428d7b3dSmrg#define S8_BLENDFUNC_RVRSE_SUB (2<<12) 599428d7b3dSmrg#define S8_BLENDFUNC_MIN (3<<12) 600428d7b3dSmrg#define S8_BLENDFUNC_MAX (4<<12) 601428d7b3dSmrg#define S8_SRC_BLEND_FACTOR_SHIFT 8 602428d7b3dSmrg#define S8_DST_BLEND_FACTOR_SHIFT 4 603428d7b3dSmrg#define S8_ENABLE_DEPTH_BUFFER_WRITE (1<<3) 604428d7b3dSmrg#define S8_ENABLE_COLOR_BUFFER_WRITE (1<<2) 605428d7b3dSmrg 606428d7b3dSmrg#define _3DSTATE_LOAD_STATE_IMMEDIATE_2 (CMD_3D|(0x1d<<24)|(0x03<<16)) 607428d7b3dSmrg#define LOAD_TEXTURE_MAP(x) (1<<((x)+11)) 608428d7b3dSmrg#define LOAD_TEXTURE_BLEND_STAGE(x) (1<<((x)+7)) 609428d7b3dSmrg#define LOAD_GLOBAL_COLOR_FACTOR (1<<6) 610428d7b3dSmrg 611428d7b3dSmrg#define TM0S0_ADDRESS_MASK 0xfffffffc 612428d7b3dSmrg#define TM0S0_USE_FENCE (1<<1) 613428d7b3dSmrg 614428d7b3dSmrg#define TM0S1_HEIGHT_SHIFT 21 615428d7b3dSmrg#define TM0S1_WIDTH_SHIFT 10 616428d7b3dSmrg#define TM0S1_PALETTE_SELECT (1<<9) 617428d7b3dSmrg#define TM0S1_MAPSURF_FORMAT_MASK (0x7 << 6) 618428d7b3dSmrg#define TM0S1_MAPSURF_FORMAT_SHIFT 6 619428d7b3dSmrg#define MAPSURF_8BIT_INDEXED (0<<6) 620428d7b3dSmrg#define MAPSURF_8BIT (1<<6) 621428d7b3dSmrg#define MAPSURF_16BIT (2<<6) 622428d7b3dSmrg#define MAPSURF_32BIT (3<<6) 623428d7b3dSmrg#define MAPSURF_411 (4<<6) 624428d7b3dSmrg#define MAPSURF_422 (5<<6) 625428d7b3dSmrg#define MAPSURF_COMPRESSED (6<<6) 626428d7b3dSmrg#define MAPSURF_4BIT_INDEXED (7<<6) 627428d7b3dSmrg#define TM0S1_MT_FORMAT_MASK (0x7 << 3) 628428d7b3dSmrg#define TM0S1_MT_FORMAT_SHIFT 3 629428d7b3dSmrg#define MT_4BIT_IDX_ARGB8888 (7<<3) /* SURFACE_4BIT_INDEXED */ 630428d7b3dSmrg#define MT_8BIT_IDX_RGB565 (0<<3) /* SURFACE_8BIT_INDEXED */ 631428d7b3dSmrg#define MT_8BIT_IDX_ARGB1555 (1<<3) 632428d7b3dSmrg#define MT_8BIT_IDX_ARGB4444 (2<<3) 633428d7b3dSmrg#define MT_8BIT_IDX_AY88 (3<<3) 634428d7b3dSmrg#define MT_8BIT_IDX_ABGR8888 (4<<3) 635428d7b3dSmrg#define MT_8BIT_IDX_BUMP_88DVDU (5<<3) 636428d7b3dSmrg#define MT_8BIT_IDX_BUMP_655LDVDU (6<<3) 637428d7b3dSmrg#define MT_8BIT_IDX_ARGB8888 (7<<3) 638428d7b3dSmrg#define MT_8BIT_I8 (0<<3) /* SURFACE_8BIT */ 639428d7b3dSmrg#define MT_8BIT_L8 (1<<3) 640428d7b3dSmrg#define MT_8BIT_A8 (4<<3) 641428d7b3dSmrg#define MT_16BIT_RGB565 (0<<3) /* SURFACE_16BIT */ 642428d7b3dSmrg#define MT_16BIT_ARGB1555 (1<<3) 643428d7b3dSmrg#define MT_16BIT_ARGB4444 (2<<3) 644428d7b3dSmrg#define MT_16BIT_AY88 (3<<3) 645428d7b3dSmrg#define MT_16BIT_DIB_ARGB1555_8888 (4<<3) 646428d7b3dSmrg#define MT_16BIT_BUMP_88DVDU (5<<3) 647428d7b3dSmrg#define MT_16BIT_BUMP_655LDVDU (6<<3) 648428d7b3dSmrg#define MT_16BIT_DIB_RGB565_8888 (7<<3) 649428d7b3dSmrg#define MT_32BIT_ARGB8888 (0<<3) /* SURFACE_32BIT */ 650428d7b3dSmrg#define MT_32BIT_ABGR8888 (1<<3) 651428d7b3dSmrg#define MT_32BIT_XRGB8888 (2<<3) 652428d7b3dSmrg#define MT_32BIT_XBGR8888 (3<<3) 653428d7b3dSmrg#define MT_32BIT_BUMP_XLDVDU_8888 (6<<3) 654428d7b3dSmrg#define MT_32BIT_DIB_8888 (7<<3) 655428d7b3dSmrg#define MT_411_YUV411 (0<<3) /* SURFACE_411 */ 656428d7b3dSmrg#define MT_422_YCRCB_SWAPY (0<<3) /* SURFACE_422 */ 657428d7b3dSmrg#define MT_422_YCRCB_NORMAL (1<<3) 658428d7b3dSmrg#define MT_422_YCRCB_SWAPUV (2<<3) 659428d7b3dSmrg#define MT_422_YCRCB_SWAPUVY (3<<3) 660428d7b3dSmrg#define MT_COMPRESS_DXT1 (0<<3) /* SURFACE_COMPRESSED */ 661428d7b3dSmrg#define MT_COMPRESS_DXT2_3 (1<<3) 662428d7b3dSmrg#define MT_COMPRESS_DXT4_5 (2<<3) 663428d7b3dSmrg#define MT_COMPRESS_FXT1 (3<<3) 664428d7b3dSmrg#define TM0S1_COLORSPACE_CONVERSION (1 << 2) 665428d7b3dSmrg#define TM0S1_TILED_SURFACE (1 << 1) 666428d7b3dSmrg#define TM0S1_TILE_WALK (1 << 0) 667428d7b3dSmrg 668428d7b3dSmrg#define TM0S2_PITCH_SHIFT 21 669428d7b3dSmrg#define TM0S2_CUBE_FACE_ENA_SHIFT 15 670428d7b3dSmrg#define TM0S2_CUBE_FACE_ENA_MASK (1<<15) 671428d7b3dSmrg#define TM0S2_MAP_FORMAT (1<<14) 672428d7b3dSmrg#define TM0S2_MAP_2D (0<<14) 673428d7b3dSmrg#define TM0S2_MAP_3D_CUBE (1<<14) 674428d7b3dSmrg#define TM0S2_VERTICAL_LINE_STRIDE (1<<13) 675428d7b3dSmrg#define TM0S2_VERITCAL_LINE_STRIDE_OFF (1<<12) 676428d7b3dSmrg#define TM0S2_OUTPUT_CHAN_SHIFT 10 677428d7b3dSmrg#define TM0S2_OUTPUT_CHAN_MASK (3<<10) 678428d7b3dSmrg 679428d7b3dSmrg#define TM0S3_MIP_FILTER_MASK (0x3<<30) 680428d7b3dSmrg#define TM0S3_MIP_FILTER_SHIFT 30 681428d7b3dSmrg#define MIPFILTER_NONE 0 682428d7b3dSmrg#define MIPFILTER_NEAREST 1 683428d7b3dSmrg#define MIPFILTER_LINEAR 3 684428d7b3dSmrg#define TM0S3_MAG_FILTER_MASK (0x3<<28) 685428d7b3dSmrg#define TM0S3_MAG_FILTER_SHIFT 28 686428d7b3dSmrg#define TM0S3_MIN_FILTER_MASK (0x3<<26) 687428d7b3dSmrg#define TM0S3_MIN_FILTER_SHIFT 26 688428d7b3dSmrg#define FILTER_NEAREST 0 689428d7b3dSmrg#define FILTER_LINEAR 1 690428d7b3dSmrg#define FILTER_ANISOTROPIC 2 691428d7b3dSmrg 692428d7b3dSmrg#define TM0S3_LOD_BIAS_SHIFT 17 693428d7b3dSmrg#define TM0S3_LOD_BIAS_MASK (0x1ff<<17) 694428d7b3dSmrg#define TM0S3_MAX_MIP_SHIFT 9 695428d7b3dSmrg#define TM0S3_MAX_MIP_MASK (0xff<<9) 696428d7b3dSmrg#define TM0S3_MIN_MIP_SHIFT 3 697428d7b3dSmrg#define TM0S3_MIN_MIP_MASK (0x3f<<3) 698428d7b3dSmrg#define TM0S3_KILL_PIXEL (1<<2) 699428d7b3dSmrg#define TM0S3_KEYED_FILTER (1<<1) 700428d7b3dSmrg#define TM0S3_CHROMA_KEY (1<<0) 701428d7b3dSmrg 702428d7b3dSmrg/* _3DSTATE_MAP_TEXEL_STREAM, p188 */ 703428d7b3dSmrg#define _3DSTATE_MAP_TEX_STREAM_CMD (CMD_3D|(0x1c<<24)|(0x05<<19)) 704428d7b3dSmrg#define DISABLE_TEX_STREAM_BUMP (1<<12) 705428d7b3dSmrg#define ENABLE_TEX_STREAM_BUMP ((1<<12)|(1<<11)) 706428d7b3dSmrg#define TEX_MODIFY_UNIT_0 0 707428d7b3dSmrg#define TEX_MODIFY_UNIT_1 (1<<8) 708428d7b3dSmrg#define ENABLE_TEX_STREAM_COORD_SET (1<<7) 709428d7b3dSmrg#define TEX_STREAM_COORD_SET(x) ((x)<<4) 710428d7b3dSmrg#define ENABLE_TEX_STREAM_MAP_IDX (1<<3) 711428d7b3dSmrg#define TEX_STREAM_MAP_IDX(x) (x) 712428d7b3dSmrg 713428d7b3dSmrg#define FLUSH_MAP_CACHE (1<<0) 714428d7b3dSmrg 715428d7b3dSmrg#define _3DSTATE_MAP_FILTER_CMD (CMD_3D|(0x1c<<24)|(0x02<<19)) 716428d7b3dSmrg#define FILTER_TEXMAP_INDEX(x) ((x) << 16) 717428d7b3dSmrg#define MAG_MODE_FILTER_ENABLE (1 << 5) 718428d7b3dSmrg#define MIN_MODE_FILTER_ENABLE (1 << 2) 719428d7b3dSmrg#define MAG_MAPFILTER_NEAREST (0 << 3) 720428d7b3dSmrg#define MAG_MAPFILTER_LINEAR (1 << 3) 721428d7b3dSmrg#define MAG_MAPFILTER_ANISOTROPIC (2 << 3) 722428d7b3dSmrg#define MIN_MAPFILTER_NEAREST (0) 723428d7b3dSmrg#define MIN_MAPFILTER_LINEAR (1) 724428d7b3dSmrg#define MIN_MAPFILTER_ANISOTROPIC (2) 725428d7b3dSmrg#define ENABLE_KEYS (1<<15) 726428d7b3dSmrg#define DISABLE_COLOR_KEY 0 727428d7b3dSmrg#define DISABLE_CHROMA_KEY 0 728428d7b3dSmrg#define DISABLE_KILL_PIXEL 0 729428d7b3dSmrg#define ENABLE_MIP_MODE_FILTER (1 << 9) 730428d7b3dSmrg#define MIPFILTER_NONE 0 731428d7b3dSmrg#define MIPFILTER_NEAREST 1 732428d7b3dSmrg#define MIPFILTER_LINEAR 3 733428d7b3dSmrg 734428d7b3dSmrg#define TB0C_LAST_STAGE (1 << 31) 735428d7b3dSmrg#define TB0C_RESULT_SCALE_1X (0 << 29) 736428d7b3dSmrg#define TB0C_RESULT_SCALE_2X (1 << 29) 737428d7b3dSmrg#define TB0C_RESULT_SCALE_4X (2 << 29) 738428d7b3dSmrg#define TB0C_OP_ARG1 (1 << 25) 739428d7b3dSmrg#define TB0C_OP_MODULATE (3 << 25) 740428d7b3dSmrg#define TB0C_OUTPUT_WRITE_CURRENT (0 << 24) 741428d7b3dSmrg#define TB0C_OUTPUT_WRITE_ACCUM (1 << 24) 742428d7b3dSmrg#define TB0C_ARG3_REPLICATE_ALPHA (1<<23) 743428d7b3dSmrg#define TB0C_ARG3_INVERT (1<<22) 744428d7b3dSmrg#define TB0C_ARG3_SEL_XXX 745428d7b3dSmrg#define TB0C_ARG2_REPLICATE_ALPHA (1<<17) 746428d7b3dSmrg#define TB0C_ARG2_INVERT (1<<16) 747428d7b3dSmrg#define TB0C_ARG2_SEL_ONE (0 << 12) 748428d7b3dSmrg#define TB0C_ARG2_SEL_DIFFUSE (3 << 12) 749428d7b3dSmrg#define TB0C_ARG2_SEL_SPECULAR (4 << 12) 750428d7b3dSmrg#define TB0C_ARG2_SEL_FACTOR (1 << 12) 751428d7b3dSmrg#define TB0C_ARG2_SEL_TEXEL0 (6 << 12) 752428d7b3dSmrg#define TB0C_ARG2_SEL_TEXEL1 (7 << 12) 753428d7b3dSmrg#define TB0C_ARG2_SEL_TEXEL2 (8 << 12) 754428d7b3dSmrg#define TB0C_ARG2_SEL_TEXEL3 (9 << 12) 755428d7b3dSmrg#define TB0C_ARG1_REPLICATE_ALPHA (1<<11) 756428d7b3dSmrg#define TB0C_ARG1_INVERT (1<<10) 757428d7b3dSmrg#define TB0C_ARG1_SEL_ONE (0 << 6) 758428d7b3dSmrg#define TB0C_ARG1_SEL_DIFFUSE (3 << 6) 759428d7b3dSmrg#define TB0C_ARG1_SEL_SPECULAR (4 << 6) 760428d7b3dSmrg#define TB0C_ARG1_SEL_TEXEL0 (6 << 6) 761428d7b3dSmrg#define TB0C_ARG1_SEL_TEXEL1 (7 << 6) 762428d7b3dSmrg#define TB0C_ARG1_SEL_TEXEL2 (8 << 6) 763428d7b3dSmrg#define TB0C_ARG1_SEL_TEXEL3 (9 << 6) 764428d7b3dSmrg#define TB0C_ARG0_REPLICATE_ALPHA (1<<5) 765428d7b3dSmrg#define TB0C_ARG0_SEL_XXX 766428d7b3dSmrg 767428d7b3dSmrg#define TB0A_CTR_STAGE_ENABLE (1<<31) 768428d7b3dSmrg#define TB0A_RESULT_SCALE_1X (0 << 29) 769428d7b3dSmrg#define TB0A_RESULT_SCALE_2X (1 << 29) 770428d7b3dSmrg#define TB0A_RESULT_SCALE_4X (2 << 29) 771428d7b3dSmrg#define TB0A_OP_ARG1 (1 << 25) 772428d7b3dSmrg#define TB0A_OP_MODULATE (3 << 25) 773428d7b3dSmrg#define TB0A_OUTPUT_WRITE_CURRENT (0<<24) 774428d7b3dSmrg#define TB0A_OUTPUT_WRITE_ACCUM (1<<24) 775428d7b3dSmrg#define TB0A_CTR_STAGE_SEL_BITS_XXX 776428d7b3dSmrg#define TB0A_ARG3_SEL_XXX 777428d7b3dSmrg#define TB0A_ARG3_INVERT (1<<17) 778428d7b3dSmrg#define TB0A_ARG2_INVERT (1<<16) 779428d7b3dSmrg#define TB0A_ARG2_SEL_ONE (0 << 12) 780428d7b3dSmrg#define TB0A_ARG2_SEL_DIFFUSE (3 << 12) 781428d7b3dSmrg#define TB0A_ARG2_SEL_SPECULAR (4 << 12) 782428d7b3dSmrg#define TB0A_ARG2_SEL_TEXEL0 (6 << 12) 783428d7b3dSmrg#define TB0A_ARG2_SEL_TEXEL1 (7 << 12) 784428d7b3dSmrg#define TB0A_ARG2_SEL_TEXEL2 (8 << 12) 785428d7b3dSmrg#define TB0A_ARG2_SEL_TEXEL3 (9 << 12) 786428d7b3dSmrg#define TB0A_ARG1_INVERT (1<<10) 787428d7b3dSmrg#define TB0A_ARG1_SEL_ONE (0 << 6) 788428d7b3dSmrg#define TB0A_ARG1_SEL_DIFFUSE (3 << 6) 789428d7b3dSmrg#define TB0A_ARG1_SEL_SPECULAR (4 << 6) 790428d7b3dSmrg#define TB0A_ARG1_SEL_TEXEL0 (6 << 6) 791428d7b3dSmrg#define TB0A_ARG1_SEL_TEXEL1 (7 << 6) 792428d7b3dSmrg#define TB0A_ARG1_SEL_TEXEL2 (8 << 6) 793428d7b3dSmrg#define TB0A_ARG1_SEL_TEXEL3 (9 << 6) 794428d7b3dSmrg 795428d7b3dSmrg#endif /* GEN2_RENDER_H */ 796