16b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/************************************************************************** 26b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 3877128505431adaf817dc8069172ebe4a1cdf5d8José Fonseca * Copyright 2003 VMware, Inc. 46b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * All Rights Reserved. 56b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 66b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * Permission is hereby granted, free of charge, to any person obtaining a 76b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * copy of this software and associated documentation files (the 86b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * "Software"), to deal in the Software without restriction, including 96b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * without limitation the rights to use, copy, modify, merge, publish, 106b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * distribute, sub license, and/or sell copies of the Software, and to 116b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * permit persons to whom the Software is furnished to do so, subject to 126b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * the following conditions: 136b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 146b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * The above copyright notice and this permission notice (including the 156b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * next paragraph) shall be included in all copies or substantial portions 166b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * of the Software. 176b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 186b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 196b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 206b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21877128505431adaf817dc8069172ebe4a1cdf5d8José Fonseca * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 226b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 236b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 246b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 256b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 266b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell **************************************************************************/ 276b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 286b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 296b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#ifndef _I915_REG_H_ 306b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _I915_REG_H_ 316b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 326b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 336b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#include "intel_reg.h" 346b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 356b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define I915_SET_FIELD( var, mask, value ) (var &= ~(mask), var |= value) 366b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 376b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_INLINE (CMD_3D | (0x1f<<24)) 386b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_TRILIST (0x0<<18) 396b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_TRISTRIP (0x1<<18) 406b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_TRISTRIP_RVRSE (0x2<<18) 416b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_TRIFAN (0x3<<18) 426b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_POLY (0x4<<18) 436b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_LINELIST (0x5<<18) 446b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_LINESTRIP (0x6<<18) 456b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_RECTLIST (0x7<<18) 466b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_POINTLIST (0x8<<18) 476b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_DIB (0x9<<18) 486b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_CLEAR_RECT (0xa<<18) 496b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_ZONE_INIT (0xd<<18) 506b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PRIM3D_MASK (0x1f<<18) 516b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 526b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p137 */ 536b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_AA_CMD (CMD_3D | (0x06<<24)) 546b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_ECAAR_WIDTH_ENABLE (1<<16) 556b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_ECAAR_WIDTH_0_5 0 566b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_ECAAR_WIDTH_1_0 (1<<14) 576b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_ECAAR_WIDTH_2_0 (2<<14) 586b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_ECAAR_WIDTH_4_0 (3<<14) 596b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_REGION_WIDTH_ENABLE (1<<8) 606b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_REGION_WIDTH_0_5 0 616b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_REGION_WIDTH_1_0 (1<<6) 626b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_REGION_WIDTH_2_0 (2<<6) 636b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define AA_LINE_REGION_WIDTH_4_0 (3<<6) 646b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 656b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_BACKFACE_STENCIL_OPS, p138*/ 666b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_BACKFACE_STENCIL_OPS (CMD_3D | (0x8<<24)) 676b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_ENABLE_STENCIL_REF (1<<23) 686b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_REF_SHIFT 15 696b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_REF_MASK (0xff<<15) 706b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_ENABLE_STENCIL_FUNCS (1<<14) 716b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_TEST_SHIFT 11 726b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_TEST_MASK (0x7<<11) 736b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_FAIL_SHIFT 8 746b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_FAIL_MASK (0x7<<8) 756b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_PASS_Z_FAIL_SHIFT 5 766b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_PASS_Z_FAIL_MASK (0x7<<5) 776b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_PASS_Z_PASS_SHIFT 2 786b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_PASS_Z_PASS_MASK (0x7<<2) 796b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_ENABLE_STENCIL_TWO_SIDE (1<<1) 806b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFO_STENCIL_TWO_SIDE (1<<0) 816b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 826b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 836b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_BACKFACE_STENCIL_MASKS, p140 */ 846b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_BACKFACE_STENCIL_MASKS (CMD_3D | (0x9<<24)) 856b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFM_ENABLE_STENCIL_TEST_MASK (1<<17) 866b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFM_ENABLE_STENCIL_WRITE_MASK (1<<16) 876b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFM_STENCIL_TEST_MASK_SHIFT 8 886b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFM_STENCIL_TEST_MASK_MASK (0xff<<8) 89246729162ccc7e2672aa6cc957053ce3a8975a2cEric Anholt#define BFM_STENCIL_TEST_MASK(x) (((x)&0xff) << 8) 906b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFM_STENCIL_WRITE_MASK_SHIFT 0 916b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BFM_STENCIL_WRITE_MASK_MASK (0xff<<0) 92246729162ccc7e2672aa6cc957053ce3a8975a2cEric Anholt#define BFM_STENCIL_WRITE_MASK(x) ((x)&0xff) 936b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 946b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 956b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 966b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_BIN_CONTROL p141 */ 976b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 986b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_CHROMA_KEY */ 996b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1006b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_CLEAR_PARAMETERS, p150 */ 101500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard/* 102500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard * Sets the color, depth and stencil clear values used by the 103500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard * CLEAR_RECT and ZONE_INIT primitive types, respectively. These 104500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard * primitives set override most 3d state and only take a minimal x/y 105500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard * vertex. The color/z/stencil information is supplied here and 106500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard * therefore cannot vary per vertex. 107500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard */ 108500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define _3DSTATE_CLEAR_PARAMETERS (CMD_3D | (0x1d<<24) | (0x9c<<16) | 5) 109500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard/* Dword 1 */ 110500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define CLEARPARAM_CLEAR_RECT (1 << 16) 111500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define CLEARPARAM_ZONE_INIT (0 << 16) 112500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define CLEARPARAM_WRITE_COLOR (1 << 2) 113500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define CLEARPARAM_WRITE_DEPTH (1 << 1) 114500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define CLEARPARAM_WRITE_STENCIL (1 << 0) 1156b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1166b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_CONSTANT_BLEND_COLOR, p153 */ 1176b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_CONST_BLEND_COLOR_CMD (CMD_3D | (0x1d<<24) | (0x88<<16)) 1186b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1196b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1206b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1216b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_COORD_SET_BINDINGS, p154 */ 1226b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_COORD_SET_BINDINGS (CMD_3D | (0x16<<24)) 1236b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define CSB_TCB(iunit, eunit) ((eunit)<<(iunit*3)) 1246b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1256b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p156 */ 1266b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DFLT_DIFFUSE_CMD (CMD_3D | (0x1d<<24) | (0x99<<16)) 1276b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1286b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p157 */ 1296b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DFLT_SPEC_CMD (CMD_3D | (0x1d<<24) | (0x9a<<16)) 1306b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1316b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p158 */ 1326b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DFLT_Z_CMD (CMD_3D | (0x1d<<24) | (0x98<<16)) 1336b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1346b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1356b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_DEPTH_OFFSET_SCALE, p159 */ 1366b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DEPTH_OFFSET_SCALE (CMD_3D | (0x1d<<24) | (0x97<<16)) 1376b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* scale in dword 1 */ 1386b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1396b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1406b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_DEPTH_SUBRECT_DISABLE, p160 */ 14107265280a962253913e974829e6729c64ca18bc2Keith Whitwell#define _3DSTATE_DEPTH_SUBRECT_DISABLE (CMD_3D | (0x1c<<24) | (0x11<<19) | 0x2) 1426b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1436b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p161 */ 1446b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DST_BUF_VARS_CMD (CMD_3D | (0x1d<<24) | (0x85<<16)) 1456b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 1 */ 146b30dc2c66aeaad6661eef515a08a3da89aa07cb2Eric Anholt#define CLASSIC_EARLY_DEPTH (1<<31) 1476b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEX_DEFAULT_COLOR_OGL (0<<30) 1486b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEX_DEFAULT_COLOR_D3D (1<<30) 1496b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ZR_EARLY_DEPTH (1<<29) 1506b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LOD_PRECLAMP_OGL (1<<28) 1516b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LOD_PRECLAMP_D3D (0<<28) 1526b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DITHER_FULL_ALWAYS (0<<26) 1536b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DITHER_FULL_ON_FB_BLEND (1<<26) 1546b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DITHER_CLAMPED_ALWAYS (2<<26) 1556b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LINEAR_GAMMA_BLEND_32BPP (1<<25) 1566b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DEBUG_DISABLE_ENH_DITHER (1<<24) 1576b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DSTORG_HORT_BIAS(x) ((x)<<20) 1586b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DSTORG_VERT_BIAS(x) ((x)<<16) 1596b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLOR_4_2_2_CHNL_WRT_ALL 0 1606b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLOR_4_2_2_CHNL_WRT_Y (1<<12) 1616b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLOR_4_2_2_CHNL_WRT_CR (2<<12) 1626b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLOR_4_2_2_CHNL_WRT_CB (3<<12) 1636b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLOR_4_2_2_CHNL_WRT_CRCB (4<<12) 1646b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLR_BUF_8BIT 0 1656b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLR_BUF_RGB555 (1<<8) 1666b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLR_BUF_RGB565 (2<<8) 1676b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define COLR_BUF_ARGB8888 (3<<8) 1686b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DEPTH_FRMT_16_FIXED 0 1696b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DEPTH_FRMT_16_FLOAT (1<<2) 1706b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DEPTH_FRMT_24_FIXED_8_OTHER (2<<2) 1716b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define VERT_LINE_STRIDE_1 (1<<1) 1726b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define VERT_LINE_STRIDE_0 (0<<1) 1736b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define VERT_LINE_STRIDE_OFS_1 1 1746b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define VERT_LINE_STRIDE_OFS_0 0 1756b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1766b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p166 */ 1776b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DRAW_RECT_CMD (CMD_3D|(0x1d<<24)|(0x80<<16)|3) 1786b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 1 */ 1796b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_RECT_DIS_DEPTH_OFS (1<<30) 1806b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_DITHER_OFS_X(x) ((x)<<26) 1816b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_DITHER_OFS_Y(x) ((x)<<24) 1826b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 2 */ 1836b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_YMIN(x) ((x)<<16) 1846b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_XMIN(x) (x) 1856b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 3 */ 1866b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_YMAX(x) ((x)<<16) 1876b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_XMAX(x) (x) 1886b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 4 */ 1896b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_YORG(x) ((x)<<16) 1906b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DRAW_XORG(x) (x) 1916b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1926b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1936b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_FILTER_COEFFICIENTS_4X4, p170 */ 1946b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1956b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_FILTER_COEFFICIENTS_6X5, p172 */ 1966b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1976b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 1986b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* _3DSTATE_FOG_COLOR, p173 */ 1996b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_FOG_COLOR_CMD (CMD_3D|(0x15<<24)) 2006b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FOG_COLOR_RED(x) ((x)<<16) 2016b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FOG_COLOR_GREEN(x) ((x)<<8) 2026b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FOG_COLOR_BLUE(x) (x) 2036b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2046b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* _3DSTATE_FOG_MODE, p174 */ 2056b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_FOG_MODE_CMD (CMD_3D|(0x1d<<24)|(0x89<<16)|2) 2066b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 1 */ 2076b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGFUNC_MODIFY_ENABLE (1<<31) 2086b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGFUNC_VERTEX (0<<28) 2096b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGFUNC_PIXEL_EXP (1<<28) 2106b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGFUNC_PIXEL_EXP2 (2<<28) 2116b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGFUNC_PIXEL_LINEAR (3<<28) 2126b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGFUNC_MASK (3<<28) 2136b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGINDEX_MODIFY_ENABLE (1<<27) 2146b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGINDEX_Z (0<<25) 2156b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_FOGINDEX_W (1<<25) 2166b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_C1_C2_MODIFY_ENABLE (1<<24) 2176b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_DENSITY_MODIFY_ENABLE (1<<23) 2186b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_C1_ONE (1<<13) 2196b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC1_C1_MASK (0xffff<<4) 2206b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 2 */ 2216b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC2_C2_ONE (1<<16) 2226b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 3 */ 2236b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FMC3_D_ONE (1<<16) 2246b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2256b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2266b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2276b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* _3DSTATE_INDEPENDENT_ALPHA_BLEND, p177 */ 2286b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_INDEPENDENT_ALPHA_BLEND_CMD (CMD_3D|(0x0b<<24)) 2296b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_MODIFY_ENABLE (1<<23) 2306b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_ENABLE (1<<22) 2316b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_MODIFY_FUNC (1<<21) 2326b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_FUNC_SHIFT 16 2336b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_MODIFY_SRC_FACTOR (1<<11) 2346b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_SRC_FACTOR_SHIFT 6 2356b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_SRC_FACTOR_MASK (BLENDFACT_MASK<<6) 2366b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_MODIFY_DST_FACTOR (1<<5) 2376b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_DST_FACTOR_SHIFT 0 2386b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define IAB_DST_FACTOR_MASK (BLENDFACT_MASK<<0) 2396b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2406b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2416b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BLENDFUNC_ADD 0x0 2426b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BLENDFUNC_SUBTRACT 0x1 2436b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BLENDFUNC_REVERSE_SUBTRACT 0x2 2446b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BLENDFUNC_MIN 0x3 2456b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BLENDFUNC_MAX 0x4 2466b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define BLENDFUNC_MASK 0x7 2476b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2486b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_LOAD_INDIRECT, p180 */ 2496b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2506b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_LOAD_INDIRECT (CMD_3D|(0x1d<<24)|(0x7<<16)) 2516b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LI0_STATE_STATIC_INDIRECT (0x01<<8) 2526b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LI0_STATE_DYNAMIC_INDIRECT (0x02<<8) 2536b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LI0_STATE_SAMPLER (0x04<<8) 2546b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LI0_STATE_MAP (0x08<<8) 2556b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LI0_STATE_PROGRAM (0x10<<8) 2566b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LI0_STATE_CONSTANTS (0x20<<8) 2576b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2586b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SIS0_BUFFER_ADDRESS(x) ((x)&~0x3) 2596b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SIS0_FORCE_LOAD (1<<1) 2606b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SIS0_BUFFER_VALID (1<<0) 2616b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SIS1_BUFFER_LENGTH(x) ((x)&0xff) 2626b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2636b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DIS0_BUFFER_ADDRESS(x) ((x)&~0x3) 2646b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DIS0_BUFFER_RESET (1<<1) 2656b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DIS0_BUFFER_VALID (1<<0) 2666b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2676b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SSB0_BUFFER_ADDRESS(x) ((x)&~0x3) 2686b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SSB0_FORCE_LOAD (1<<1) 2696b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SSB0_BUFFER_VALID (1<<0) 2706b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SSB1_BUFFER_LENGTH(x) ((x)&0xff) 2716b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2726b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MSB0_BUFFER_ADDRESS(x) ((x)&~0x3) 2736b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MSB0_FORCE_LOAD (1<<1) 2746b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MSB0_BUFFER_VALID (1<<0) 2756b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MSB1_BUFFER_LENGTH(x) ((x)&0xff) 2766b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2776b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PSP0_BUFFER_ADDRESS(x) ((x)&~0x3) 2786b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PSP0_FORCE_LOAD (1<<1) 2796b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PSP0_BUFFER_VALID (1<<0) 2806b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PSP1_BUFFER_LENGTH(x) ((x)&0xff) 2816b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2826b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PSC0_BUFFER_ADDRESS(x) ((x)&~0x3) 2836b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PSC0_FORCE_LOAD (1<<1) 2846b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PSC0_BUFFER_VALID (1<<0) 2856b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PSC1_BUFFER_LENGTH(x) ((x)&0xff) 2866b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2876b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2886b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2896b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2906b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 2916b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* _3DSTATE_RASTERIZATION_RULES */ 2926b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_RASTER_RULES_CMD (CMD_3D|(0x07<<24)) 2936b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ENABLE_POINT_RASTER_RULE (1<<15) 2946b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define OGL_POINT_RASTER_RULE (1<<13) 2956b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ENABLE_TEXKILL_3D_4D (1<<10) 2966b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEXKILL_3D (0<<9) 2976b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEXKILL_4D (1<<9) 2986b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ENABLE_LINE_STRIP_PROVOKE_VRTX (1<<8) 2996b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ENABLE_TRI_FAN_PROVOKE_VRTX (1<<5) 300de80eeea0eebf00ee678b1a0fbd5fe67b00a8636Eric Anholt#define LINE_STRIP_PROVOKE_VRTX_MASK (3 << 6) 3016b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LINE_STRIP_PROVOKE_VRTX(x) ((x)<<6) 302de80eeea0eebf00ee678b1a0fbd5fe67b00a8636Eric Anholt#define TRI_FAN_PROVOKE_VRTX_MASK (3 << 3) 3036b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TRI_FAN_PROVOKE_VRTX(x) ((x)<<3) 3046b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3056b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* _3DSTATE_SCISSOR_ENABLE, p256 */ 3066b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_SCISSOR_ENABLE_CMD (CMD_3D|(0x1c<<24)|(0x10<<19)) 3076b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ENABLE_SCISSOR_RECT ((1<<1) | 1) 3086b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define DISABLE_SCISSOR_RECT (1<<1) 3096b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3106b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* _3DSTATE_SCISSOR_RECTANGLE_0, p257 */ 3116b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_SCISSOR_RECT_0_CMD (CMD_3D|(0x1d<<24)|(0x81<<16)|1) 3126b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 1 */ 3136b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SCISSOR_RECT_0_YMIN(x) ((x)<<16) 3146b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SCISSOR_RECT_0_XMIN(x) (x) 3156b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Dword 2 */ 3166b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SCISSOR_RECT_0_YMAX(x) ((x)<<16) 3176b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SCISSOR_RECT_0_XMAX(x) (x) 3186b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 319500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard/* Helper macros for blend factors 320500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard */ 321500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define DST_BLND_FACT(f) ((f)<<S6_CBUF_DST_BLEND_FACT_SHIFT) 322500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define SRC_BLND_FACT(f) ((f)<<S6_CBUF_SRC_BLEND_FACT_SHIFT) 323500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define DST_ABLND_FACT(f) ((f)<<IAB_DST_FACTOR_SHIFT) 324500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard#define SRC_ABLND_FACT(f) ((f)<<IAB_SRC_FACTOR_SHIFT) 325500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard 326500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard 327500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard 328500193dca8cee7d8b609bd20cb60d20c96d77de3Keith Packard 3296b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_MAP_DEINTERLACER_PARAMETERS */ 3306b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3316b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_MAP_PALETTE_LOAD_32, p206 */ 3326b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_MAP_PALETTE_LOAD_32 (CMD_3D|(0x1d<<24)|(0x8f<<16)) 3336b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* subsequent dwords up to length (max 16) are ARGB8888 color values */ 3346b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3356b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* _3DSTATE_MODES_4, p218 */ 3366b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_MODES_4_CMD (CMD_3D|(0x0d<<24)) 3376b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ENABLE_LOGIC_OP_FUNC (1<<23) 3386b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LOGIC_OP_FUNC(x) ((x)<<18) 3396b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define LOGICOP_MASK (0xf<<18) 3406b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MODE4_ENABLE_STENCIL_TEST_MASK ((1<<17)|(0xff00)) 3416b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ENABLE_STENCIL_TEST_MASK (1<<17) 3426b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define STENCIL_TEST_MASK(x) (((x)&0xff)<<8) 3436b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MODE4_ENABLE_STENCIL_WRITE_MASK ((1<<16)|(0x00ff)) 3446b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ENABLE_STENCIL_WRITE_MASK (1<<16) 3456b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define STENCIL_WRITE_MASK(x) ((x)&0xff) 3466b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3476b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* _3DSTATE_MODES_5, p220 */ 3486b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_MODES_5_CMD (CMD_3D|(0x0c<<24)) 3496b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PIPELINE_FLUSH_RENDER_CACHE (1<<18) 3506b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PIPELINE_FLUSH_TEXTURE_CACHE (1<<16) 3516b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3526b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3536b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p221 */ 3546b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_PIXEL_SHADER_CONSTANTS (CMD_3D|(0x1d<<24)|(0x6<<16)) 3556b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PS1_REG(n) (1<<(n)) 3566b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PS2_CONST_X(n) (n) 3576b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PS3_CONST_Y(n) (n) 3586b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PS4_CONST_Z(n) (n) 3596b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define PS5_CONST_W(n) (n) 3606b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3616b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p222 */ 3626b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3636b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3646b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Each instruction is 3 dwords long, though most don't require all 3656b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * this space. Maximum of 123 instructions. Smaller maxes per insn 3666b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * type. 3676b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 3686b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_PIXEL_SHADER_PROGRAM (CMD_3D|(0x1d<<24)|(0x5<<16)) 3696b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 3706b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_TYPE_R 0 /* temporary regs, no need to 3716b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * dcl, must be written before 3726b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * read -- Preserved between 3736b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * phases. 3746b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 3756b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_TYPE_T 1 /* Interpolated values, must be 3766b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * dcl'ed before use. 3776b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 3786b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 0..7: texture coord, 3796b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 8: diffuse spec, 3806b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 9: specular color, 3816b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 10: fog parameter in w. 3826b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 3836b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_TYPE_CONST 2 /* Restriction: only one const 3846b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * can be referenced per 3856b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * instruction, though it may be 3866b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * selected for multiple inputs. 3876b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * Constants not initialized 3886b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * default to zero. 3896b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 3906b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_TYPE_S 3 /* sampler */ 3916b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_TYPE_OC 4 /* output color (rgba) */ 3926b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_TYPE_OD 5 /* output depth (w), xyz are 3936b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * temporaries. If not written, 3946b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * interpolated depth is used? 3956b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 3966b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_TYPE_U 6 /* unpreserved temporaries */ 3976b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_TYPE_MASK 0x7 3986b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define REG_NR_MASK 0xf 3996b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4006b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4016b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* REG_TYPE_T: 4026b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 4036b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_TEX0 0 4046b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_TEX1 1 4056b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_TEX2 2 4066b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_TEX3 3 4076b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_TEX4 4 4086b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_TEX5 5 4096b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_TEX6 6 4106b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_TEX7 7 4116b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_DIFFUSE 8 4126b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_SPECULAR 9 4136b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T_FOG_W 10 /* interpolated fog is in W coord */ 4146b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4156b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Arithmetic instructions */ 4166b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4176b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* .replicate_swizzle == selection and replication of a particular 4186b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * scalar channel, ie., .xxxx, .yyyy, .zzzz or .wwww 4196b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 4206b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_NOP (0x0<<24) /* no operation */ 4216b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_ADD (0x1<<24) /* dst = src0 + src1 */ 4226b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_MOV (0x2<<24) /* dst = src0 */ 4236b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_MUL (0x3<<24) /* dst = src0 * src1 */ 4246b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_MAD (0x4<<24) /* dst = src0 * src1 + src2 */ 4256b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DP2ADD (0x5<<24) /* dst.xyzw = src0.xy dot src1.xy + src2.replicate_swizzle */ 4266b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DP3 (0x6<<24) /* dst.xyzw = src0.xyz dot src1.xyz */ 4276b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DP4 (0x7<<24) /* dst.xyzw = src0.xyzw dot src1.xyzw */ 4286b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_FRC (0x8<<24) /* dst = src0 - floor(src0) */ 4296b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_RCP (0x9<<24) /* dst.xyzw = 1/(src0.replicate_swizzle) */ 4306b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_RSQ (0xa<<24) /* dst.xyzw = 1/(sqrt(abs(src0.replicate_swizzle))) */ 4316b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_EXP (0xb<<24) /* dst.xyzw = exp2(src0.replicate_swizzle) */ 4326b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_LOG (0xc<<24) /* dst.xyzw = log2(abs(src0.replicate_swizzle)) */ 4336b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_CMP (0xd<<24) /* dst = (src0 >= 0.0) ? src1 : src2 */ 4346b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_MIN (0xe<<24) /* dst = (src0 < src1) ? src0 : src1 */ 4356b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_MAX (0xf<<24) /* dst = (src0 >= src1) ? src0 : src1 */ 4366b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_FLR (0x10<<24) /* dst = floor(src0) */ 4376b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_MOD (0x11<<24) /* dst = src0 fmod 1.0 */ 4386b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_TRC (0x12<<24) /* dst = int(src0) */ 4396b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_SGE (0x13<<24) /* dst = src0 >= src1 ? 1.0 : 0.0 */ 4406b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_SLT (0x14<<24) /* dst = src0 < src1 ? 1.0 : 0.0 */ 4416b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_SATURATE (1<<22) 4426b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_TYPE_SHIFT 19 4436b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Allow: R, OC, OD, U */ 4446b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_NR_SHIFT 14 4456b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Allow R: 0..15, OC,OD: 0..0, U: 0..2 */ 4466b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_CHANNEL_X (1<<10) 4476b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_CHANNEL_Y (2<<10) 4486b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_CHANNEL_Z (4<<10) 4496b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_CHANNEL_W (8<<10) 4506b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_CHANNEL_ALL (0xf<<10) 4516b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_CHANNEL_SHIFT 10 4526b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_SRC0_TYPE_SHIFT 7 4536b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_SRC0_NR_SHIFT 2 4546b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4556b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_CHANNEL_XY (A0_DEST_CHANNEL_X|A0_DEST_CHANNEL_Y) 4566b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A0_DEST_CHANNEL_XYZ (A0_DEST_CHANNEL_XY|A0_DEST_CHANNEL_Z) 4576b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4586b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4596b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SRC_X 0 4606b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SRC_Y 1 4616b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SRC_Z 2 4626b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SRC_W 3 4636b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SRC_ZERO 4 4646b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SRC_ONE 5 4656b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4666b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC0_CHANNEL_X_NEGATE (1<<31) 4676b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC0_CHANNEL_X_SHIFT 28 4686b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC0_CHANNEL_Y_NEGATE (1<<27) 4696b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC0_CHANNEL_Y_SHIFT 24 4706b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC0_CHANNEL_Z_NEGATE (1<<23) 4716b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC0_CHANNEL_Z_SHIFT 20 4726b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC0_CHANNEL_W_NEGATE (1<<19) 4736b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC0_CHANNEL_W_SHIFT 16 4746b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC1_TYPE_SHIFT 13 4756b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC1_NR_SHIFT 8 4766b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC1_CHANNEL_X_NEGATE (1<<7) 4776b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC1_CHANNEL_X_SHIFT 4 4786b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC1_CHANNEL_Y_NEGATE (1<<3) 4796b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A1_SRC1_CHANNEL_Y_SHIFT 0 4806b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4816b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC1_CHANNEL_Z_NEGATE (1<<31) 4826b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC1_CHANNEL_Z_SHIFT 28 4836b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC1_CHANNEL_W_NEGATE (1<<27) 4846b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC1_CHANNEL_W_SHIFT 24 4856b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_TYPE_SHIFT 21 4866b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_NR_SHIFT 16 4876b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_CHANNEL_X_NEGATE (1<<15) 4886b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_CHANNEL_X_SHIFT 12 4896b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_CHANNEL_Y_NEGATE (1<<11) 4906b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_CHANNEL_Y_SHIFT 8 4916b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_CHANNEL_Z_NEGATE (1<<7) 4926b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_CHANNEL_Z_SHIFT 4 4936b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_CHANNEL_W_NEGATE (1<<3) 4946b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define A2_SRC2_CHANNEL_W_SHIFT 0 4956b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4966b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4976b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 4986b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Texture instructions */ 4996b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T0_TEXLD (0x15<<24) /* Sample texture using predeclared 5006b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * sampler and address, and output 5016b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * filtered texel data to destination 5026b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * register */ 5036b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T0_TEXLDP (0x16<<24) /* Same as texld but performs a 5046b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * perspective divide of the texture 5056b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * coordinate .xyz values by .w before 5066b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * sampling. */ 5076b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T0_TEXLDB (0x17<<24) /* Same as texld but biases the 5086b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * computed LOD by w. Only S4.6 two's 5096b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * comp is used. This implies that a 5106b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * float to fixed conversion is 5116b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * done. */ 5126b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T0_TEXKILL (0x18<<24) /* Does not perform a sampling 5136b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * operation. Simply kills the pixel 5146b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * if any channel of the address 5156b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * register is < 0.0. */ 5166b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T0_DEST_TYPE_SHIFT 19 5176b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Allow: R, OC, OD, U */ 5186b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Note: U (unpreserved) regs do not retain their values between 5196b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * phases (cannot be used for feedback) 5206b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 5216b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * Note: oC and OD registers can only be used as the destination of a 5226b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * texture instruction once per phase (this is an implementation 5236b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * restriction). 5246b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 5256b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T0_DEST_NR_SHIFT 14 5266b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Allow R: 0..15, OC,OD: 0..0, U: 0..2 */ 5276b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T0_SAMPLER_NR_SHIFT 0 /* This field ignored for TEXKILL */ 5286b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T0_SAMPLER_NR_MASK (0xf<<0) 5296b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5306b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T1_ADDRESS_REG_TYPE_SHIFT 24 /* Reg to use as texture coord */ 5316b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Allow R, T, OC, OD -- R, OC, OD are 'dependent' reads, new program phase */ 5326b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T1_ADDRESS_REG_NR_SHIFT 17 5336b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define T2_MBZ 0 5346b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5356b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Declaration instructions */ 5366b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_DCL (0x19<<24) /* Declare a t (interpolated attrib) 5376b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * register or an s (sampler) 5386b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * register. */ 5396b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_SAMPLE_TYPE_SHIFT 22 5406b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_SAMPLE_TYPE_2D (0x0<<22) 5416b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_SAMPLE_TYPE_CUBE (0x1<<22) 5426b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_SAMPLE_TYPE_VOLUME (0x2<<22) 5436b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_SAMPLE_TYPE_MASK (0x3<<22) 5446b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5456b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_TYPE_SHIFT 19 5466b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Allow: T, S */ 5476b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_NR_SHIFT 14 5486b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Allow T: 0..10, S: 0..15 */ 5496b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_CHANNEL_X (1<<10) 5506b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_CHANNEL_Y (2<<10) 5516b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_CHANNEL_Z (4<<10) 5526b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_CHANNEL_W (8<<10) 5536b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_CHANNEL_ALL (0xf<<10) 5546b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_CHANNEL_NONE (0<<10) 5556b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5566b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_CHANNEL_XY (D0_CHANNEL_X|D0_CHANNEL_Y) 5576b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D0_CHANNEL_XYZ (D0_CHANNEL_XY|D0_CHANNEL_Z) 5586b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5596b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* I915 Errata: Do not allow (xz), (xw), (xzw) combinations for diffuse 5606b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * or specular declarations. 5616b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 5626b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * For T dcls, only allow: (x), (xy), (xyz), (w), (xyzw) 5636b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * 5646b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * Must be zero for S (sampler) dcls 5656b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 5666b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D1_MBZ 0 5676b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define D2_MBZ 0 5686b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5696b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5706b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5716b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p207 */ 5726b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_MAP_STATE (CMD_3D|(0x1d<<24)|(0x0<<16)) 5736b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5746b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS1_MAPMASK_SHIFT 0 5756b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS1_MAPMASK_MASK (0x8fff<<0) 5766b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5776b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS2_UNTRUSTED_SURFACE (1<<31) 5786b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS2_ADDRESS_MASK 0xfffffffc 5796b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS2_VERTICAL_LINE_STRIDE (1<<1) 5806b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS2_VERTICAL_OFFSET (1<<1) 5816b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 5826b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_HEIGHT_SHIFT 21 5836b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_WIDTH_SHIFT 10 5846b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_PALETTE_SELECT (1<<9) 5856b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_MAPSURF_FORMAT_SHIFT 7 5866b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_MAPSURF_FORMAT_MASK (0x7<<7) 5876b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MAPSURF_8BIT (1<<7) 5886b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MAPSURF_16BIT (2<<7) 5896b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MAPSURF_32BIT (3<<7) 5906b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MAPSURF_422 (5<<7) 5916b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MAPSURF_COMPRESSED (6<<7) 5926b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MAPSURF_4BIT_INDEXED (7<<7) 5936b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_MT_FORMAT_MASK (0x7 << 3) 5946b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_MT_FORMAT_SHIFT 3 5956b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_4BIT_IDX_ARGB8888 (7<<3) /* SURFACE_4BIT_INDEXED */ 5966b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_8BIT_I8 (0<<3) /* SURFACE_8BIT */ 5976b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_8BIT_L8 (1<<3) 5986b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_8BIT_A8 (4<<3) 5996b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_8BIT_MONO8 (5<<3) 6006b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_RGB565 (0<<3) /* SURFACE_16BIT */ 6016b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_ARGB1555 (1<<3) 6026b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_ARGB4444 (2<<3) 6036b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_AY88 (3<<3) 6046b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_88DVDU (5<<3) 6056b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_BUMP_655LDVDU (6<<3) 6066b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_I16 (7<<3) 6076b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_L16 (8<<3) 6086b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_16BIT_A16 (9<<3) 6096b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_ARGB8888 (0<<3) /* SURFACE_32BIT */ 6106b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_ABGR8888 (1<<3) 6116b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_XRGB8888 (2<<3) 6126b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_XBGR8888 (3<<3) 6136b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_QWVU8888 (4<<3) 6146b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_AXVU8888 (5<<3) 6156b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_LXVU8888 (6<<3) 6166b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_XLVU8888 (7<<3) 6176b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_ARGB2101010 (8<<3) 6186b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_ABGR2101010 (9<<3) 6196b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_AWVU2101010 (0xA<<3) 6206b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_GR1616 (0xB<<3) 6216b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_32BIT_VU1616 (0xC<<3) 6224b377ae292f75645ef356bd3bfac407230faf73aEric Anholt#define MT_32BIT_x8I24 (0xD<<3) 6234b377ae292f75645ef356bd3bfac407230faf73aEric Anholt#define MT_32BIT_x8L24 (0xE<<3) 6244b377ae292f75645ef356bd3bfac407230faf73aEric Anholt#define MT_32BIT_x8A24 (0xF<<3) 6256b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_422_YCRCB_SWAPY (0<<3) /* SURFACE_422 */ 6266b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_422_YCRCB_NORMAL (1<<3) 6276b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_422_YCRCB_SWAPUV (2<<3) 6286b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_422_YCRCB_SWAPUVY (3<<3) 6296b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_COMPRESS_DXT1 (0<<3) /* SURFACE_COMPRESSED */ 6306b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_COMPRESS_DXT2_3 (1<<3) 6316b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_COMPRESS_DXT4_5 (2<<3) 6326b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_COMPRESS_FXT1 (3<<3) 6336b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MT_COMPRESS_DXT1_RGB (4<<3) 6346b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_USE_FENCE_REGS (1<<2) 6356b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_TILED_SURFACE (1<<1) 6366b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS3_TILE_WALK (1<<0) 6376b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 6386b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_PITCH_SHIFT 21 6396b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_CUBE_FACE_ENA_NEGX (1<<20) 6406b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_CUBE_FACE_ENA_POSX (1<<19) 6416b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_CUBE_FACE_ENA_NEGY (1<<18) 6426b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_CUBE_FACE_ENA_POSY (1<<17) 6436b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_CUBE_FACE_ENA_NEGZ (1<<16) 6446b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_CUBE_FACE_ENA_POSZ (1<<15) 6456b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_CUBE_FACE_ENA_MASK (0x3f<<15) 6466b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_MAX_LOD_SHIFT 9 6476b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_MAX_LOD_MASK (0x3f<<9) 6486b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_MIP_LAYOUT_LEGACY (0<<8) 6496b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_MIP_LAYOUT_BELOW_LPT (0<<8) 6506b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_MIP_LAYOUT_RIGHT_LPT (1<<8) 6516b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_VOLUME_DEPTH_SHIFT 0 6526b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MS4_VOLUME_DEPTH_MASK (0xff<<0) 6536b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 6546b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* p244 */ 6556b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_SAMPLER_STATE (CMD_3D|(0x1d<<24)|(0x1<<16)) 6566b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 6576b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS1_MAPMASK_SHIFT 0 6586b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS1_MAPMASK_MASK (0x8fff<<0) 6596b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 6606b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_REVERSE_GAMMA_ENABLE (1<<31) 6616b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_PACKED_TO_PLANAR_ENABLE (1<<30) 6626b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_COLORSPACE_CONVERSION (1<<29) 6636b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_CHROMAKEY_SHIFT 27 6646b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_BASE_MIP_LEVEL_SHIFT 22 6656b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_BASE_MIP_LEVEL_MASK (0x1f<<22) 6666b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MIP_FILTER_SHIFT 20 6676b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MIP_FILTER_MASK (0x3<<20) 6686b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MIPFILTER_NONE 0 6696b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MIPFILTER_NEAREST 1 6706b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define MIPFILTER_LINEAR 3 6716b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MAG_FILTER_SHIFT 17 6726b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MAG_FILTER_MASK (0x7<<17) 6736b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FILTER_NEAREST 0 6746b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FILTER_LINEAR 1 6756b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FILTER_ANISOTROPIC 2 6766b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FILTER_4X4_1 3 6776b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FILTER_4X4_2 4 6786b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FILTER_4X4_FLAT 5 6796b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define FILTER_6X5_MONO 6 /* XXX - check */ 6806b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MIN_FILTER_SHIFT 14 6816b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MIN_FILTER_MASK (0x7<<14) 6826b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_LOD_BIAS_SHIFT 5 6836b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_LOD_BIAS_ONE (0x10<<5) 6846b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_LOD_BIAS_MASK (0x1ff<<5) 6856b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* Shadow requires: 6866b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * MT_X8{I,L,A}24 or MT_{I,L,A}16 texture format 6876b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell * FILTER_4X4_x MIN and MAG filters 6886b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 6896b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_SHADOW_ENABLE (1<<4) 6906b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MAX_ANISO_MASK (1<<3) 6916b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MAX_ANISO_2 (0<<3) 6926b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_MAX_ANISO_4 (1<<3) 6936b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_SHADOW_FUNC_SHIFT 0 6946b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS2_SHADOW_FUNC_MASK (0x7<<0) 6956b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* SS2_SHADOW_FUNC values: see COMPAREFUNC_* */ 6966b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 6976b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_MIN_LOD_SHIFT 24 6986b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_MIN_LOD_ONE (0x10<<24) 6996b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_MIN_LOD_MASK (0xff<<24) 7006b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_KILL_PIXEL_ENABLE (1<<17) 7016b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_TCX_ADDR_MODE_SHIFT 12 7026b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_TCX_ADDR_MODE_MASK (0x7<<12) 7036b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEXCOORDMODE_WRAP 0 7046b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEXCOORDMODE_MIRROR 1 7056b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEXCOORDMODE_CLAMP_EDGE 2 7066b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEXCOORDMODE_CUBE 3 7076b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEXCOORDMODE_CLAMP_BORDER 4 7086b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define TEXCOORDMODE_MIRROR_ONCE 5 7096b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_TCY_ADDR_MODE_SHIFT 9 7106b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_TCY_ADDR_MODE_MASK (0x7<<9) 7116b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_TCZ_ADDR_MODE_SHIFT 6 7126b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_TCZ_ADDR_MODE_MASK (0x7<<6) 7136b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_NORMALIZED_COORDS (1<<5) 7146b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_TEXTUREMAP_INDEX_SHIFT 1 7156b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_TEXTUREMAP_INDEX_MASK (0xf<<1) 7166b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS3_DEINTERLACER_ENABLE (1<<0) 7176b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 7186b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define SS4_BORDER_COLOR_MASK (~0) 7196b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 7206b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell/* 3DSTATE_SPAN_STIPPLE, p258 7216b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell */ 7226b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_STIPPLE ((0x3<<29)|(0x1d<<24)|(0x83<<16)) 7236b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ST1_ENABLE (1<<16) 7246b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define ST1_MASK (0xffff) 7256b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 7266b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DEFAULT_Z ((0x3<<29)|(0x1d<<24)|(0x98<<16)) 7276b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DEFAULT_DIFFUSE ((0x3<<29)|(0x1d<<24)|(0x99<<16)) 7286b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#define _3DSTATE_DEFAULT_SPECULAR ((0x3<<29)|(0x1d<<24)|(0x9a<<16)) 7296b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell 7306b9e31f3eb3dbe20cbc8493b963bbc6530e392c6Keith Whitwell#endif 731