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