Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | 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. #ifndef _I830_REG_H_
  29. #define _I830_REG_H_
  30.  
  31. #define I830_SET_FIELD( var, mask, value ) (var &= ~(mask), var |= value)
  32.  
  33. /* Flush */
  34. #define MI_FLUSH                        (0x04<<23)
  35. #define MI_FLUSH_DW                     (0x26<<23)
  36.  
  37. #define MI_WRITE_DIRTY_STATE            (1<<4)
  38. #define MI_END_SCENE                    (1<<3)
  39. #define MI_GLOBAL_SNAPSHOT_COUNT_RESET  (1<<3)
  40. #define MI_INHIBIT_RENDER_CACHE_FLUSH   (1<<2)
  41. #define MI_STATE_INSTRUCTION_CACHE_FLUSH (1<<1)
  42. #define MI_INVALIDATE_MAP_CACHE         (1<<0)
  43. /* broadwater flush bits */
  44. #define BRW_MI_GLOBAL_SNAPSHOT_RESET   (1 << 3)
  45.  
  46. #define MI_BATCH_BUFFER_END     (0xA << 23)
  47.  
  48. /* Noop */
  49. #define MI_NOOP                         0x00
  50. #define MI_NOOP_WRITE_ID                (1<<22)
  51. #define MI_NOOP_ID_MASK                 (1<<22 - 1)
  52.  
  53. /* Wait for Events */
  54. #define MI_WAIT_FOR_EVENT                       (0x03<<23)
  55. #define MI_WAIT_FOR_PIPEB_SVBLANK               (1<<18)
  56. #define MI_WAIT_FOR_PIPEA_SVBLANK               (1<<17)
  57. #define MI_WAIT_FOR_OVERLAY_FLIP                (1<<16)
  58. #define MI_WAIT_FOR_PIPEB_VBLANK                (1<<7)
  59. #define MI_WAIT_FOR_PIPEB_SCAN_LINE_WINDOW      (1<<5)
  60. #define MI_WAIT_FOR_PIPEA_VBLANK                (1<<3)
  61. #define MI_WAIT_FOR_PIPEA_SCAN_LINE_WINDOW      (1<<1)
  62.  
  63. /* Set the scan line for MI_WAIT_FOR_PIPE?_SCAN_LINE_WINDOW */
  64. #define MI_LOAD_SCAN_LINES_INCL                 (0x12<<23)
  65. #define MI_LOAD_SCAN_LINES_DISPLAY_PIPEA        (0)
  66. #define MI_LOAD_SCAN_LINES_DISPLAY_PIPEB        (0x1<<20)
  67.  
  68. /* BLT commands */
  69. #define COLOR_BLT_CMD           ((2<<29)|(0x40<<22)|(0x3))
  70. #define COLOR_BLT_WRITE_ALPHA   (1<<21)
  71. #define COLOR_BLT_WRITE_RGB     (1<<20)
  72.  
  73. #define XY_COLOR_BLT_CMD                ((2<<29)|(0x50<<22)|(0x4))
  74. #define XY_COLOR_BLT_WRITE_ALPHA        (1<<21)
  75. #define XY_COLOR_BLT_WRITE_RGB          (1<<20)
  76. #define XY_COLOR_BLT_TILED              (1<<11)
  77.  
  78. #define XY_SETUP_CLIP_BLT_CMD           ((2<<29)|(3<<22)|1)
  79.  
  80. #define XY_SRC_COPY_BLT_CMD             ((2<<29)|(0x53<<22)|6)
  81. #define XY_SRC_COPY_BLT_WRITE_ALPHA     (1<<21)
  82. #define XY_SRC_COPY_BLT_WRITE_RGB       (1<<20)
  83. #define XY_SRC_COPY_BLT_SRC_TILED       (1<<15)
  84. #define XY_SRC_COPY_BLT_DST_TILED       (1<<11)
  85.  
  86. #define SRC_COPY_BLT_CMD                ((2<<29)|(0x43<<22)|0x4)
  87. #define SRC_COPY_BLT_WRITE_ALPHA        (1<<21)
  88. #define SRC_COPY_BLT_WRITE_RGB          (1<<20)
  89.  
  90. #define XY_PAT_BLT_IMMEDIATE            ((2<<29)|(0x72<<22))
  91.  
  92. #define XY_MONO_PAT_BLT_CMD             ((0x2<<29)|(0x52<<22)|0x7)
  93. #define XY_MONO_PAT_VERT_SEED           ((1<<10)|(1<<9)|(1<<8))
  94. #define XY_MONO_PAT_HORT_SEED           ((1<<14)|(1<<13)|(1<<12))
  95. #define XY_MONO_PAT_BLT_WRITE_ALPHA     (1<<21)
  96. #define XY_MONO_PAT_BLT_WRITE_RGB       (1<<20)
  97.  
  98. #define XY_MONO_SRC_BLT_CMD             ((0x2<<29)|(0x54<<22)|(0x6))
  99. #define XY_MONO_SRC_BLT_WRITE_ALPHA     (1<<21)
  100. #define XY_MONO_SRC_BLT_WRITE_RGB       (1<<20)
  101.  
  102. #define CMD_3D (0x3<<29)
  103.  
  104. #define PRIM3D_INLINE           (CMD_3D | (0x1f<<24))
  105. #define PRIM3D_TRILIST          (0x0<<18)
  106. #define PRIM3D_TRISTRIP         (0x1<<18)
  107. #define PRIM3D_TRISTRIP_RVRSE   (0x2<<18)
  108. #define PRIM3D_TRIFAN           (0x3<<18)
  109. #define PRIM3D_POLY             (0x4<<18)
  110. #define PRIM3D_LINELIST         (0x5<<18)
  111. #define PRIM3D_LINESTRIP        (0x6<<18)
  112. #define PRIM3D_RECTLIST         (0x7<<18)
  113. #define PRIM3D_POINTLIST        (0x8<<18)
  114. #define PRIM3D_DIB              (0x9<<18)
  115. #define PRIM3D_CLEAR_RECT       (0xa<<18)
  116. #define PRIM3D_ZONE_INIT        (0xd<<18)
  117. #define PRIM3D_MASK             (0x1f<<18)
  118.  
  119. #define _3DSTATE_AA_CMD                 (CMD_3D | (0x06<<24))
  120. #define AA_LINE_ECAAR_WIDTH_ENABLE      (1<<16)
  121. #define AA_LINE_ECAAR_WIDTH_0_5         0
  122. #define AA_LINE_ECAAR_WIDTH_1_0         (1<<14)
  123. #define AA_LINE_ECAAR_WIDTH_2_0         (2<<14)
  124. #define AA_LINE_ECAAR_WIDTH_4_0         (3<<14)
  125. #define AA_LINE_REGION_WIDTH_ENABLE     (1<<8)
  126. #define AA_LINE_REGION_WIDTH_0_5        0
  127. #define AA_LINE_REGION_WIDTH_1_0        (1<<6)
  128. #define AA_LINE_REGION_WIDTH_2_0        (2<<6)
  129. #define AA_LINE_REGION_WIDTH_4_0        (3<<6)
  130. #define AA_LINE_ENABLE                  ((1<<1) | 1)
  131. #define AA_LINE_DISABLE                 (1<<1)
  132.  
  133. #define _3DSTATE_BUF_INFO_CMD   (CMD_3D | (0x1d<<24) | (0x8e<<16) | 1)
  134. /* Dword 1 */
  135. #define BUF_3D_ID_COLOR_BACK    (0x3<<24)
  136. #define BUF_3D_ID_DEPTH         (0x7<<24)
  137. #define BUF_3D_USE_FENCE        (1<<23)
  138. #define BUF_3D_TILED_SURFACE    (1<<22)
  139. #define BUF_3D_TILE_WALK_X      0
  140. #define BUF_3D_TILE_WALK_Y      (1<<21)
  141. #define BUF_3D_PITCH(x)         (((x)/4)<<2)
  142. /* Dword 2 */
  143. #define BUF_3D_ADDR(x)          ((x) & ~0x3)
  144.  
  145. #define _3DSTATE_COLOR_FACTOR_CMD       (CMD_3D | (0x1d<<24) | (0x1<<16))
  146.  
  147. #define _3DSTATE_COLOR_FACTOR_N_CMD(stage)      (CMD_3D | (0x1d<<24) | \
  148.                                                  ((0x90+(stage))<<16))
  149.  
  150. #define _3DSTATE_CONST_BLEND_COLOR_CMD  (CMD_3D | (0x1d<<24) | (0x88<<16))
  151.  
  152. #define _3DSTATE_DFLT_DIFFUSE_CMD       (CMD_3D | (0x1d<<24) | (0x99<<16))
  153.  
  154. #define _3DSTATE_DFLT_SPEC_CMD          (CMD_3D | (0x1d<<24) | (0x9a<<16))
  155.  
  156. #define _3DSTATE_DFLT_Z_CMD             (CMD_3D | (0x1d<<24) | (0x98<<16))
  157.  
  158. #define _3DSTATE_DST_BUF_VARS_CMD       (CMD_3D | (0x1d<<24) | (0x85<<16))
  159. /* Dword 1 */
  160. #define DSTORG_HORT_BIAS(x)             ((x)<<20)
  161. #define DSTORG_VERT_BIAS(x)             ((x)<<16)
  162. #define COLOR_4_2_2_CHNL_WRT_ALL        0
  163. #define COLOR_4_2_2_CHNL_WRT_Y          (1<<12)
  164. #define COLOR_4_2_2_CHNL_WRT_CR         (2<<12)
  165. #define COLOR_4_2_2_CHNL_WRT_CB         (3<<12)
  166. #define COLOR_4_2_2_CHNL_WRT_CRCB       (4<<12)
  167. #define COLR_BUF_8BIT                   0
  168. #define COLR_BUF_RGB555                 (1<<8)
  169. #define COLR_BUF_RGB565                 (2<<8)
  170. #define COLR_BUF_ARGB8888               (3<<8)
  171. #define COLR_BUF_ARGB4444               (8<<8)
  172. #define COLR_BUF_ARGB1555               (9<<8)
  173. #define DEPTH_IS_Z                      0
  174. #define DEPTH_IS_W                      (1<<6)
  175. #define DEPTH_FRMT_16_FIXED             0
  176. #define DEPTH_FRMT_16_FLOAT             (1<<2)
  177. #define DEPTH_FRMT_24_FIXED_8_OTHER     (2<<2)
  178. #define DEPTH_FRMT_24_FLOAT_8_OTHER     (3<<2)
  179. #define VERT_LINE_STRIDE_1              (1<<1)
  180. #define VERT_LINE_STRIDE_0              0
  181. #define VERT_LINE_STRIDE_OFS_1          1
  182. #define VERT_LINE_STRIDE_OFS_0          0
  183.  
  184. #define _3DSTATE_DRAW_RECT_CMD          (CMD_3D|(0x1d<<24)|(0x80<<16)|3)
  185. /* Dword 1 */
  186. #define DRAW_RECT_DIS_DEPTH_OFS         (1<<30)
  187. #define DRAW_DITHER_OFS_X(x)            ((x)<<26)
  188. #define DRAW_DITHER_OFS_Y(x)            ((x)<<24)
  189. /* Dword 2 */
  190. #define DRAW_YMIN(x)                    ((x)<<16)
  191. #define DRAW_XMIN(x)                    (x)
  192. /* Dword 3 */
  193. #define DRAW_YMAX(x)                    ((x)<<16)
  194. #define DRAW_XMAX(x)                    (x)
  195. /* Dword 4 */
  196. #define DRAW_YORG(x)                    ((x)<<16)
  197. #define DRAW_XORG(x)                    (x)
  198.  
  199. #define _3DSTATE_ENABLES_1_CMD          (CMD_3D|(0x3<<24))
  200. #define ENABLE_LOGIC_OP_MASK            ((1<<23)|(1<<22))
  201. #define ENABLE_LOGIC_OP                 ((1<<23)|(1<<22))
  202. #define DISABLE_LOGIC_OP                (1<<23)
  203. #define ENABLE_STENCIL_TEST             ((1<<21)|(1<<20))
  204. #define DISABLE_STENCIL_TEST            (1<<21)
  205. #define ENABLE_DEPTH_BIAS               ((1<<11)|(1<<10))
  206. #define DISABLE_DEPTH_BIAS              (1<<11)
  207. #define ENABLE_SPEC_ADD_MASK            ((1<<9)|(1<<8))
  208. #define ENABLE_SPEC_ADD                 ((1<<9)|(1<<8))
  209. #define DISABLE_SPEC_ADD                (1<<9)
  210. #define ENABLE_DIS_FOG_MASK             ((1<<7)|(1<<6))
  211. #define ENABLE_FOG                      ((1<<7)|(1<<6))
  212. #define DISABLE_FOG                     (1<<7)
  213. #define ENABLE_DIS_ALPHA_TEST_MASK      ((1<<5)|(1<<4))
  214. #define ENABLE_ALPHA_TEST               ((1<<5)|(1<<4))
  215. #define DISABLE_ALPHA_TEST              (1<<5)
  216. #define ENABLE_DIS_CBLEND_MASK          ((1<<3)|(1<<2))
  217. #define ENABLE_COLOR_BLEND              ((1<<3)|(1<<2))
  218. #define DISABLE_COLOR_BLEND             (1<<3)
  219. #define ENABLE_DIS_DEPTH_TEST_MASK      ((1<<1)|1)
  220. #define ENABLE_DEPTH_TEST               ((1<<1)|1)
  221. #define DISABLE_DEPTH_TEST              (1<<1)
  222.  
  223. /* _3DSTATE_ENABLES_2, p138 */
  224. #define _3DSTATE_ENABLES_2_CMD          (CMD_3D|(0x4<<24))
  225. #define ENABLE_STENCIL_WRITE            ((1<<21)|(1<<20))
  226. #define DISABLE_STENCIL_WRITE           (1<<21)
  227. #define ENABLE_TEX_CACHE                ((1<<17)|(1<<16))
  228. #define DISABLE_TEX_CACHE               (1<<17)
  229. #define ENABLE_DITHER                   ((1<<9)|(1<<8))
  230. #define DISABLE_DITHER                  (1<<9)
  231. #define ENABLE_COLOR_MASK               (1<<10)
  232. #define WRITEMASK_ALPHA                 (1<<7)
  233. #define WRITEMASK_ALPHA_SHIFT           7
  234. #define WRITEMASK_RED                   (1<<6)
  235. #define WRITEMASK_RED_SHIFT             6
  236. #define WRITEMASK_GREEN                 (1<<5)
  237. #define WRITEMASK_GREEN_SHIFT           5
  238. #define WRITEMASK_BLUE                  (1<<4)
  239. #define WRITEMASK_BLUE_SHIFT            4
  240. #define WRITEMASK_MASK                  ((1<<4)|(1<<5)|(1<<6)|(1<<7))
  241. #define ENABLE_COLOR_WRITE              ((1<<3)|(1<<2))
  242. #define DISABLE_COLOR_WRITE             (1<<3)
  243. #define ENABLE_DIS_DEPTH_WRITE_MASK     0x3
  244. #define ENABLE_DEPTH_WRITE              ((1<<1)|1)
  245. #define DISABLE_DEPTH_WRITE             (1<<1)
  246.  
  247. /* _3DSTATE_FOG_COLOR, p139 */
  248. #define _3DSTATE_FOG_COLOR_CMD          (CMD_3D|(0x15<<24))
  249. #define FOG_COLOR_RED(x)                ((x)<<16)
  250. #define FOG_COLOR_GREEN(x)              ((x)<<8)
  251. #define FOG_COLOR_BLUE(x)               (x)
  252.  
  253. /* _3DSTATE_FOG_MODE, p140 */
  254. #define _3DSTATE_FOG_MODE_CMD           (CMD_3D|(0x1d<<24)|(0x89<<16)|2)
  255. /* Dword 1 */
  256. #define FOGFUNC_ENABLE                  (1<<31)
  257. #define FOGFUNC_VERTEX                  0
  258. #define FOGFUNC_PIXEL_EXP               (1<<28)
  259. #define FOGFUNC_PIXEL_EXP2              (2<<28)
  260. #define FOGFUNC_PIXEL_LINEAR            (3<<28)
  261. #define FOGSRC_INDEX_Z                  (1<<27)
  262. #define FOGSRC_INDEX_W                  ((1<<27)|(1<<25))
  263. #define FOG_LINEAR_CONST                (1<<24)
  264. #define FOG_CONST_1(x)                  ((x)<<4)
  265. #define ENABLE_FOG_DENSITY              (1<<23)
  266. /* Dword 2 */
  267. #define FOG_CONST_2(x)                  (x)
  268. /* Dword 3 */
  269. #define FOG_DENSITY(x)                  (x)
  270.  
  271. /* _3DSTATE_INDEPENDENT_ALPHA_BLEND, p142 */
  272. #define _3DSTATE_INDPT_ALPHA_BLEND_CMD  (CMD_3D|(0x0b<<24))
  273. #define ENABLE_INDPT_ALPHA_BLEND        ((1<<23)|(1<<22))
  274. #define DISABLE_INDPT_ALPHA_BLEND       (1<<23)
  275. #define ALPHA_BLENDFUNC_MASK            0x3f0000
  276. #define ENABLE_ALPHA_BLENDFUNC          (1<<21)
  277. #define ABLENDFUNC_ADD                  0
  278. #define ABLENDFUNC_SUB                  (1<<16)
  279. #define ABLENDFUNC_RVSE_SUB             (2<<16)
  280. #define ABLENDFUNC_MIN                  (3<<16)
  281. #define ABLENDFUNC_MAX                  (4<<16)
  282. #define SRC_DST_ABLEND_MASK             0xfff
  283. #define ENABLE_SRC_ABLEND_FACTOR        (1<<11)
  284. #define SRC_ABLEND_FACT(x)              ((x)<<6)
  285. #define ENABLE_DST_ABLEND_FACTOR        (1<<5)
  286. #define DST_ABLEND_FACT(x)              (x)
  287.  
  288. #define BLENDFACTOR_ZERO                0x01
  289. #define BLENDFACTOR_ONE                 0x02
  290. #define BLENDFACTOR_SRC_COLR            0x03
  291. #define BLENDFACTOR_INV_SRC_COLR        0x04
  292. #define BLENDFACTOR_SRC_ALPHA           0x05
  293. #define BLENDFACTOR_INV_SRC_ALPHA       0x06
  294. #define BLENDFACTOR_DST_ALPHA           0x07
  295. #define BLENDFACTOR_INV_DST_ALPHA       0x08
  296. #define BLENDFACTOR_DST_COLR            0x09
  297. #define BLENDFACTOR_INV_DST_COLR        0x0a
  298. #define BLENDFACTOR_SRC_ALPHA_SATURATE  0x0b
  299. #define BLENDFACTOR_CONST_COLOR         0x0c
  300. #define BLENDFACTOR_INV_CONST_COLOR     0x0d
  301. #define BLENDFACTOR_CONST_ALPHA         0x0e
  302. #define BLENDFACTOR_INV_CONST_ALPHA     0x0f
  303. #define BLENDFACTOR_MASK                0x0f
  304.  
  305. /* _3DSTATE_MAP_BLEND_ARG, p152 */
  306. #define _3DSTATE_MAP_BLEND_ARG_CMD(stage)       (CMD_3D|(0x0e<<24)|((stage)<<20))
  307.  
  308. #define TEXPIPE_COLOR                   0
  309. #define TEXPIPE_ALPHA                   (1<<18)
  310. #define TEXPIPE_KILL                    (2<<18)
  311. #define TEXBLEND_ARG0                   0
  312. #define TEXBLEND_ARG1                   (1<<15)
  313. #define TEXBLEND_ARG2                   (2<<15)
  314. #define TEXBLEND_ARG3                   (3<<15)
  315. #define TEXBLENDARG_MODIFY_PARMS        (1<<6)
  316. #define TEXBLENDARG_REPLICATE_ALPHA     (1<<5)
  317. #define TEXBLENDARG_INV_ARG             (1<<4)
  318. #define TEXBLENDARG_ONE                 0
  319. #define TEXBLENDARG_FACTOR              0x01
  320. #define TEXBLENDARG_ACCUM               0x02
  321. #define TEXBLENDARG_DIFFUSE             0x03
  322. #define TEXBLENDARG_SPEC                0x04
  323. #define TEXBLENDARG_CURRENT             0x05
  324. #define TEXBLENDARG_TEXEL0              0x06
  325. #define TEXBLENDARG_TEXEL1              0x07
  326. #define TEXBLENDARG_TEXEL2              0x08
  327. #define TEXBLENDARG_TEXEL3              0x09
  328. #define TEXBLENDARG_FACTOR_N            0x0e
  329.  
  330. /* _3DSTATE_MAP_BLEND_OP, p155 */
  331. #define _3DSTATE_MAP_BLEND_OP_CMD(stage)        (CMD_3D|(0x0d<<24)|((stage)<<20))
  332. #if 0
  333. #   define TEXPIPE_COLOR                0
  334. #   define TEXPIPE_ALPHA                (1<<18)
  335. #   define TEXPIPE_KILL                 (2<<18)
  336. #endif
  337. #define ENABLE_TEXOUTPUT_WRT_SEL        (1<<17)
  338. #define TEXOP_OUTPUT_CURRENT            0
  339. #define TEXOP_OUTPUT_ACCUM              (1<<15)
  340. #define ENABLE_TEX_CNTRL_STAGE          ((1<<12)|(1<<11))
  341. #define DISABLE_TEX_CNTRL_STAGE         (1<<12)
  342. #define TEXOP_SCALE_SHIFT               9
  343. #define TEXOP_SCALE_1X                  (0 << TEXOP_SCALE_SHIFT)
  344. #define TEXOP_SCALE_2X                  (1 << TEXOP_SCALE_SHIFT)
  345. #define TEXOP_SCALE_4X                  (2 << TEXOP_SCALE_SHIFT)
  346. #define TEXOP_MODIFY_PARMS              (1<<8)
  347. #define TEXOP_LAST_STAGE                (1<<7)
  348. #define TEXBLENDOP_KILLPIXEL            0x02
  349. #define TEXBLENDOP_ARG1                 0x01
  350. #define TEXBLENDOP_ARG2                 0x02
  351. #define TEXBLENDOP_MODULATE             0x03
  352. #define TEXBLENDOP_ADD                  0x06
  353. #define TEXBLENDOP_ADDSIGNED            0x07
  354. #define TEXBLENDOP_BLEND                0x08
  355. #define TEXBLENDOP_BLEND_AND_ADD        0x09
  356. #define TEXBLENDOP_SUBTRACT             0x0a
  357. #define TEXBLENDOP_DOT3                 0x0b
  358. #define TEXBLENDOP_DOT4                 0x0c
  359. #define TEXBLENDOP_MODULATE_AND_ADD     0x0d
  360. #define TEXBLENDOP_MODULATE_2X_AND_ADD  0x0e
  361. #define TEXBLENDOP_MODULATE_4X_AND_ADD  0x0f
  362.  
  363. /* _3DSTATE_MAP_BUMP_TABLE, p160 TODO */
  364. /* _3DSTATE_MAP_COLOR_CHROMA_KEY, p161 TODO */
  365.  
  366. #define _3DSTATE_MAP_COORD_TRANSFORM    ((3<<29)|(0x1d<<24)|(0x8c<<16))
  367. #define DISABLE_TEX_TRANSFORM           (1<<28)
  368. #define TEXTURE_SET(x)                  (x<<29)
  369.  
  370. #define _3DSTATE_VERTEX_TRANSFORM       ((3<<29)|(0x1d<<24)|(0x8b<<16))
  371. #define DISABLE_VIEWPORT_TRANSFORM      (1<<31)
  372. #define DISABLE_PERSPECTIVE_DIVIDE      (1<<29)
  373.  
  374. /* _3DSTATE_MAP_COORD_SET_BINDINGS, p162 */
  375. #define _3DSTATE_MAP_COORD_SETBIND_CMD  (CMD_3D|(0x1d<<24)|(0x02<<16))
  376. #define TEXBIND_MASK3                   ((1<<15)|(1<<14)|(1<<13)|(1<<12))
  377. #define TEXBIND_MASK2                   ((1<<11)|(1<<10)|(1<<9)|(1<<8))
  378. #define TEXBIND_MASK1                   ((1<<7)|(1<<6)|(1<<5)|(1<<4))
  379. #define TEXBIND_MASK0                   ((1<<3)|(1<<2)|(1<<1)|1)
  380.  
  381. #define TEXBIND_SET3(x)                 ((x)<<12)
  382. #define TEXBIND_SET2(x)                 ((x)<<8)
  383. #define TEXBIND_SET1(x)                 ((x)<<4)
  384. #define TEXBIND_SET0(x)                 (x)
  385.  
  386. #define TEXCOORDSRC_KEEP                0
  387. #define TEXCOORDSRC_DEFAULT             0x01
  388. #define TEXCOORDSRC_VTXSET_0            0x08
  389. #define TEXCOORDSRC_VTXSET_1            0x09
  390. #define TEXCOORDSRC_VTXSET_2            0x0a
  391. #define TEXCOORDSRC_VTXSET_3            0x0b
  392. #define TEXCOORDSRC_VTXSET_4            0x0c
  393. #define TEXCOORDSRC_VTXSET_5            0x0d
  394. #define TEXCOORDSRC_VTXSET_6            0x0e
  395. #define TEXCOORDSRC_VTXSET_7            0x0f
  396.  
  397. #define MAP_UNIT(unit)                  ((unit)<<16)
  398. #define MAP_UNIT_MASK                   (0x7<<16)
  399.  
  400. /* _3DSTATE_MAP_COORD_SETS, p164 */
  401. #define _3DSTATE_MAP_COORD_SET_CMD      (CMD_3D|(0x1c<<24)|(0x01<<19))
  402. #define TEXCOORD_SET(n)                 ((n)<<16)
  403. #define ENABLE_TEXCOORD_PARAMS          (1<<15)
  404. #define TEXCOORDS_ARE_NORMAL            (1<<14)
  405. #define TEXCOORDS_ARE_IN_TEXELUNITS     0
  406. #define TEXCOORDTYPE_CARTESIAN          0
  407. #define TEXCOORDTYPE_HOMOGENEOUS        (1<<11)
  408. #define TEXCOORDTYPE_VECTOR             (2<<11)
  409. #define TEXCOORDTYPE_MASK               (0x7<<11)
  410. #define ENABLE_ADDR_V_CNTL              (1<<7)
  411. #define ENABLE_ADDR_U_CNTL              (1<<3)
  412. #define TEXCOORD_ADDR_V_MODE(x)         ((x)<<4)
  413. #define TEXCOORD_ADDR_U_MODE(x)         (x)
  414. #define TEXCOORDMODE_WRAP               0
  415. #define TEXCOORDMODE_MIRROR             1
  416. #define TEXCOORDMODE_CLAMP              2
  417. #define TEXCOORDMODE_WRAP_SHORTEST      3
  418. #define TEXCOORDMODE_CLAMP_BORDER       4
  419. #define TEXCOORD_ADDR_V_MASK            0x70
  420. #define TEXCOORD_ADDR_U_MASK            0x7
  421.  
  422. /* _3DSTATE_MAP_CUBE, p168 TODO */
  423. #define _3DSTATE_MAP_CUBE               (CMD_3D|(0x1c<<24)|(0x0a<<19))
  424. #define CUBE_NEGX_ENABLE                (1<<5)
  425. #define CUBE_POSX_ENABLE                (1<<4)
  426. #define CUBE_NEGY_ENABLE                (1<<3)
  427. #define CUBE_POSY_ENABLE                (1<<2)
  428. #define CUBE_NEGZ_ENABLE                (1<<1)
  429. #define CUBE_POSZ_ENABLE                (1<<0)
  430.  
  431. #define _3DSTATE_MAP_INFO_CMD           (CMD_3D|(0x1d<<24)|(0x0<<16)|3)
  432. #define TEXMAP_INDEX(x)                 ((x)<<28)
  433. #define MAP_SURFACE_8BIT                (1<<24)
  434. #define MAP_SURFACE_16BIT               (2<<24)
  435. #define MAP_SURFACE_32BIT               (3<<24)
  436. #define MAP_FORMAT_2D                   (0)
  437. #define MAP_FORMAT_3D_CUBE              (1<<11)
  438.  
  439. /* _3DSTATE_MODES_1, p190 */
  440. #define _3DSTATE_MODES_1_CMD            (CMD_3D|(0x08<<24))
  441. #define BLENDFUNC_MASK                  0x3f0000
  442. #define ENABLE_COLR_BLND_FUNC           (1<<21)
  443. #define BLENDFUNC_ADD                   0
  444. #define BLENDFUNC_SUB                   (1<<16)
  445. #define BLENDFUNC_RVRSE_SUB             (2<<16)
  446. #define BLENDFUNC_MIN                   (3<<16)
  447. #define BLENDFUNC_MAX                   (4<<16)
  448. #define SRC_DST_BLND_MASK               0xfff
  449. #define ENABLE_SRC_BLND_FACTOR          (1<<11)
  450. #define ENABLE_DST_BLND_FACTOR          (1<<5)
  451. #define SRC_BLND_FACT(x)                ((x)<<6)
  452. #define DST_BLND_FACT(x)                (x)
  453.  
  454. /* _3DSTATE_MODES_2, p192 */
  455. #define _3DSTATE_MODES_2_CMD            (CMD_3D|(0x0f<<24))
  456. #define ENABLE_GLOBAL_DEPTH_BIAS        (1<<22)
  457. #define GLOBAL_DEPTH_BIAS(x)            ((x)<<14)
  458. #define ENABLE_ALPHA_TEST_FUNC          (1<<13)
  459. #define ENABLE_ALPHA_REF_VALUE          (1<<8)
  460. #define ALPHA_TEST_FUNC(x)              ((x)<<9)
  461. #define ALPHA_REF_VALUE(x)              (x)
  462.  
  463. #define ALPHA_TEST_REF_MASK             0x3fff
  464.  
  465. /* _3DSTATE_MODES_3, p193 */
  466. #define _3DSTATE_MODES_3_CMD            (CMD_3D|(0x02<<24))
  467. #define DEPTH_TEST_FUNC_MASK            0x1f0000
  468. #define ENABLE_DEPTH_TEST_FUNC          (1<<20)
  469. /* Uses COMPAREFUNC */
  470. #define DEPTH_TEST_FUNC(x)              ((x)<<16)
  471. #define ENABLE_ALPHA_SHADE_MODE         (1<<11)
  472. #define ENABLE_FOG_SHADE_MODE           (1<<9)
  473. #define ENABLE_SPEC_SHADE_MODE          (1<<7)
  474. #define ENABLE_COLOR_SHADE_MODE         (1<<5)
  475. #define ALPHA_SHADE_MODE(x)             ((x)<<10)
  476. #define FOG_SHADE_MODE(x)               ((x)<<8)
  477. #define SPEC_SHADE_MODE(x)              ((x)<<6)
  478. #define COLOR_SHADE_MODE(x)             ((x)<<4)
  479. #define CULLMODE_MASK                   0xf
  480. #define ENABLE_CULL_MODE                (1<<3)
  481. #define CULLMODE_BOTH                   0
  482. #define CULLMODE_NONE                   1
  483. #define CULLMODE_CW                     2
  484. #define CULLMODE_CCW                    3
  485.  
  486. #define SHADE_MODE_LINEAR               0
  487. #define SHADE_MODE_FLAT                 0x1
  488.  
  489. /* _3DSTATE_MODES_4, p195 */
  490. #define _3DSTATE_MODES_4_CMD            (CMD_3D|(0x16<<24))
  491. #define ENABLE_LOGIC_OP_FUNC            (1<<23)
  492. #define LOGIC_OP_FUNC(x)                ((x)<<18)
  493. #define LOGICOP_MASK                    ((1<<18)|(1<<19)|(1<<20)|(1<<21))
  494. #define LOGICOP_CLEAR                   0
  495. #define LOGICOP_NOR                     0x1
  496. #define LOGICOP_AND_INV                 0x2
  497. #define LOGICOP_COPY_INV                0x3
  498. #define LOGICOP_AND_RVRSE               0x4
  499. #define LOGICOP_INV                     0x5
  500. #define LOGICOP_XOR                     0x6
  501. #define LOGICOP_NAND                    0x7
  502. #define LOGICOP_AND                     0x8
  503. #define LOGICOP_EQUIV                   0x9
  504. #define LOGICOP_NOOP                    0xa
  505. #define LOGICOP_OR_INV                  0xb
  506. #define LOGICOP_COPY                    0xc
  507. #define LOGICOP_OR_RVRSE                0xd
  508. #define LOGICOP_OR                      0xe
  509. #define LOGICOP_SET                     0xf
  510. #define MODE4_ENABLE_STENCIL_TEST_MASK  ((1<<17)|(0xff00))
  511. #define ENABLE_STENCIL_TEST_MASK        (1<<17)
  512. #define STENCIL_TEST_MASK(x)            ((x)<<8)
  513. #define MODE4_ENABLE_STENCIL_WRITE_MASK ((1<<16)|(0x00ff))
  514. #define ENABLE_STENCIL_WRITE_MASK       (1<<16)
  515. #define STENCIL_WRITE_MASK(x)           ((x)&0xff)
  516.  
  517. /* _3DSTATE_MODES_5, p196 */
  518. #define _3DSTATE_MODES_5_CMD            (CMD_3D|(0x0c<<24))
  519. #define ENABLE_SPRITE_POINT_TEX         (1<<23)
  520. #define SPRITE_POINT_TEX_ON             (1<<22)
  521. #define SPRITE_POINT_TEX_OFF            0
  522. #define FLUSH_RENDER_CACHE              (1<<18)
  523. #define FLUSH_TEXTURE_CACHE             (1<<16)
  524. #define FIXED_LINE_WIDTH_MASK           0xfc00
  525. #define ENABLE_FIXED_LINE_WIDTH         (1<<15)
  526. #define FIXED_LINE_WIDTH(x)             ((x)<<10)
  527. #define FIXED_POINT_WIDTH_MASK          0x3ff
  528. #define ENABLE_FIXED_POINT_WIDTH        (1<<9)
  529. #define FIXED_POINT_WIDTH(x)            (x)
  530.  
  531. /* _3DSTATE_RASTERIZATION_RULES, p198 */
  532. #define _3DSTATE_RASTER_RULES_CMD       (CMD_3D|(0x07<<24))
  533. #define ENABLE_POINT_RASTER_RULE        (1<<15)
  534. #define OGL_POINT_RASTER_RULE           (1<<13)
  535. #define ENABLE_LINE_STRIP_PROVOKE_VRTX  (1<<8)
  536. #define ENABLE_TRI_FAN_PROVOKE_VRTX     (1<<5)
  537. #define ENABLE_TRI_STRIP_PROVOKE_VRTX   (1<<2)
  538. #define LINE_STRIP_PROVOKE_VRTX(x)      ((x)<<6)
  539. #define TRI_FAN_PROVOKE_VRTX(x)         ((x)<<3)
  540. #define TRI_STRIP_PROVOKE_VRTX(x)       (x)
  541.  
  542. /* _3DSTATE_SCISSOR_ENABLE, p200 */
  543. #define _3DSTATE_SCISSOR_ENABLE_CMD     (CMD_3D|(0x1c<<24)|(0x10<<19))
  544. #define ENABLE_SCISSOR_RECT             ((1<<1) | 1)
  545. #define DISABLE_SCISSOR_RECT            (1<<1)
  546.  
  547. /* _3DSTATE_SCISSOR_RECTANGLE_0, p201 */
  548. #define _3DSTATE_SCISSOR_RECT_0_CMD     (CMD_3D|(0x1d<<24)|(0x81<<16)|1)
  549. /* Dword 1 */
  550. #define SCISSOR_RECT_0_YMIN(x)          ((x)<<16)
  551. #define SCISSOR_RECT_0_XMIN(x)          (x)
  552. /* Dword 2 */
  553. #define SCISSOR_RECT_0_YMAX(x)          ((x)<<16)
  554. #define SCISSOR_RECT_0_XMAX(x)          (x)
  555.  
  556. /* _3DSTATE_STENCIL_TEST, p202 */
  557. #define _3DSTATE_STENCIL_TEST_CMD       (CMD_3D|(0x09<<24))
  558. #define ENABLE_STENCIL_PARMS            (1<<23)
  559. #define STENCIL_OPS_MASK                (0xffc000)
  560. #define STENCIL_FAIL_OP(x)              ((x)<<20)
  561. #define STENCIL_PASS_DEPTH_FAIL_OP(x)   ((x)<<17)
  562. #define STENCIL_PASS_DEPTH_PASS_OP(x)   ((x)<<14)
  563.  
  564. #define ENABLE_STENCIL_TEST_FUNC_MASK   ((1<<13)|(1<<12)|(1<<11)|(1<<10)|(1<<9))
  565. #define ENABLE_STENCIL_TEST_FUNC        (1<<13)
  566. /* Uses COMPAREFUNC */
  567. #define STENCIL_TEST_FUNC(x)            ((x)<<9)
  568. #define STENCIL_REF_VALUE_MASK          ((1<<8)|0xff)
  569. #define ENABLE_STENCIL_REF_VALUE        (1<<8)
  570. #define STENCIL_REF_VALUE(x)            (x)
  571.  
  572. /* _3DSTATE_VERTEX_FORMAT, p204 */
  573. #define _3DSTATE_VFT0_CMD       (CMD_3D|(0x05<<24))
  574. #define VFT0_POINT_WIDTH        (1<<12)
  575. #define VFT0_TEX_COUNT_MASK     (7<<8)
  576. #define VFT0_TEX_COUNT_SHIFT    8
  577. #define VFT0_TEX_COUNT(x)       ((x)<<8)
  578. #define VFT0_SPEC               (1<<7)
  579. #define VFT0_DIFFUSE            (1<<6)
  580. #define VFT0_DEPTH_OFFSET       (1<<5)
  581. #define VFT0_XYZ                (1<<1)
  582. #define VFT0_XYZW               (2<<1)
  583. #define VFT0_XY                 (3<<1)
  584. #define VFT0_XYW                (4<<1)
  585. #define VFT0_XYZW_MASK          (7<<1)
  586.  
  587. /* _3DSTATE_VERTEX_FORMAT_2, p206 */
  588. #define _3DSTATE_VERTEX_FORMAT_2_CMD    (CMD_3D|(0x0a<<24))
  589. #define VFT1_TEX7_FMT(x)        ((x)<<14)
  590. #define VFT1_TEX6_FMT(x)        ((x)<<12)
  591. #define VFT1_TEX5_FMT(x)        ((x)<<10)
  592. #define VFT1_TEX4_FMT(x)        ((x)<<8)
  593. #define VFT1_TEX3_FMT(x)        ((x)<<6)
  594. #define VFT1_TEX2_FMT(x)        ((x)<<4)
  595. #define VFT1_TEX1_FMT(x)        ((x)<<2)
  596. #define VFT1_TEX0_FMT(x)        (x)
  597. #define VFT1_TEX0_MASK          3
  598. #define VFT1_TEX1_SHIFT         2
  599. #define TEXCOORDFMT_2D          0
  600. #define TEXCOORDFMT_3D          1
  601. #define TEXCOORDFMT_4D          2
  602. #define TEXCOORDFMT_1D          3
  603.  
  604. /*New stuff picked up along the way */
  605.  
  606. #define MLC_LOD_BIAS_MASK ((1<<7)-1)
  607.  
  608. /* _3DSTATE_VERTEX_TRANSFORM, p207 */
  609. #define _3DSTATE_VERTEX_TRANS_CMD       (CMD_3D|(0x1d<<24)|(0x8b<<16)|0)
  610. #define _3DSTATE_VERTEX_TRANS_MTX_CMD   (CMD_3D|(0x1d<<24)|(0x8b<<16)|6)
  611. /* Dword 1 */
  612. #define ENABLE_VIEWPORT_TRANSFORM       ((1<<31)|(1<<30))
  613. #define DISABLE_VIEWPORT_TRANSFORM      (1<<31)
  614. #define ENABLE_PERSP_DIVIDE             ((1<<29)|(1<<28))
  615. #define DISABLE_PERSP_DIVIDE            (1<<29)
  616. #define VRTX_TRANS_LOAD_MATRICES        0x7421
  617. #define VRTX_TRANS_NO_LOAD_MATRICES     0x0000
  618. /* Dword 2 -> 7  are matrix elements */
  619.  
  620. /* _3DSTATE_W_STATE, p209 */
  621. #define _3DSTATE_W_STATE_CMD            (CMD_3D|(0x1d<<24)|(0x8d<<16)|1)
  622. /* Dword 1 */
  623. #define MAGIC_W_STATE_DWORD1            0x00000008
  624. /* Dword 2 */
  625. #define WFAR_VALUE(x)                   (x)
  626.  
  627. /* Stipple command, carried over from the i810, apparently:
  628.  */
  629. #define _3DSTATE_STIPPLE           (CMD_3D|(0x1d<<24)|(0x83<<16))
  630. #define ST1_ENABLE               (1<<16)
  631. #define ST1_MASK                 (0xffff)
  632.  
  633. #define _3DSTATE_LOAD_STATE_IMMEDIATE_1      (CMD_3D|(0x1d<<24)|(0x04<<16))
  634. #define I1_LOAD_S(n)                         (1<<((n)+4))
  635. #define S3_POINT_WIDTH_SHIFT                 23
  636. #define S3_LINE_WIDTH_SHIFT                  19
  637. #define S3_ALPHA_SHADE_MODE_SHIFT            18
  638. #define S3_FOG_SHADE_MODE_SHIFT              17
  639. #define S3_SPEC_SHADE_MODE_SHIFT             16
  640. #define S3_COLOR_SHADE_MODE_SHIFT            15
  641. #define S3_CULL_MODE_SHIFT                   13
  642. #define    S3_CULLMODE_BOTH                  (0)
  643. #define    S3_CULLMODE_NONE                  (1<<13)
  644. #define    S3_CULLMODE_CW                    (2<<13)
  645. #define    S3_CULLMODE_CCW                   (3<<13)
  646. #define S3_POINT_WIDTH_PRESENT               (1<<12)
  647. #define S3_SPEC_FOG_PRESENT                  (1<<11)
  648. #define S3_DIFFUSE_PRESENT                   (1<<10)
  649. #define S3_DEPTH_OFFSET_PRESENT              (1<<9)
  650. #define S3_POSITION_SHIFT                    6
  651. #define    S3_VERTEXHAS_XYZ                  (1<<6)
  652. #define    S3_VERTEXHAS_XYZW                 (2<<6)
  653. #define    S3_VERTEXHAS_XY                   (3<<6)
  654. #define    S3_VERTEXHAS_XYW                  (4<<6)
  655. #define S3_ENABLE_SPEC_ADD                   (1<<5)
  656. #define S3_ENABLE_FOG                        (1<<4)
  657. #define S3_ENABLE_LOCAL_DEPTH_BIAS           (1<<3)
  658. #define S3_ENABLE_SPRITE_POINT               (1<<1)
  659. #define S3_ENABLE_ANTIALIASING               1
  660. #define S8_ENABLE_ALPHA_TEST                 (1<<31)
  661. #define S8_ALPHA_TEST_FUNC_SHIFT             28
  662. #define S8_ALPHA_REFVALUE_SHIFT              20
  663. #define S8_ENABLE_DEPTH_TEST                 (1<<19)
  664. #define S8_DEPTH_TEST_FUNC_SHIFT             16
  665. #define S8_ENABLE_COLOR_BLEND                (1<<15)
  666. #define S8_COLOR_BLEND_FUNC_SHIFT            12
  667. #define    S8_BLENDFUNC_ADD                  (0)
  668. #define    S8_BLENDFUNC_SUB                  (1<<12)
  669. #define    S8_BLENDFUNC_RVRSE_SUB            (2<<12)
  670. #define    S8_BLENDFUNC_MIN                  (3<<12)
  671. #define    S8_BLENDFUNC_MAX                          (4<<12)
  672. #define S8_SRC_BLEND_FACTOR_SHIFT            8
  673. #define S8_DST_BLEND_FACTOR_SHIFT            4
  674. #define S8_ENABLE_DEPTH_BUFFER_WRITE         (1<<3)
  675. #define S8_ENABLE_COLOR_BUFFER_WRITE         (1<<2)
  676.  
  677. #define _3DSTATE_LOAD_STATE_IMMEDIATE_2      (CMD_3D|(0x1d<<24)|(0x03<<16))
  678. #define LOAD_TEXTURE_MAP(x)                   (1<<((x)+11))
  679. #define LOAD_TEXTURE_BLEND_STAGE(x)           (1<<((x)+7))
  680. #define LOAD_GLOBAL_COLOR_FACTOR            (1<<6)
  681.  
  682. #define TM0S0_ADDRESS_MASK              0xfffffffc
  683. #define TM0S0_USE_FENCE                 (1<<1)
  684.  
  685. #define TM0S1_HEIGHT_SHIFT              21
  686. #define TM0S1_WIDTH_SHIFT               10
  687. #define TM0S1_PALETTE_SELECT            (1<<9)
  688. #define TM0S1_MAPSURF_FORMAT_MASK       (0x7 << 6)
  689. #define TM0S1_MAPSURF_FORMAT_SHIFT      6
  690. #define    MAPSURF_8BIT_INDEXED            (0<<6)
  691. #define    MAPSURF_8BIT                    (1<<6)
  692. #define    MAPSURF_16BIT                   (2<<6)
  693. #define    MAPSURF_32BIT                   (3<<6)
  694. #define    MAPSURF_411                     (4<<6)
  695. #define    MAPSURF_422                     (5<<6)
  696. #define    MAPSURF_COMPRESSED              (6<<6)
  697. #define    MAPSURF_4BIT_INDEXED            (7<<6)
  698. #define TM0S1_MT_FORMAT_MASK         (0x7 << 3)
  699. #define TM0S1_MT_FORMAT_SHIFT        3
  700. #define    MT_4BIT_IDX_ARGB8888            (7<<3)       /* SURFACE_4BIT_INDEXED */
  701. #define    MT_8BIT_IDX_RGB565              (0<<3)       /* SURFACE_8BIT_INDEXED */
  702. #define    MT_8BIT_IDX_ARGB1555            (1<<3)
  703. #define    MT_8BIT_IDX_ARGB4444            (2<<3)
  704. #define    MT_8BIT_IDX_AY88                (3<<3)
  705. #define    MT_8BIT_IDX_ABGR8888            (4<<3)
  706. #define    MT_8BIT_IDX_BUMP_88DVDU         (5<<3)
  707. #define    MT_8BIT_IDX_BUMP_655LDVDU       (6<<3)
  708. #define    MT_8BIT_IDX_ARGB8888            (7<<3)
  709. #define    MT_8BIT_I8                      (0<<3)       /* SURFACE_8BIT */
  710. #define    MT_8BIT_L8                      (1<<3)
  711. #define    MT_8BIT_A8                      (4<<3)
  712. #define    MT_16BIT_RGB565                 (0<<3)       /* SURFACE_16BIT */
  713. #define    MT_16BIT_ARGB1555               (1<<3)
  714. #define    MT_16BIT_ARGB4444               (2<<3)
  715. #define    MT_16BIT_AY88                   (3<<3)
  716. #define    MT_16BIT_DIB_ARGB1555_8888      (4<<3)
  717. #define    MT_16BIT_BUMP_88DVDU            (5<<3)
  718. #define    MT_16BIT_BUMP_655LDVDU          (6<<3)
  719. #define    MT_16BIT_DIB_RGB565_8888        (7<<3)
  720. #define    MT_32BIT_ARGB8888               (0<<3)       /* SURFACE_32BIT */
  721. #define    MT_32BIT_ABGR8888               (1<<3)
  722. #define    MT_32BIT_XRGB8888               (2<<3)
  723. #define    MT_32BIT_XBGR8888               (3<<3)
  724. #define    MT_32BIT_BUMP_XLDVDU_8888       (6<<3)
  725. #define    MT_32BIT_DIB_8888               (7<<3)
  726. #define    MT_411_YUV411                   (0<<3)       /* SURFACE_411 */
  727. #define    MT_422_YCRCB_SWAPY              (0<<3)       /* SURFACE_422 */
  728. #define    MT_422_YCRCB_NORMAL             (1<<3)
  729. #define    MT_422_YCRCB_SWAPUV             (2<<3)
  730. #define    MT_422_YCRCB_SWAPUVY            (3<<3)
  731. #define    MT_COMPRESS_DXT1                (0<<3)       /* SURFACE_COMPRESSED */
  732. #define    MT_COMPRESS_DXT2_3              (1<<3)
  733. #define    MT_COMPRESS_DXT4_5              (2<<3)
  734. #define    MT_COMPRESS_FXT1                (3<<3)
  735. #define TM0S1_COLORSPACE_CONVERSION     (1 << 2)
  736. #define TM0S1_TILED_SURFACE             (1 << 1)
  737. #define TM0S1_TILE_WALK                 (1 << 0)
  738.  
  739. #define TM0S2_PITCH_SHIFT               21
  740. #define TM0S2_CUBE_FACE_ENA_SHIFT       15
  741. #define TM0S2_CUBE_FACE_ENA_MASK        (1<<15)
  742. #define TM0S2_MAP_FORMAT                (1<<14)
  743. #define    TM0S2_MAP_2D                 (0<<14)
  744. #define    TM0S2_MAP_3D_CUBE            (1<<14)
  745. #define TM0S2_VERTICAL_LINE_STRIDE      (1<<13)
  746. #define TM0S2_VERITCAL_LINE_STRIDE_OFF  (1<<12)
  747. #define TM0S2_OUTPUT_CHAN_SHIFT         10
  748. #define TM0S2_OUTPUT_CHAN_MASK          (3<<10)
  749.  
  750. #define TM0S3_MIP_FILTER_MASK           (0x3<<30)
  751. #define TM0S3_MIP_FILTER_SHIFT          30
  752. #define MIPFILTER_NONE          0
  753. #define MIPFILTER_NEAREST       1
  754. #define MIPFILTER_LINEAR        3
  755. #define TM0S3_MAG_FILTER_MASK           (0x3<<28)
  756. #define TM0S3_MAG_FILTER_SHIFT          28
  757. #define TM0S3_MIN_FILTER_MASK           (0x3<<26)
  758. #define TM0S3_MIN_FILTER_SHIFT          26
  759. #define FILTER_NEAREST          0
  760. #define FILTER_LINEAR           1
  761. #define FILTER_ANISOTROPIC      2
  762.  
  763. #define TM0S3_LOD_BIAS_SHIFT            17
  764. #define TM0S3_LOD_BIAS_MASK             (0x1ff<<17)
  765. #define TM0S3_MAX_MIP_SHIFT             9
  766. #define TM0S3_MAX_MIP_MASK              (0xff<<9)
  767. #define TM0S3_MIN_MIP_SHIFT             3
  768. #define TM0S3_MIN_MIP_MASK              (0x3f<<3)
  769. #define TM0S3_KILL_PIXEL                (1<<2)
  770. #define TM0S3_KEYED_FILTER              (1<<1)
  771. #define TM0S3_CHROMA_KEY                (1<<0)
  772.  
  773. /* _3DSTATE_MAP_TEXEL_STREAM, p188 */
  774. #define _3DSTATE_MAP_TEX_STREAM_CMD     (CMD_3D|(0x1c<<24)|(0x05<<19))
  775. #define DISABLE_TEX_STREAM_BUMP         (1<<12)
  776. #define ENABLE_TEX_STREAM_BUMP          ((1<<12)|(1<<11))
  777. #define TEX_MODIFY_UNIT_0               0
  778. #define TEX_MODIFY_UNIT_1               (1<<8)
  779. #define ENABLE_TEX_STREAM_COORD_SET     (1<<7)
  780. #define TEX_STREAM_COORD_SET(x)         ((x)<<4)
  781. #define ENABLE_TEX_STREAM_MAP_IDX       (1<<3)
  782. #define TEX_STREAM_MAP_IDX(x)           (x)
  783.  
  784. #define FLUSH_MAP_CACHE    (1<<0)
  785.  
  786. #define _3DSTATE_MAP_FILTER_CMD    (CMD_3D|(0x1c<<24)|(0x02<<19))
  787. #define FILTER_TEXMAP_INDEX(x) ((x) << 16)
  788. #define MAG_MODE_FILTER_ENABLE (1 << 5)
  789. #define MIN_MODE_FILTER_ENABLE (1 << 2)
  790. #define MAG_MAPFILTER_NEAREST (0 << 3)
  791. #define MAG_MAPFILTER_LINEAR  (1 << 3)
  792. #define MAG_MAPFILTER_ANISOTROPIC (2 << 3)
  793. #define MIN_MAPFILTER_NEAREST (0)
  794. #define MIN_MAPFILTER_LINEAR  (1)
  795. #define MIN_MAPFILTER_ANISOTROPIC (2)
  796. #define ENABLE_KEYS     (1<<15)
  797. #define DISABLE_COLOR_KEY       0
  798. #define DISABLE_CHROMA_KEY      0
  799. #define DISABLE_KILL_PIXEL      0
  800. #define ENABLE_MIP_MODE_FILTER  (1 << 9)
  801. #define MIPFILTER_NONE          0
  802. #define MIPFILTER_NEAREST       1
  803. #define MIPFILTER_LINEAR        3
  804.  
  805. #endif
  806.