i830_reg.h revision fe8aea9e
17117f1b4Smrg/************************************************************************** 27117f1b4Smrg * 37117f1b4Smrg * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 47117f1b4Smrg * All Rights Reserved. 5c1f859d4Smrg * 67117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a 77117f1b4Smrg * copy of this software and associated documentation files (the 87117f1b4Smrg * "Software"), to deal in the Software without restriction, including 97117f1b4Smrg * without limitation the rights to use, copy, modify, merge, publish, 107117f1b4Smrg * distribute, sub license, and/or sell copies of the Software, and to 117117f1b4Smrg * permit persons to whom the Software is furnished to do so, subject to 127117f1b4Smrg * the following conditions: 137117f1b4Smrg * 147117f1b4Smrg * The above copyright notice and this permission notice (including the 157117f1b4Smrg * next paragraph) shall be included in all copies or substantial portions 167117f1b4Smrg * of the Software. 177117f1b4Smrg * 187117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 197117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20b167d5e7Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21b167d5e7Smrg * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22b167d5e7Smrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23b167d5e7Smrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 247117f1b4Smrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 257117f1b4Smrg * 26c1f859d4Smrg **************************************************************************/ 27c1f859d4Smrg 28c1f859d4Smrg#ifndef _I830_REG_H_ 29c1f859d4Smrg#define _I830_REG_H_ 30c1f859d4Smrg 317117f1b4Smrg#define I830_SET_FIELD( var, mask, value ) (var &= ~(mask), var |= value) 327117f1b4Smrg 337117f1b4Smrg/* Flush */ 347117f1b4Smrg#define MI_FLUSH (0x04<<23) 357117f1b4Smrg#define MI_FLUSH_DW (0x26<<23) 367117f1b4Smrg 377117f1b4Smrg#define MI_WRITE_DIRTY_STATE (1<<4) 387117f1b4Smrg#define MI_END_SCENE (1<<3) 397117f1b4Smrg#define MI_GLOBAL_SNAPSHOT_COUNT_RESET (1<<3) 407117f1b4Smrg#define MI_INHIBIT_RENDER_CACHE_FLUSH (1<<2) 417117f1b4Smrg#define MI_STATE_INSTRUCTION_CACHE_FLUSH (1<<1) 427117f1b4Smrg#define MI_INVALIDATE_MAP_CACHE (1<<0) 437117f1b4Smrg/* broadwater flush bits */ 447117f1b4Smrg#define BRW_MI_GLOBAL_SNAPSHOT_RESET (1 << 3) 457117f1b4Smrg 467117f1b4Smrg#define MI_BATCH_BUFFER_END (0xA << 23) 477117f1b4Smrg 487117f1b4Smrg/* Noop */ 497117f1b4Smrg#define MI_NOOP 0x00 507117f1b4Smrg#define MI_NOOP_WRITE_ID (1<<22) 517117f1b4Smrg#define MI_NOOP_ID_MASK (1<<22 - 1) 527117f1b4Smrg 537117f1b4Smrg/* Wait for Events */ 547117f1b4Smrg#define MI_WAIT_FOR_EVENT (0x03<<23) 557117f1b4Smrg#define MI_WAIT_FOR_PIPEB_SVBLANK (1<<18) 567117f1b4Smrg#define MI_WAIT_FOR_PIPEA_SVBLANK (1<<17) 577117f1b4Smrg#define MI_WAIT_FOR_OVERLAY_FLIP (1<<16) 587117f1b4Smrg#define MI_WAIT_FOR_PIPEB_VBLANK (1<<7) 597117f1b4Smrg#define MI_WAIT_FOR_PIPEB_SCAN_LINE_WINDOW (1<<5) 607117f1b4Smrg#define MI_WAIT_FOR_PIPEA_VBLANK (1<<3) 617117f1b4Smrg#define MI_WAIT_FOR_PIPEA_SCAN_LINE_WINDOW (1<<1) 627117f1b4Smrg 637117f1b4Smrg/* Set the scan line for MI_WAIT_FOR_PIPE?_SCAN_LINE_WINDOW */ 647117f1b4Smrg#define MI_LOAD_SCAN_LINES_INCL (0x12<<23) 657117f1b4Smrg#define MI_LOAD_SCAN_LINES_DISPLAY_PIPEA (0) 667117f1b4Smrg#define MI_LOAD_SCAN_LINES_DISPLAY_PIPEB (0x1<<20) 677117f1b4Smrg 687117f1b4Smrg#define MI_LOAD_REGISTER_IMM (0x22<<23 | (3-2)) 697117f1b4Smrg 707117f1b4Smrg#define BCS_SWCTRL 0x22200 717117f1b4Smrg# define BCS_SWCTRL_SRC_Y (1 << 0) 727117f1b4Smrg# define BCS_SWCTRL_DST_Y (1 << 1) 737117f1b4Smrg 747117f1b4Smrg/* BLT commands */ 757117f1b4Smrg#define COLOR_BLT_CMD ((2<<29)|(0x40<<22)|(0x3)) 767117f1b4Smrg#define COLOR_BLT_WRITE_ALPHA (1<<21) 777117f1b4Smrg#define COLOR_BLT_WRITE_RGB (1<<20) 787117f1b4Smrg 797117f1b4Smrg#define XY_COLOR_BLT_CMD ((2<<29)|(0x50<<22)) 807117f1b4Smrg#define XY_COLOR_BLT_WRITE_ALPHA (1<<21) 817117f1b4Smrg#define XY_COLOR_BLT_WRITE_RGB (1<<20) 82c1f859d4Smrg#define XY_COLOR_BLT_TILED (1<<11) 83b167d5e7Smrg 847117f1b4Smrg#define XY_SETUP_CLIP_BLT_CMD ((2<<29)|(3<<22)) 857117f1b4Smrg 867e995a2eSmrg#define XY_SRC_COPY_BLT_CMD ((2<<29)|(0x53<<22)) 877117f1b4Smrg#define XY_SRC_COPY_BLT_WRITE_ALPHA (1<<21) 887117f1b4Smrg#define XY_SRC_COPY_BLT_WRITE_RGB (1<<20) 897117f1b4Smrg#define XY_SRC_COPY_BLT_SRC_TILED (1<<15) 907e995a2eSmrg#define XY_SRC_COPY_BLT_DST_TILED (1<<11) 917117f1b4Smrg 924a49301eSmrg#define SRC_COPY_BLT_CMD ((2<<29)|(0x43<<22)) 937117f1b4Smrg#define SRC_COPY_BLT_WRITE_ALPHA (1<<21) 947e995a2eSmrg#define SRC_COPY_BLT_WRITE_RGB (1<<20) 957117f1b4Smrg 967117f1b4Smrg#define XY_PAT_BLT_IMMEDIATE ((2<<29)|(0x72<<22)) 977117f1b4Smrg 987117f1b4Smrg#define XY_MONO_PAT_BLT_CMD ((0x2<<29)|(0x52<<22)) 997117f1b4Smrg#define XY_MONO_PAT_VERT_SEED ((1<<10)|(1<<9)|(1<<8)) 1007117f1b4Smrg#define XY_MONO_PAT_HORT_SEED ((1<<14)|(1<<13)|(1<<12)) 1017117f1b4Smrg#define XY_MONO_PAT_BLT_WRITE_ALPHA (1<<21) 1023464ebd5Sriastradh#define XY_MONO_PAT_BLT_WRITE_RGB (1<<20) 1037117f1b4Smrg 1047e995a2eSmrg#define XY_MONO_SRC_BLT_CMD ((0x2<<29)|(0x54<<22)) 1057117f1b4Smrg#define XY_MONO_SRC_BLT_WRITE_ALPHA (1<<21) 1067117f1b4Smrg#define XY_MONO_SRC_BLT_WRITE_RGB (1<<20) 1077117f1b4Smrg 1087117f1b4Smrg#define CMD_3D (0x3<<29) 1097117f1b4Smrg 1107117f1b4Smrg#define PRIM3D_INLINE (CMD_3D | (0x1f<<24)) 111c1f859d4Smrg#define PRIM3D_TRILIST (0x0<<18) 112b167d5e7Smrg#define PRIM3D_TRISTRIP (0x1<<18) 1137e995a2eSmrg#define PRIM3D_TRISTRIP_RVRSE (0x2<<18) 114b167d5e7Smrg#define PRIM3D_TRIFAN (0x3<<18) 1157117f1b4Smrg#define PRIM3D_POLY (0x4<<18) 116c1f859d4Smrg#define PRIM3D_LINELIST (0x5<<18) 1177117f1b4Smrg#define PRIM3D_LINESTRIP (0x6<<18) 1187117f1b4Smrg#define PRIM3D_RECTLIST (0x7<<18) 1197117f1b4Smrg#define PRIM3D_POINTLIST (0x8<<18) 1204a49301eSmrg#define PRIM3D_DIB (0x9<<18) 1217117f1b4Smrg#define PRIM3D_CLEAR_RECT (0xa<<18) 1224a49301eSmrg#define PRIM3D_ZONE_INIT (0xd<<18) 123c1f859d4Smrg#define PRIM3D_MASK (0x1f<<18) 1244a49301eSmrg 1253464ebd5Sriastradh#define _3DSTATE_AA_CMD (CMD_3D | (0x06<<24)) 1267e995a2eSmrg#define AA_LINE_ECAAR_WIDTH_ENABLE (1<<16) 1277117f1b4Smrg#define AA_LINE_ECAAR_WIDTH_0_5 0 1287e995a2eSmrg#define AA_LINE_ECAAR_WIDTH_1_0 (1<<14) 1297e995a2eSmrg#define AA_LINE_ECAAR_WIDTH_2_0 (2<<14) 1307e995a2eSmrg#define AA_LINE_ECAAR_WIDTH_4_0 (3<<14) 1317117f1b4Smrg#define AA_LINE_REGION_WIDTH_ENABLE (1<<8) 132d8407755Smaya#define AA_LINE_REGION_WIDTH_0_5 0 1334a49301eSmrg#define AA_LINE_REGION_WIDTH_1_0 (1<<6) 1347117f1b4Smrg#define AA_LINE_REGION_WIDTH_2_0 (2<<6) 1353464ebd5Sriastradh#define AA_LINE_REGION_WIDTH_4_0 (3<<6) 1367117f1b4Smrg#define AA_LINE_ENABLE ((1<<1) | 1) 1377117f1b4Smrg#define AA_LINE_DISABLE (1<<1) 1387117f1b4Smrg 1394a49301eSmrg#define _3DSTATE_BUF_INFO_CMD (CMD_3D | (0x1d<<24) | (0x8e<<16) | 1) 1407e995a2eSmrg/* Dword 1 */ 1413464ebd5Sriastradh#define BUF_3D_ID_COLOR_BACK (0x3<<24) 1427117f1b4Smrg#define BUF_3D_ID_DEPTH (0x7<<24) 1433464ebd5Sriastradh#define BUF_3D_USE_FENCE (1<<23) 1447e995a2eSmrg#define BUF_3D_TILED_SURFACE (1<<22) 1457e995a2eSmrg#define BUF_3D_TILE_WALK_X 0 1467117f1b4Smrg#define BUF_3D_TILE_WALK_Y (1<<21) 1477117f1b4Smrg#define BUF_3D_PITCH(x) (((x)/4)<<2) 1487117f1b4Smrg/* Dword 2 */ 1497117f1b4Smrg#define BUF_3D_ADDR(x) ((x) & ~0x3) 1507117f1b4Smrg 1517e995a2eSmrg#define _3DSTATE_COLOR_FACTOR_CMD (CMD_3D | (0x1d<<24) | (0x1<<16)) 1527e995a2eSmrg 1533464ebd5Sriastradh#define _3DSTATE_COLOR_FACTOR_N_CMD(stage) (CMD_3D | (0x1d<<24) | \ 1543464ebd5Sriastradh ((0x90+(stage))<<16)) 1553464ebd5Sriastradh 1567117f1b4Smrg#define _3DSTATE_CONST_BLEND_COLOR_CMD (CMD_3D | (0x1d<<24) | (0x88<<16)) 1577117f1b4Smrg 1587117f1b4Smrg#define _3DSTATE_DFLT_DIFFUSE_CMD (CMD_3D | (0x1d<<24) | (0x99<<16)) 1597117f1b4Smrg 1607117f1b4Smrg#define _3DSTATE_DFLT_SPEC_CMD (CMD_3D | (0x1d<<24) | (0x9a<<16)) 1617117f1b4Smrg 1627117f1b4Smrg#define _3DSTATE_DFLT_Z_CMD (CMD_3D | (0x1d<<24) | (0x98<<16)) 1637117f1b4Smrg 1647117f1b4Smrg#define _3DSTATE_DST_BUF_VARS_CMD (CMD_3D | (0x1d<<24) | (0x85<<16)) 1657117f1b4Smrg/* Dword 1 */ 1667117f1b4Smrg#define DSTORG_HORT_BIAS(x) ((x)<<20) 1677117f1b4Smrg#define DSTORG_VERT_BIAS(x) ((x)<<16) 1687117f1b4Smrg#define COLOR_4_2_2_CHNL_WRT_ALL 0 1697117f1b4Smrg#define COLOR_4_2_2_CHNL_WRT_Y (1<<12) 1707117f1b4Smrg#define COLOR_4_2_2_CHNL_WRT_CR (2<<12) 1717117f1b4Smrg#define COLOR_4_2_2_CHNL_WRT_CB (3<<12) 1727e995a2eSmrg#define COLOR_4_2_2_CHNL_WRT_CRCB (4<<12) 1734a49301eSmrg#define COLR_BUF_8BIT 0 1747117f1b4Smrg#define COLR_BUF_RGB555 (1<<8) 1757117f1b4Smrg#define COLR_BUF_RGB565 (2<<8) 1767117f1b4Smrg#define COLR_BUF_ARGB8888 (3<<8) 1777117f1b4Smrg#define COLR_BUF_ARGB4444 (8<<8) 1787117f1b4Smrg#define COLR_BUF_ARGB1555 (9<<8) 1793464ebd5Sriastradh#define DEPTH_IS_Z 0 1807117f1b4Smrg#define DEPTH_IS_W (1<<6) 1814a49301eSmrg#define DEPTH_FRMT_16_FIXED 0 1824a49301eSmrg#define DEPTH_FRMT_16_FLOAT (1<<2) 1834a49301eSmrg#define DEPTH_FRMT_24_FIXED_8_OTHER (2<<2) 1844a49301eSmrg#define DEPTH_FRMT_24_FLOAT_8_OTHER (3<<2) 1854a49301eSmrg#define VERT_LINE_STRIDE_1 (1<<1) 1864a49301eSmrg#define VERT_LINE_STRIDE_0 0 1877117f1b4Smrg#define VERT_LINE_STRIDE_OFS_1 1 1887117f1b4Smrg#define VERT_LINE_STRIDE_OFS_0 0 1897117f1b4Smrg 1907117f1b4Smrg#define _3DSTATE_DRAW_RECT_CMD (CMD_3D|(0x1d<<24)|(0x80<<16)|3) 1917117f1b4Smrg/* Dword 1 */ 1927117f1b4Smrg#define DRAW_RECT_DIS_DEPTH_OFS (1<<30) 1937117f1b4Smrg#define DRAW_DITHER_OFS_X(x) ((x)<<26) 1947117f1b4Smrg#define DRAW_DITHER_OFS_Y(x) ((x)<<24) 1957117f1b4Smrg/* Dword 2 */ 1963464ebd5Sriastradh#define DRAW_YMIN(x) ((x)<<16) 1977117f1b4Smrg#define DRAW_XMIN(x) (x) 1987e995a2eSmrg/* Dword 3 */ 1997117f1b4Smrg#define DRAW_YMAX(x) ((x)<<16) 2007117f1b4Smrg#define DRAW_XMAX(x) (x) 2017117f1b4Smrg/* Dword 4 */ 2027117f1b4Smrg#define DRAW_YORG(x) ((x)<<16) 2037117f1b4Smrg#define DRAW_XORG(x) (x) 2047117f1b4Smrg 2053464ebd5Sriastradh#define _3DSTATE_ENABLES_1_CMD (CMD_3D|(0x3<<24)) 2063464ebd5Sriastradh#define ENABLE_LOGIC_OP_MASK ((1<<23)|(1<<22)) 2077117f1b4Smrg#define ENABLE_LOGIC_OP ((1<<23)|(1<<22)) 2087117f1b4Smrg#define DISABLE_LOGIC_OP (1<<23) 2097117f1b4Smrg#define ENABLE_STENCIL_TEST ((1<<21)|(1<<20)) 2107117f1b4Smrg#define DISABLE_STENCIL_TEST (1<<21) 2117117f1b4Smrg#define ENABLE_DEPTH_BIAS ((1<<11)|(1<<10)) 2127117f1b4Smrg#define DISABLE_DEPTH_BIAS (1<<11) 2137117f1b4Smrg#define ENABLE_SPEC_ADD_MASK ((1<<9)|(1<<8)) 2147e995a2eSmrg#define ENABLE_SPEC_ADD ((1<<9)|(1<<8)) 2153464ebd5Sriastradh#define DISABLE_SPEC_ADD (1<<9) 2163464ebd5Sriastradh#define ENABLE_DIS_FOG_MASK ((1<<7)|(1<<6)) 2177117f1b4Smrg#define ENABLE_FOG ((1<<7)|(1<<6)) 2187117f1b4Smrg#define DISABLE_FOG (1<<7) 2197117f1b4Smrg#define ENABLE_DIS_ALPHA_TEST_MASK ((1<<5)|(1<<4)) 2203464ebd5Sriastradh#define ENABLE_ALPHA_TEST ((1<<5)|(1<<4)) 221cdc920a0Smrg#define DISABLE_ALPHA_TEST (1<<5) 2227117f1b4Smrg#define ENABLE_DIS_CBLEND_MASK ((1<<3)|(1<<2)) 2237117f1b4Smrg#define ENABLE_COLOR_BLEND ((1<<3)|(1<<2)) 2247117f1b4Smrg#define DISABLE_COLOR_BLEND (1<<3) 2257117f1b4Smrg#define ENABLE_DIS_DEPTH_TEST_MASK ((1<<1)|1) 2267117f1b4Smrg#define ENABLE_DEPTH_TEST ((1<<1)|1) 2277117f1b4Smrg#define DISABLE_DEPTH_TEST (1<<1) 2287117f1b4Smrg 2297117f1b4Smrg/* _3DSTATE_ENABLES_2, p138 */ 2307117f1b4Smrg#define _3DSTATE_ENABLES_2_CMD (CMD_3D|(0x4<<24)) 2317117f1b4Smrg#define ENABLE_STENCIL_WRITE ((1<<21)|(1<<20)) 2327117f1b4Smrg#define DISABLE_STENCIL_WRITE (1<<21) 2337e995a2eSmrg#define ENABLE_TEX_CACHE ((1<<17)|(1<<16)) 2347117f1b4Smrg#define DISABLE_TEX_CACHE (1<<17) 2353464ebd5Sriastradh#define ENABLE_DITHER ((1<<9)|(1<<8)) 2367117f1b4Smrg#define DISABLE_DITHER (1<<9) 237cdc920a0Smrg#define ENABLE_COLOR_MASK (1<<10) 2387117f1b4Smrg#define WRITEMASK_ALPHA (1<<7) 239cdc920a0Smrg#define WRITEMASK_ALPHA_SHIFT 7 2407117f1b4Smrg#define WRITEMASK_RED (1<<6) 2417117f1b4Smrg#define WRITEMASK_RED_SHIFT 6 2427117f1b4Smrg#define WRITEMASK_GREEN (1<<5) 243cdc920a0Smrg#define WRITEMASK_GREEN_SHIFT 5 2447117f1b4Smrg#define WRITEMASK_BLUE (1<<4) 2457117f1b4Smrg#define WRITEMASK_BLUE_SHIFT 4 2467117f1b4Smrg#define WRITEMASK_MASK ((1<<4)|(1<<5)|(1<<6)|(1<<7)) 2477117f1b4Smrg#define ENABLE_COLOR_WRITE ((1<<3)|(1<<2)) 2487117f1b4Smrg#define DISABLE_COLOR_WRITE (1<<3) 2497117f1b4Smrg#define ENABLE_DIS_DEPTH_WRITE_MASK 0x3 2503464ebd5Sriastradh#define ENABLE_DEPTH_WRITE ((1<<1)|1) 2517117f1b4Smrg#define DISABLE_DEPTH_WRITE (1<<1) 2523464ebd5Sriastradh 2533464ebd5Sriastradh/* _3DSTATE_FOG_COLOR, p139 */ 2543464ebd5Sriastradh#define _3DSTATE_FOG_COLOR_CMD (CMD_3D|(0x15<<24)) 2553464ebd5Sriastradh#define FOG_COLOR_RED(x) ((x)<<16) 2563464ebd5Sriastradh#define FOG_COLOR_GREEN(x) ((x)<<8) 2577117f1b4Smrg#define FOG_COLOR_BLUE(x) (x) 2587117f1b4Smrg 2597117f1b4Smrg/* _3DSTATE_FOG_MODE, p140 */ 2607117f1b4Smrg#define _3DSTATE_FOG_MODE_CMD (CMD_3D|(0x1d<<24)|(0x89<<16)|2) 2617117f1b4Smrg/* Dword 1 */ 2623464ebd5Sriastradh#define FOGFUNC_ENABLE (1<<31) 2637117f1b4Smrg#define FOGFUNC_VERTEX 0 2647117f1b4Smrg#define FOGFUNC_PIXEL_EXP (1<<28) 2657117f1b4Smrg#define FOGFUNC_PIXEL_EXP2 (2<<28) 2667117f1b4Smrg#define FOGFUNC_PIXEL_LINEAR (3<<28) 2677117f1b4Smrg#define FOGSRC_INDEX_Z (1<<27) 2687117f1b4Smrg#define FOGSRC_INDEX_W ((1<<27)|(1<<25)) 2697117f1b4Smrg#define FOG_LINEAR_CONST (1<<24) 2707117f1b4Smrg#define FOG_CONST_1(x) ((x)<<4) 2717117f1b4Smrg#define ENABLE_FOG_DENSITY (1<<23) 2727117f1b4Smrg/* Dword 2 */ 2737117f1b4Smrg#define FOG_CONST_2(x) (x) 2747117f1b4Smrg/* Dword 3 */ 2757e995a2eSmrg#define FOG_DENSITY(x) (x) 2767117f1b4Smrg 2777117f1b4Smrg/* _3DSTATE_INDEPENDENT_ALPHA_BLEND, p142 */ 2787117f1b4Smrg#define _3DSTATE_INDPT_ALPHA_BLEND_CMD (CMD_3D|(0x0b<<24)) 2797117f1b4Smrg#define ENABLE_INDPT_ALPHA_BLEND ((1<<23)|(1<<22)) 2807117f1b4Smrg#define DISABLE_INDPT_ALPHA_BLEND (1<<23) 2817117f1b4Smrg#define ALPHA_BLENDFUNC_MASK 0x3f0000 282b167d5e7Smrg#define ENABLE_ALPHA_BLENDFUNC (1<<21) 2837117f1b4Smrg#define ABLENDFUNC_ADD 0 2847117f1b4Smrg#define ABLENDFUNC_SUB (1<<16) 2857117f1b4Smrg#define ABLENDFUNC_RVSE_SUB (2<<16) 2867117f1b4Smrg#define ABLENDFUNC_MIN (3<<16) 2877117f1b4Smrg#define ABLENDFUNC_MAX (4<<16) 2887117f1b4Smrg#define SRC_DST_ABLEND_MASK 0xfff 2897117f1b4Smrg#define ENABLE_SRC_ABLEND_FACTOR (1<<11) 290cdc920a0Smrg#define SRC_ABLEND_FACT(x) ((x)<<6) 2917117f1b4Smrg#define ENABLE_DST_ABLEND_FACTOR (1<<5) 2927117f1b4Smrg#define DST_ABLEND_FACT(x) (x) 2937117f1b4Smrg 2947117f1b4Smrg#define BLENDFACTOR_ZERO 0x01 2957117f1b4Smrg#define BLENDFACTOR_ONE 0x02 2967117f1b4Smrg#define BLENDFACTOR_SRC_COLR 0x03 2977117f1b4Smrg#define BLENDFACTOR_INV_SRC_COLR 0x04 2987117f1b4Smrg#define BLENDFACTOR_SRC_ALPHA 0x05 2997117f1b4Smrg#define BLENDFACTOR_INV_SRC_ALPHA 0x06 300cdc920a0Smrg#define BLENDFACTOR_DST_ALPHA 0x07 3017117f1b4Smrg#define BLENDFACTOR_INV_DST_ALPHA 0x08 3027117f1b4Smrg#define BLENDFACTOR_DST_COLR 0x09 3037117f1b4Smrg#define BLENDFACTOR_INV_DST_COLR 0x0a 3047117f1b4Smrg#define BLENDFACTOR_SRC_ALPHA_SATURATE 0x0b 3057117f1b4Smrg#define BLENDFACTOR_CONST_COLOR 0x0c 3067117f1b4Smrg#define BLENDFACTOR_INV_CONST_COLOR 0x0d 3077117f1b4Smrg#define BLENDFACTOR_CONST_ALPHA 0x0e 3087117f1b4Smrg#define BLENDFACTOR_INV_CONST_ALPHA 0x0f 3097117f1b4Smrg#define BLENDFACTOR_MASK 0x0f 3107117f1b4Smrg 3117117f1b4Smrg/* _3DSTATE_MAP_BLEND_ARG, p152 */ 3127117f1b4Smrg#define _3DSTATE_MAP_BLEND_ARG_CMD(stage) (CMD_3D|(0x0e<<24)|((stage)<<20)) 3137117f1b4Smrg 3147117f1b4Smrg#define TEXPIPE_COLOR 0 3157117f1b4Smrg#define TEXPIPE_ALPHA (1<<18) 3167117f1b4Smrg#define TEXPIPE_KILL (2<<18) 3177117f1b4Smrg#define TEXBLEND_ARG0 0 3187117f1b4Smrg#define TEXBLEND_ARG1 (1<<15) 3197117f1b4Smrg#define TEXBLEND_ARG2 (2<<15) 3207117f1b4Smrg#define TEXBLEND_ARG3 (3<<15) 3217117f1b4Smrg#define TEXBLENDARG_MODIFY_PARMS (1<<6) 3227117f1b4Smrg#define TEXBLENDARG_REPLICATE_ALPHA (1<<5) 3237117f1b4Smrg#define TEXBLENDARG_INV_ARG (1<<4) 3247117f1b4Smrg#define TEXBLENDARG_ONE 0 3257117f1b4Smrg#define TEXBLENDARG_FACTOR 0x01 3267e995a2eSmrg#define TEXBLENDARG_ACCUM 0x02 3277117f1b4Smrg#define TEXBLENDARG_DIFFUSE 0x03 3287117f1b4Smrg#define TEXBLENDARG_SPEC 0x04 3297117f1b4Smrg#define TEXBLENDARG_CURRENT 0x05 3303464ebd5Sriastradh#define TEXBLENDARG_TEXEL0 0x06 3317117f1b4Smrg#define TEXBLENDARG_TEXEL1 0x07 332cdc920a0Smrg#define TEXBLENDARG_TEXEL2 0x08 3337117f1b4Smrg#define TEXBLENDARG_TEXEL3 0x09 3347117f1b4Smrg#define TEXBLENDARG_FACTOR_N 0x0e 3357117f1b4Smrg 3367117f1b4Smrg/* _3DSTATE_MAP_BLEND_OP, p155 */ 3377117f1b4Smrg#define _3DSTATE_MAP_BLEND_OP_CMD(stage) (CMD_3D|(0x0d<<24)|((stage)<<20)) 3387117f1b4Smrg#if 0 3397117f1b4Smrg# define TEXPIPE_COLOR 0 3407117f1b4Smrg# define TEXPIPE_ALPHA (1<<18) 3417117f1b4Smrg# define TEXPIPE_KILL (2<<18) 3427117f1b4Smrg#endif 3437117f1b4Smrg#define ENABLE_TEXOUTPUT_WRT_SEL (1<<17) 3447117f1b4Smrg#define TEXOP_OUTPUT_CURRENT 0 3457117f1b4Smrg#define TEXOP_OUTPUT_ACCUM (1<<15) 3467117f1b4Smrg#define ENABLE_TEX_CNTRL_STAGE ((1<<12)|(1<<11)) 3474a49301eSmrg#define DISABLE_TEX_CNTRL_STAGE (1<<12) 3487117f1b4Smrg#define TEXOP_SCALE_SHIFT 9 3497117f1b4Smrg#define TEXOP_SCALE_1X (0 << TEXOP_SCALE_SHIFT) 3507117f1b4Smrg#define TEXOP_SCALE_2X (1 << TEXOP_SCALE_SHIFT) 3517117f1b4Smrg#define TEXOP_SCALE_4X (2 << TEXOP_SCALE_SHIFT) 3527117f1b4Smrg#define TEXOP_MODIFY_PARMS (1<<8) 353b167d5e7Smrg#define TEXOP_LAST_STAGE (1<<7) 3547117f1b4Smrg#define TEXBLENDOP_KILLPIXEL 0x02 3553464ebd5Sriastradh#define TEXBLENDOP_ARG1 0x01 3567e995a2eSmrg#define TEXBLENDOP_ARG2 0x02 3577e995a2eSmrg#define TEXBLENDOP_MODULATE 0x03 3587e995a2eSmrg#define TEXBLENDOP_ADD 0x06 3597e995a2eSmrg#define TEXBLENDOP_ADDSIGNED 0x07 3607e995a2eSmrg#define TEXBLENDOP_BLEND 0x08 3617e995a2eSmrg#define TEXBLENDOP_BLEND_AND_ADD 0x09 3627e995a2eSmrg#define TEXBLENDOP_SUBTRACT 0x0a 3637e995a2eSmrg#define TEXBLENDOP_DOT3 0x0b 3647e995a2eSmrg#define TEXBLENDOP_DOT4 0x0c 3657e995a2eSmrg#define TEXBLENDOP_MODULATE_AND_ADD 0x0d 366d8407755Smaya#define TEXBLENDOP_MODULATE_2X_AND_ADD 0x0e 3677e995a2eSmrg#define TEXBLENDOP_MODULATE_4X_AND_ADD 0x0f 3687e995a2eSmrg 3697e995a2eSmrg/* _3DSTATE_MAP_BUMP_TABLE, p160 TODO */ 3703464ebd5Sriastradh/* _3DSTATE_MAP_COLOR_CHROMA_KEY, p161 TODO */ 3717117f1b4Smrg 3727117f1b4Smrg#define _3DSTATE_MAP_COORD_TRANSFORM ((3<<29)|(0x1d<<24)|(0x8c<<16)) 3737117f1b4Smrg#define DISABLE_TEX_TRANSFORM (1<<28) 3747117f1b4Smrg#define TEXTURE_SET(x) (x<<29) 3757117f1b4Smrg 3767117f1b4Smrg#define _3DSTATE_VERTEX_TRANSFORM ((3<<29)|(0x1d<<24)|(0x8b<<16)) 3777117f1b4Smrg#define DISABLE_VIEWPORT_TRANSFORM (1<<31) 3787117f1b4Smrg#define DISABLE_PERSPECTIVE_DIVIDE (1<<29) 3797117f1b4Smrg 3807117f1b4Smrg/* _3DSTATE_MAP_COORD_SET_BINDINGS, p162 */ 3813464ebd5Sriastradh#define _3DSTATE_MAP_COORD_SETBIND_CMD (CMD_3D|(0x1d<<24)|(0x02<<16)) 3827117f1b4Smrg#define TEXBIND_MASK3 ((1<<15)|(1<<14)|(1<<13)|(1<<12)) 3833464ebd5Sriastradh#define TEXBIND_MASK2 ((1<<11)|(1<<10)|(1<<9)|(1<<8)) 384b167d5e7Smrg#define TEXBIND_MASK1 ((1<<7)|(1<<6)|(1<<5)|(1<<4)) 3853464ebd5Sriastradh#define TEXBIND_MASK0 ((1<<3)|(1<<2)|(1<<1)|1) 3863464ebd5Sriastradh 3873464ebd5Sriastradh#define TEXBIND_SET3(x) ((x)<<12) 3887117f1b4Smrg#define TEXBIND_SET2(x) ((x)<<8) 3897117f1b4Smrg#define TEXBIND_SET1(x) ((x)<<4) 3907e995a2eSmrg#define TEXBIND_SET0(x) (x) 3917e995a2eSmrg 3927e995a2eSmrg#define TEXCOORDSRC_KEEP 0 3937e995a2eSmrg#define TEXCOORDSRC_DEFAULT 0x01 3947e995a2eSmrg#define TEXCOORDSRC_VTXSET_0 0x08 3957e995a2eSmrg#define TEXCOORDSRC_VTXSET_1 0x09 3967e995a2eSmrg#define TEXCOORDSRC_VTXSET_2 0x0a 3977e995a2eSmrg#define TEXCOORDSRC_VTXSET_3 0x0b 3987117f1b4Smrg#define TEXCOORDSRC_VTXSET_4 0x0c 399d8407755Smaya#define TEXCOORDSRC_VTXSET_5 0x0d 400d8407755Smaya#define TEXCOORDSRC_VTXSET_6 0x0e 4017e995a2eSmrg#define TEXCOORDSRC_VTXSET_7 0x0f 4027117f1b4Smrg 403b167d5e7Smrg#define MAP_UNIT(unit) ((unit)<<16) 4043464ebd5Sriastradh#define MAP_UNIT_MASK (0x7<<16) 4057117f1b4Smrg 4067117f1b4Smrg/* _3DSTATE_MAP_COORD_SETS, p164 */ 4077117f1b4Smrg#define _3DSTATE_MAP_COORD_SET_CMD (CMD_3D|(0x1c<<24)|(0x01<<19)) 4087117f1b4Smrg#define TEXCOORD_SET(n) ((n)<<16) 4097e995a2eSmrg#define ENABLE_TEXCOORD_PARAMS (1<<15) 4103464ebd5Sriastradh#define TEXCOORDS_ARE_NORMAL (1<<14) 4117e995a2eSmrg#define TEXCOORDS_ARE_IN_TEXELUNITS 0 4123464ebd5Sriastradh#define TEXCOORDTYPE_CARTESIAN 0 4137117f1b4Smrg#define TEXCOORDTYPE_HOMOGENEOUS (1<<11) 4147117f1b4Smrg#define TEXCOORDTYPE_VECTOR (2<<11) 4153464ebd5Sriastradh#define TEXCOORDTYPE_MASK (0x7<<11) 4163464ebd5Sriastradh#define ENABLE_ADDR_V_CNTL (1<<7) 4173464ebd5Sriastradh#define ENABLE_ADDR_U_CNTL (1<<3) 418b167d5e7Smrg#define TEXCOORD_ADDR_V_MODE(x) ((x)<<4) 4193464ebd5Sriastradh#define TEXCOORD_ADDR_U_MODE(x) (x) 4203464ebd5Sriastradh#define TEXCOORDMODE_WRAP 0 4213464ebd5Sriastradh#define TEXCOORDMODE_MIRROR 1 4223464ebd5Sriastradh#define TEXCOORDMODE_CLAMP 2 423b167d5e7Smrg#define TEXCOORDMODE_WRAP_SHORTEST 3 424eabf4f72Sriastradh#define TEXCOORDMODE_CLAMP_BORDER 4 425eabf4f72Sriastradh#define TEXCOORD_ADDR_V_MASK 0x70 4267117f1b4Smrg#define TEXCOORD_ADDR_U_MASK 0x7 4277117f1b4Smrg 4287117f1b4Smrg/* _3DSTATE_MAP_CUBE, p168 TODO */ 4297117f1b4Smrg#define _3DSTATE_MAP_CUBE (CMD_3D|(0x1c<<24)|(0x0a<<19)) 4307117f1b4Smrg#define CUBE_NEGX_ENABLE (1<<5) 4313464ebd5Sriastradh#define CUBE_POSX_ENABLE (1<<4) 4327117f1b4Smrg#define CUBE_NEGY_ENABLE (1<<3) 4337117f1b4Smrg#define CUBE_POSY_ENABLE (1<<2) 4347117f1b4Smrg#define CUBE_NEGZ_ENABLE (1<<1) 4357117f1b4Smrg#define CUBE_POSZ_ENABLE (1<<0) 4367e995a2eSmrg 4377117f1b4Smrg#define _3DSTATE_MAP_INFO_CMD (CMD_3D|(0x1d<<24)|(0x0<<16)|3) 4387117f1b4Smrg#define TEXMAP_INDEX(x) ((x)<<28) 4397117f1b4Smrg#define MAP_SURFACE_8BIT (1<<24) 4407117f1b4Smrg#define MAP_SURFACE_16BIT (2<<24) 4417117f1b4Smrg#define MAP_SURFACE_32BIT (3<<24) 4427117f1b4Smrg#define MAP_FORMAT_2D (0) 4437117f1b4Smrg#define MAP_FORMAT_3D_CUBE (1<<11) 4447117f1b4Smrg 4457117f1b4Smrg/* _3DSTATE_MODES_1, p190 */ 4467117f1b4Smrg#define _3DSTATE_MODES_1_CMD (CMD_3D|(0x08<<24)) 4477117f1b4Smrg#define BLENDFUNC_MASK 0x3f0000 4487117f1b4Smrg#define ENABLE_COLR_BLND_FUNC (1<<21) 4497117f1b4Smrg#define BLENDFUNC_ADD 0 4503464ebd5Sriastradh#define BLENDFUNC_SUB (1<<16) 4514a49301eSmrg#define BLENDFUNC_RVRSE_SUB (2<<16) 4527117f1b4Smrg#define BLENDFUNC_MIN (3<<16) 4537117f1b4Smrg#define BLENDFUNC_MAX (4<<16) 454b167d5e7Smrg#define SRC_DST_BLND_MASK 0xfff 455b167d5e7Smrg#define ENABLE_SRC_BLND_FACTOR (1<<11) 4567117f1b4Smrg#define ENABLE_DST_BLND_FACTOR (1<<5) 4574a49301eSmrg#define SRC_BLND_FACT(x) ((x)<<6) 4584a49301eSmrg#define DST_BLND_FACT(x) (x) 4594a49301eSmrg 4604a49301eSmrg/* _3DSTATE_MODES_2, p192 */ 4614a49301eSmrg#define _3DSTATE_MODES_2_CMD (CMD_3D|(0x0f<<24)) 4624a49301eSmrg#define ENABLE_GLOBAL_DEPTH_BIAS (1<<22) 4634a49301eSmrg#define GLOBAL_DEPTH_BIAS(x) ((x)<<14) 4643464ebd5Sriastradh#define ENABLE_ALPHA_TEST_FUNC (1<<13) 4654a49301eSmrg#define ENABLE_ALPHA_REF_VALUE (1<<8) 466b167d5e7Smrg#define ALPHA_TEST_FUNC(x) ((x)<<9) 467b167d5e7Smrg#define ALPHA_REF_VALUE(x) (x) 4684a49301eSmrg 469b167d5e7Smrg#define ALPHA_TEST_REF_MASK 0x3fff 4704a49301eSmrg 4713464ebd5Sriastradh/* _3DSTATE_MODES_3, p193 */ 472b167d5e7Smrg#define _3DSTATE_MODES_3_CMD (CMD_3D|(0x02<<24)) 473b167d5e7Smrg#define DEPTH_TEST_FUNC_MASK 0x1f0000 4743464ebd5Sriastradh#define ENABLE_DEPTH_TEST_FUNC (1<<20) 475b167d5e7Smrg/* Uses COMPAREFUNC */ 4767e995a2eSmrg#define DEPTH_TEST_FUNC(x) ((x)<<16) 4777e995a2eSmrg#define ENABLE_ALPHA_SHADE_MODE (1<<11) 4784a49301eSmrg#define ENABLE_FOG_SHADE_MODE (1<<9) 4793464ebd5Sriastradh#define ENABLE_SPEC_SHADE_MODE (1<<7) 480b167d5e7Smrg#define ENABLE_COLOR_SHADE_MODE (1<<5) 481b167d5e7Smrg#define ALPHA_SHADE_MODE(x) ((x)<<10) 4823464ebd5Sriastradh#define FOG_SHADE_MODE(x) ((x)<<8) 4837e995a2eSmrg#define SPEC_SHADE_MODE(x) ((x)<<6) 4847e995a2eSmrg#define COLOR_SHADE_MODE(x) ((x)<<4) 485b167d5e7Smrg#define CULLMODE_MASK 0xf 486b167d5e7Smrg#define ENABLE_CULL_MODE (1<<3) 487b167d5e7Smrg#define CULLMODE_BOTH 0 4883464ebd5Sriastradh#define CULLMODE_NONE 1 489b167d5e7Smrg#define CULLMODE_CW 2 490b167d5e7Smrg#define CULLMODE_CCW 3 491b167d5e7Smrg 492b167d5e7Smrg#define SHADE_MODE_LINEAR 0 493b167d5e7Smrg#define SHADE_MODE_FLAT 0x1 494b167d5e7Smrg 495b167d5e7Smrg/* _3DSTATE_MODES_4, p195 */ 496b167d5e7Smrg#define _3DSTATE_MODES_4_CMD (CMD_3D|(0x16<<24)) 497b167d5e7Smrg#define ENABLE_LOGIC_OP_FUNC (1<<23) 498b167d5e7Smrg#define LOGIC_OP_FUNC(x) ((x)<<18) 499b167d5e7Smrg#define LOGICOP_MASK ((1<<18)|(1<<19)|(1<<20)|(1<<21)) 5003464ebd5Sriastradh#define LOGICOP_CLEAR 0 5013464ebd5Sriastradh#define LOGICOP_NOR 0x1 502b167d5e7Smrg#define LOGICOP_AND_INV 0x2 5034a49301eSmrg#define LOGICOP_COPY_INV 0x3 5044a49301eSmrg#define LOGICOP_AND_RVRSE 0x4 5054a49301eSmrg#define LOGICOP_INV 0x5 5064a49301eSmrg#define LOGICOP_XOR 0x6 5074a49301eSmrg#define LOGICOP_NAND 0x7 5084a49301eSmrg#define LOGICOP_AND 0x8 5094a49301eSmrg#define LOGICOP_EQUIV 0x9 5104a49301eSmrg#define LOGICOP_NOOP 0xa 5114a49301eSmrg#define LOGICOP_OR_INV 0xb 5124a49301eSmrg#define LOGICOP_COPY 0xc 5134a49301eSmrg#define LOGICOP_OR_RVRSE 0xd 5144a49301eSmrg#define LOGICOP_OR 0xe 5154a49301eSmrg#define LOGICOP_SET 0xf 5163464ebd5Sriastradh#define MODE4_ENABLE_STENCIL_TEST_MASK ((1<<17)|(0xff00)) 5173464ebd5Sriastradh#define ENABLE_STENCIL_TEST_MASK (1<<17) 5183464ebd5Sriastradh#define STENCIL_TEST_MASK(x) ((x)<<8) 5193464ebd5Sriastradh#define MODE4_ENABLE_STENCIL_WRITE_MASK ((1<<16)|(0x00ff)) 5203464ebd5Sriastradh#define ENABLE_STENCIL_WRITE_MASK (1<<16) 5213464ebd5Sriastradh#define STENCIL_WRITE_MASK(x) ((x)&0xff) 5223464ebd5Sriastradh 5233464ebd5Sriastradh/* _3DSTATE_MODES_5, p196 */ 5243464ebd5Sriastradh#define _3DSTATE_MODES_5_CMD (CMD_3D|(0x0c<<24)) 5253464ebd5Sriastradh#define ENABLE_SPRITE_POINT_TEX (1<<23) 5263464ebd5Sriastradh#define SPRITE_POINT_TEX_ON (1<<22) 5273464ebd5Sriastradh#define SPRITE_POINT_TEX_OFF 0 5283464ebd5Sriastradh#define FLUSH_RENDER_CACHE (1<<18) 5293464ebd5Sriastradh#define FLUSH_TEXTURE_CACHE (1<<16) 5303464ebd5Sriastradh#define FIXED_LINE_WIDTH_MASK 0xfc00 5313464ebd5Sriastradh#define ENABLE_FIXED_LINE_WIDTH (1<<15) 5323464ebd5Sriastradh#define FIXED_LINE_WIDTH(x) ((x)<<10) 5333464ebd5Sriastradh#define FIXED_POINT_WIDTH_MASK 0x3ff 5343464ebd5Sriastradh#define ENABLE_FIXED_POINT_WIDTH (1<<9) 535b167d5e7Smrg#define FIXED_POINT_WIDTH(x) (x) 536b167d5e7Smrg 537b167d5e7Smrg/* _3DSTATE_RASTERIZATION_RULES, p198 */ 538b167d5e7Smrg#define _3DSTATE_RASTER_RULES_CMD (CMD_3D|(0x07<<24)) 539b167d5e7Smrg#define ENABLE_POINT_RASTER_RULE (1<<15) 540b167d5e7Smrg#define OGL_POINT_RASTER_RULE (1<<13) 541b167d5e7Smrg#define ENABLE_LINE_STRIP_PROVOKE_VRTX (1<<8) 542b167d5e7Smrg#define ENABLE_TRI_FAN_PROVOKE_VRTX (1<<5) 5437e995a2eSmrg#define ENABLE_TRI_STRIP_PROVOKE_VRTX (1<<2) 5447e995a2eSmrg#define LINE_STRIP_PROVOKE_VRTX(x) ((x)<<6) 5457117f1b4Smrg#define TRI_FAN_PROVOKE_VRTX(x) ((x)<<3) 5467117f1b4Smrg#define TRI_STRIP_PROVOKE_VRTX(x) (x) 5477117f1b4Smrg 5487117f1b4Smrg/* _3DSTATE_SCISSOR_ENABLE, p200 */ 5497117f1b4Smrg#define _3DSTATE_SCISSOR_ENABLE_CMD (CMD_3D|(0x1c<<24)|(0x10<<19)) 5507117f1b4Smrg#define ENABLE_SCISSOR_RECT ((1<<1) | 1) 5517117f1b4Smrg#define DISABLE_SCISSOR_RECT (1<<1) 5527117f1b4Smrg 553b167d5e7Smrg/* _3DSTATE_SCISSOR_RECTANGLE_0, p201 */ 554b167d5e7Smrg#define _3DSTATE_SCISSOR_RECT_0_CMD (CMD_3D|(0x1d<<24)|(0x81<<16)|1) 5557117f1b4Smrg/* Dword 1 */ 556b167d5e7Smrg#define SCISSOR_RECT_0_YMIN(x) ((x)<<16) 557b167d5e7Smrg#define SCISSOR_RECT_0_XMIN(x) (x) 5587117f1b4Smrg/* Dword 2 */ 5597117f1b4Smrg#define SCISSOR_RECT_0_YMAX(x) ((x)<<16) 560b167d5e7Smrg#define SCISSOR_RECT_0_XMAX(x) (x) 561b167d5e7Smrg 562b167d5e7Smrg/* _3DSTATE_STENCIL_TEST, p202 */ 563b167d5e7Smrg#define _3DSTATE_STENCIL_TEST_CMD (CMD_3D|(0x09<<24)) 564b167d5e7Smrg#define ENABLE_STENCIL_PARMS (1<<23) 565b167d5e7Smrg#define STENCIL_OPS_MASK (0xffc000) 566b167d5e7Smrg#define STENCIL_FAIL_OP(x) ((x)<<20) 567b167d5e7Smrg#define STENCIL_PASS_DEPTH_FAIL_OP(x) ((x)<<17) 568b167d5e7Smrg#define STENCIL_PASS_DEPTH_PASS_OP(x) ((x)<<14) 569b167d5e7Smrg 570b167d5e7Smrg#define ENABLE_STENCIL_TEST_FUNC_MASK ((1<<13)|(1<<12)|(1<<11)|(1<<10)|(1<<9)) 571b167d5e7Smrg#define ENABLE_STENCIL_TEST_FUNC (1<<13) 572b167d5e7Smrg/* Uses COMPAREFUNC */ 573b167d5e7Smrg#define STENCIL_TEST_FUNC(x) ((x)<<9) 574b167d5e7Smrg#define STENCIL_REF_VALUE_MASK ((1<<8)|0xff) 575b167d5e7Smrg#define ENABLE_STENCIL_REF_VALUE (1<<8) 576b167d5e7Smrg#define STENCIL_REF_VALUE(x) (x) 577b167d5e7Smrg 578b167d5e7Smrg/* _3DSTATE_VERTEX_FORMAT, p204 */ 579b167d5e7Smrg#define _3DSTATE_VFT0_CMD (CMD_3D|(0x05<<24)) 580b167d5e7Smrg#define VFT0_POINT_WIDTH (1<<12) 581b167d5e7Smrg#define VFT0_TEX_COUNT_MASK (7<<8) 582b167d5e7Smrg#define VFT0_TEX_COUNT_SHIFT 8 583b167d5e7Smrg#define VFT0_TEX_COUNT(x) ((x)<<8) 584b167d5e7Smrg#define VFT0_SPEC (1<<7) 585b167d5e7Smrg#define VFT0_DIFFUSE (1<<6) 586b167d5e7Smrg#define VFT0_DEPTH_OFFSET (1<<5) 587b167d5e7Smrg#define VFT0_XYZ (1<<1) 588b167d5e7Smrg#define VFT0_XYZW (2<<1) 589b167d5e7Smrg#define VFT0_XY (3<<1) 5907e995a2eSmrg#define VFT0_XYW (4<<1) 5917e995a2eSmrg#define VFT0_XYZW_MASK (7<<1) 592b167d5e7Smrg 593b167d5e7Smrg/* _3DSTATE_VERTEX_FORMAT_2, p206 */ 594b167d5e7Smrg#define _3DSTATE_VERTEX_FORMAT_2_CMD (CMD_3D|(0x0a<<24)) 595b167d5e7Smrg#define VFT1_TEX7_FMT(x) ((x)<<14) 596b167d5e7Smrg#define VFT1_TEX6_FMT(x) ((x)<<12) 597b167d5e7Smrg#define VFT1_TEX5_FMT(x) ((x)<<10) 598b167d5e7Smrg#define VFT1_TEX4_FMT(x) ((x)<<8) 599b167d5e7Smrg#define VFT1_TEX3_FMT(x) ((x)<<6) 600b167d5e7Smrg#define VFT1_TEX2_FMT(x) ((x)<<4) 601b167d5e7Smrg#define VFT1_TEX1_FMT(x) ((x)<<2) 602b167d5e7Smrg#define VFT1_TEX0_FMT(x) (x) 603b167d5e7Smrg#define VFT1_TEX0_MASK 3 604b167d5e7Smrg#define VFT1_TEX1_SHIFT 2 605b167d5e7Smrg#define TEXCOORDFMT_2D 0 6067e995a2eSmrg#define TEXCOORDFMT_3D 1 6077e995a2eSmrg#define TEXCOORDFMT_4D 2 6087e995a2eSmrg#define TEXCOORDFMT_1D 3 6097e995a2eSmrg 6107e995a2eSmrg/*New stuff picked up along the way */ 6117e995a2eSmrg 612b167d5e7Smrg#define MLC_LOD_BIAS_MASK ((1<<7)-1) 613b167d5e7Smrg 614b167d5e7Smrg/* _3DSTATE_VERTEX_TRANSFORM, p207 */ 615b167d5e7Smrg#define _3DSTATE_VERTEX_TRANS_CMD (CMD_3D|(0x1d<<24)|(0x8b<<16)|0) 616b167d5e7Smrg#define _3DSTATE_VERTEX_TRANS_MTX_CMD (CMD_3D|(0x1d<<24)|(0x8b<<16)|6) 617b167d5e7Smrg/* Dword 1 */ 618b167d5e7Smrg#define ENABLE_VIEWPORT_TRANSFORM ((1<<31)|(1<<30)) 619b167d5e7Smrg#define DISABLE_VIEWPORT_TRANSFORM (1<<31) 620b167d5e7Smrg#define ENABLE_PERSP_DIVIDE ((1<<29)|(1<<28)) 621b167d5e7Smrg#define DISABLE_PERSP_DIVIDE (1<<29) 622d8407755Smaya#define VRTX_TRANS_LOAD_MATRICES 0x7421 623d8407755Smaya#define VRTX_TRANS_NO_LOAD_MATRICES 0x0000 624d8407755Smaya/* Dword 2 -> 7 are matrix elements */ 625d8407755Smaya 626d8407755Smaya/* _3DSTATE_W_STATE, p209 */ 627d8407755Smaya#define _3DSTATE_W_STATE_CMD (CMD_3D|(0x1d<<24)|(0x8d<<16)|1) 628d8407755Smaya/* Dword 1 */ 629d8407755Smaya#define MAGIC_W_STATE_DWORD1 0x00000008 630d8407755Smaya/* Dword 2 */ 631d8407755Smaya#define WFAR_VALUE(x) (x) 632d8407755Smaya 633b167d5e7Smrg/* Stipple command, carried over from the i810, apparently: 634b167d5e7Smrg */ 635b167d5e7Smrg#define _3DSTATE_STIPPLE (CMD_3D|(0x1d<<24)|(0x83<<16)) 636b167d5e7Smrg#define ST1_ENABLE (1<<16) 637b167d5e7Smrg#define ST1_MASK (0xffff) 6387117f1b4Smrg 6397117f1b4Smrg#define _3DSTATE_LOAD_STATE_IMMEDIATE_1 (CMD_3D|(0x1d<<24)|(0x04<<16)) 640b167d5e7Smrg#define I1_LOAD_S(n) (1<<((n)+4)) 6417117f1b4Smrg#define S3_POINT_WIDTH_SHIFT 23 642b167d5e7Smrg#define S3_LINE_WIDTH_SHIFT 19 643b167d5e7Smrg#define S3_ALPHA_SHADE_MODE_SHIFT 18 6447117f1b4Smrg#define S3_FOG_SHADE_MODE_SHIFT 17 645b167d5e7Smrg#define S3_SPEC_SHADE_MODE_SHIFT 16 646b167d5e7Smrg#define S3_COLOR_SHADE_MODE_SHIFT 15 647b167d5e7Smrg#define S3_CULL_MODE_SHIFT 13 648b167d5e7Smrg#define S3_CULLMODE_BOTH (0) 649b167d5e7Smrg#define S3_CULLMODE_NONE (1<<13) 650b167d5e7Smrg#define S3_CULLMODE_CW (2<<13) 6517e995a2eSmrg#define S3_CULLMODE_CCW (3<<13) 6523464ebd5Sriastradh#define S3_POINT_WIDTH_PRESENT (1<<12) 6537e995a2eSmrg#define S3_SPEC_FOG_PRESENT (1<<11) 6547e995a2eSmrg#define S3_DIFFUSE_PRESENT (1<<10) 6557e995a2eSmrg#define S3_DEPTH_OFFSET_PRESENT (1<<9) 6567e995a2eSmrg#define S3_POSITION_SHIFT 6 6577e995a2eSmrg#define S3_VERTEXHAS_XYZ (1<<6) 6587117f1b4Smrg#define S3_VERTEXHAS_XYZW (2<<6) 6594a49301eSmrg#define S3_VERTEXHAS_XY (3<<6) 660b167d5e7Smrg#define S3_VERTEXHAS_XYW (4<<6) 6614a49301eSmrg#define S3_ENABLE_SPEC_ADD (1<<5) 662b167d5e7Smrg#define S3_ENABLE_FOG (1<<4) 6637e995a2eSmrg#define S3_ENABLE_LOCAL_DEPTH_BIAS (1<<3) 6644a49301eSmrg#define S3_ENABLE_SPRITE_POINT (1<<1) 665b167d5e7Smrg#define S3_ENABLE_ANTIALIASING 1 6667e995a2eSmrg#define S8_ENABLE_ALPHA_TEST (1<<31) 6674a49301eSmrg#define S8_ALPHA_TEST_FUNC_SHIFT 28 6684a49301eSmrg#define S8_ALPHA_REFVALUE_SHIFT 20 669b167d5e7Smrg#define S8_ENABLE_DEPTH_TEST (1<<19) 6703464ebd5Sriastradh#define S8_DEPTH_TEST_FUNC_SHIFT 16 6717e995a2eSmrg#define S8_ENABLE_COLOR_BLEND (1<<15) 6727e995a2eSmrg#define S8_COLOR_BLEND_FUNC_SHIFT 12 6737e995a2eSmrg#define S8_BLENDFUNC_ADD (0) 6743464ebd5Sriastradh#define S8_BLENDFUNC_SUB (1<<12) 675b167d5e7Smrg#define S8_BLENDFUNC_RVRSE_SUB (2<<12) 676b167d5e7Smrg#define S8_BLENDFUNC_MIN (3<<12) 677b167d5e7Smrg#define S8_BLENDFUNC_MAX (4<<12) 678b167d5e7Smrg#define S8_SRC_BLEND_FACTOR_SHIFT 8 6793464ebd5Sriastradh#define S8_DST_BLEND_FACTOR_SHIFT 4 680b167d5e7Smrg#define S8_ENABLE_DEPTH_BUFFER_WRITE (1<<3) 681b167d5e7Smrg#define S8_ENABLE_COLOR_BUFFER_WRITE (1<<2) 682b167d5e7Smrg 683b167d5e7Smrg#define _3DSTATE_LOAD_STATE_IMMEDIATE_2 (CMD_3D|(0x1d<<24)|(0x03<<16)) 6843464ebd5Sriastradh#define LOAD_TEXTURE_MAP(x) (1<<((x)+11)) 6857e995a2eSmrg#define LOAD_TEXTURE_BLEND_STAGE(x) (1<<((x)+7)) 6867e995a2eSmrg#define LOAD_GLOBAL_COLOR_FACTOR (1<<6) 6877e995a2eSmrg 6883464ebd5Sriastradh#define TM0S0_ADDRESS_MASK 0xfffffffc 689b167d5e7Smrg#define TM0S0_USE_FENCE (1<<1) 690b167d5e7Smrg 691b167d5e7Smrg#define TM0S1_HEIGHT_SHIFT 21 692b167d5e7Smrg#define TM0S1_WIDTH_SHIFT 10 693b167d5e7Smrg#define TM0S1_PALETTE_SELECT (1<<9) 694b167d5e7Smrg#define TM0S1_MAPSURF_FORMAT_MASK (0x7 << 6) 6953464ebd5Sriastradh#define TM0S1_MAPSURF_FORMAT_SHIFT 6 6963464ebd5Sriastradh#define MAPSURF_8BIT_INDEXED (0<<6) 697b167d5e7Smrg#define MAPSURF_8BIT (1<<6) 698b167d5e7Smrg#define MAPSURF_16BIT (2<<6) 6997e995a2eSmrg#define MAPSURF_32BIT (3<<6) 7007e995a2eSmrg#define MAPSURF_411 (4<<6) 701b167d5e7Smrg#define MAPSURF_422 (5<<6) 702b167d5e7Smrg#define MAPSURF_COMPRESSED (6<<6) 703b167d5e7Smrg#define MAPSURF_4BIT_INDEXED (7<<6) 704b167d5e7Smrg#define TM0S1_MT_FORMAT_MASK (0x7 << 3) 705b167d5e7Smrg#define TM0S1_MT_FORMAT_SHIFT 3 706b167d5e7Smrg#define MT_4BIT_IDX_ARGB8888 (7<<3) /* SURFACE_4BIT_INDEXED */ 707b167d5e7Smrg#define MT_8BIT_IDX_RGB565 (0<<3) /* SURFACE_8BIT_INDEXED */ 708b167d5e7Smrg#define MT_8BIT_IDX_ARGB1555 (1<<3) 709b167d5e7Smrg#define MT_8BIT_IDX_ARGB4444 (2<<3) 710b167d5e7Smrg#define MT_8BIT_IDX_AY88 (3<<3) 711b167d5e7Smrg#define MT_8BIT_IDX_ABGR8888 (4<<3) 712b167d5e7Smrg#define MT_8BIT_IDX_BUMP_88DVDU (5<<3) 713b167d5e7Smrg#define MT_8BIT_IDX_BUMP_655LDVDU (6<<3) 714b167d5e7Smrg#define MT_8BIT_IDX_ARGB8888 (7<<3) 715b167d5e7Smrg#define MT_8BIT_I8 (0<<3) /* SURFACE_8BIT */ 716b167d5e7Smrg#define MT_8BIT_L8 (1<<3) 717b167d5e7Smrg#define MT_8BIT_A8 (4<<3) 718b167d5e7Smrg#define MT_16BIT_RGB565 (0<<3) /* SURFACE_16BIT */ 719b167d5e7Smrg#define MT_16BIT_ARGB1555 (1<<3) 720b167d5e7Smrg#define MT_16BIT_ARGB4444 (2<<3) 721b167d5e7Smrg#define MT_16BIT_AY88 (3<<3) 722b167d5e7Smrg#define MT_16BIT_DIB_ARGB1555_8888 (4<<3) 723b167d5e7Smrg#define MT_16BIT_BUMP_88DVDU (5<<3) 724b167d5e7Smrg#define MT_16BIT_BUMP_655LDVDU (6<<3) 725b167d5e7Smrg#define MT_16BIT_DIB_RGB565_8888 (7<<3) 726b167d5e7Smrg#define MT_32BIT_ARGB8888 (0<<3) /* SURFACE_32BIT */ 7277e995a2eSmrg#define MT_32BIT_ABGR8888 (1<<3) 7287e995a2eSmrg#define MT_32BIT_XRGB8888 (2<<3) 729b167d5e7Smrg#define MT_32BIT_XBGR8888 (3<<3) 730b167d5e7Smrg#define MT_32BIT_BUMP_XLDVDU_8888 (6<<3) 731b167d5e7Smrg#define MT_32BIT_DIB_8888 (7<<3) 732b167d5e7Smrg#define MT_411_YUV411 (0<<3) /* SURFACE_411 */ 7337e995a2eSmrg#define MT_422_YCRCB_SWAPY (0<<3) /* SURFACE_422 */ 7347e995a2eSmrg#define MT_422_YCRCB_NORMAL (1<<3) 7357e995a2eSmrg#define MT_422_YCRCB_SWAPUV (2<<3) 7367e995a2eSmrg#define MT_422_YCRCB_SWAPUVY (3<<3) 7377e995a2eSmrg#define MT_COMPRESS_DXT1 (0<<3) /* SURFACE_COMPRESSED */ 7387e995a2eSmrg#define MT_COMPRESS_DXT2_3 (1<<3) 7397e995a2eSmrg#define MT_COMPRESS_DXT4_5 (2<<3) 7407e995a2eSmrg#define MT_COMPRESS_FXT1 (3<<3) 7417e995a2eSmrg#define TM0S1_COLORSPACE_CONVERSION (1 << 2) 7427e995a2eSmrg#define TM0S1_TILED_SURFACE (1 << 1) 7437e995a2eSmrg#define TM0S1_TILE_WALK (1 << 0) 7447e995a2eSmrg 7457e995a2eSmrg#define TM0S2_PITCH_SHIFT 21 7467e995a2eSmrg#define TM0S2_CUBE_FACE_ENA_SHIFT 15 7477e995a2eSmrg#define TM0S2_CUBE_FACE_ENA_MASK (1<<15) 7487e995a2eSmrg#define TM0S2_MAP_FORMAT (1<<14) 7497e995a2eSmrg#define TM0S2_MAP_2D (0<<14) 7507e995a2eSmrg#define TM0S2_MAP_3D_CUBE (1<<14) 7517e995a2eSmrg#define TM0S2_VERTICAL_LINE_STRIDE (1<<13) 7527e995a2eSmrg#define TM0S2_VERITCAL_LINE_STRIDE_OFF (1<<12) 7537e995a2eSmrg#define TM0S2_OUTPUT_CHAN_SHIFT 10 7547e995a2eSmrg#define TM0S2_OUTPUT_CHAN_MASK (3<<10) 7557e995a2eSmrg 7567e995a2eSmrg#define TM0S3_MIP_FILTER_MASK (0x3<<30) 7577e995a2eSmrg#define TM0S3_MIP_FILTER_SHIFT 30 7587e995a2eSmrg#define MIPFILTER_NONE 0 7597117f1b4Smrg#define MIPFILTER_NEAREST 1 7607117f1b4Smrg#define MIPFILTER_LINEAR 3 7617117f1b4Smrg#define TM0S3_MAG_FILTER_MASK (0x3<<28) 7627117f1b4Smrg#define TM0S3_MAG_FILTER_SHIFT 28 7637117f1b4Smrg#define TM0S3_MIN_FILTER_MASK (0x3<<26) 7647117f1b4Smrg#define TM0S3_MIN_FILTER_SHIFT 26 7657117f1b4Smrg#define FILTER_NEAREST 0 7667117f1b4Smrg#define FILTER_LINEAR 1 7673464ebd5Sriastradh#define FILTER_ANISOTROPIC 2 7687117f1b4Smrg 7697e995a2eSmrg#define TM0S3_LOD_BIAS_SHIFT 17 7707e995a2eSmrg#define TM0S3_LOD_BIAS_MASK (0x1ff<<17) 771cdc920a0Smrg#define TM0S3_MAX_MIP_SHIFT 9 772b167d5e7Smrg#define TM0S3_MAX_MIP_MASK (0xff<<9) 7737e995a2eSmrg#define TM0S3_MIN_MIP_SHIFT 3 774b167d5e7Smrg#define TM0S3_MIN_MIP_MASK (0x3f<<3) 7757e995a2eSmrg#define TM0S3_KILL_PIXEL (1<<2) 776cdc920a0Smrg#define TM0S3_KEYED_FILTER (1<<1) 777cdc920a0Smrg#define TM0S3_CHROMA_KEY (1<<0) 778b167d5e7Smrg 779b167d5e7Smrg/* _3DSTATE_MAP_TEXEL_STREAM, p188 */ 780cdc920a0Smrg#define _3DSTATE_MAP_TEX_STREAM_CMD (CMD_3D|(0x1c<<24)|(0x05<<19)) 781cdc920a0Smrg#define DISABLE_TEX_STREAM_BUMP (1<<12) 782b167d5e7Smrg#define ENABLE_TEX_STREAM_BUMP ((1<<12)|(1<<11)) 783b167d5e7Smrg#define TEX_MODIFY_UNIT_0 0 784cdc920a0Smrg#define TEX_MODIFY_UNIT_1 (1<<8) 7857117f1b4Smrg#define ENABLE_TEX_STREAM_COORD_SET (1<<7) 786cdc920a0Smrg#define TEX_STREAM_COORD_SET(x) ((x)<<4) 7877117f1b4Smrg#define ENABLE_TEX_STREAM_MAP_IDX (1<<3) 7887117f1b4Smrg#define TEX_STREAM_MAP_IDX(x) (x) 789b167d5e7Smrg 790cdc920a0Smrg#define FLUSH_MAP_CACHE (1<<0) 791cdc920a0Smrg 792cdc920a0Smrg#define _3DSTATE_MAP_FILTER_CMD (CMD_3D|(0x1c<<24)|(0x02<<19)) 793cdc920a0Smrg#define FILTER_TEXMAP_INDEX(x) ((x) << 16) 794c1f859d4Smrg#define MAG_MODE_FILTER_ENABLE (1 << 5) 795b167d5e7Smrg#define MIN_MODE_FILTER_ENABLE (1 << 2) 796c1f859d4Smrg#define MAG_MAPFILTER_NEAREST (0 << 3) 797cdc920a0Smrg#define MAG_MAPFILTER_LINEAR (1 << 3) 798cdc920a0Smrg#define MAG_MAPFILTER_ANISOTROPIC (2 << 3) 7994a49301eSmrg#define MIN_MAPFILTER_NEAREST (0) 8004a49301eSmrg#define MIN_MAPFILTER_LINEAR (1) 8014a49301eSmrg#define MIN_MAPFILTER_ANISOTROPIC (2) 8024a49301eSmrg#define ENABLE_KEYS (1<<15) 8037117f1b4Smrg#define DISABLE_COLOR_KEY 0 804cdc920a0Smrg#define DISABLE_CHROMA_KEY 0 805cdc920a0Smrg#define DISABLE_KILL_PIXEL 0 806cdc920a0Smrg#define ENABLE_MIP_MODE_FILTER (1 << 9) 807cdc920a0Smrg#define MIPFILTER_NONE 0 808cdc920a0Smrg#define MIPFILTER_NEAREST 1 809b167d5e7Smrg#define MIPFILTER_LINEAR 3 810b167d5e7Smrg 811b167d5e7Smrg#endif 812b167d5e7Smrg