Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  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.