Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef GEN6_RENDER_H
  2. #define GEN6_RENDER_H
  3.  
  4. #define GEN6_MASK(high, low) (((1 << ((high) - (low) + 1)) - 1) << (low))
  5.  
  6. #define GEN6_3D(Pipeline,Opcode,Subopcode) ((3 << 29) | \
  7.                                            ((Pipeline) << 27) | \
  8.                                            ((Opcode) << 24) | \
  9.                                            ((Subopcode) << 16))
  10.  
  11. #define GEN6_STATE_BASE_ADDRESS                 GEN6_3D(0, 1, 1)
  12. #define GEN6_STATE_SIP                          GEN6_3D(0, 1, 2)
  13.  
  14. #define GEN6_PIPELINE_SELECT                    GEN6_3D(1, 1, 4)
  15.  
  16. #define GEN6_MEDIA_STATE_POINTERS               GEN6_3D(2, 0, 0)
  17. #define GEN6_MEDIA_OBJECT                       GEN6_3D(2, 1, 0)
  18.  
  19. #define GEN6_3DSTATE_BINDING_TABLE_POINTERS     GEN6_3D(3, 0, 1)
  20. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_PS  (1 << 12)/* for GEN6 */
  21. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_GS  (1 << 9) /* for GEN6 */
  22. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_VS  (1 << 8) /* for GEN6 */
  23.  
  24. #define GEN6_3DSTATE_VERTEX_BUFFERS             GEN6_3D(3, 0, 8)
  25. #define GEN6_3DSTATE_VERTEX_ELEMENTS            GEN6_3D(3, 0, 9)
  26. #define GEN6_3DSTATE_INDEX_BUFFER               GEN6_3D(3, 0, 0xa)
  27. #define GEN6_3DSTATE_VF_STATISTICS              GEN6_3D(3, 0, 0xb)
  28.  
  29. #define GEN6_3DSTATE_DRAWING_RECTANGLE          GEN6_3D(3, 1, 0)
  30. #define GEN6_3DSTATE_CONSTANT_COLOR             GEN6_3D(3, 1, 1)
  31. #define GEN6_3DSTATE_SAMPLER_PALETTE_LOAD       GEN6_3D(3, 1, 2)
  32. #define GEN6_3DSTATE_CHROMA_KEY                 GEN6_3D(3, 1, 4)
  33. #define GEN6_3DSTATE_DEPTH_BUFFER               GEN6_3D(3, 1, 5)
  34. # define GEN6_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT   29
  35. # define GEN6_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT 18
  36.  
  37. #define GEN6_3DSTATE_POLY_STIPPLE_OFFSET                GEN6_3D(3, 1, 6)
  38. #define GEN6_3DSTATE_POLY_STIPPLE_PATTERN       GEN6_3D(3, 1, 7)
  39. #define GEN6_3DSTATE_LINE_STIPPLE               GEN6_3D(3, 1, 8)
  40. #define GEN6_3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP  GEN6_3D(3, 1, 9)
  41. /* These two are BLC and CTG only, not BW or CL */
  42. #define GEN6_3DSTATE_AA_LINE_PARAMS             GEN6_3D(3, 1, 0xa)
  43. #define GEN6_3DSTATE_GS_SVB_INDEX               GEN6_3D(3, 1, 0xb)
  44.  
  45. #define GEN6_3DPRIMITIVE                                GEN6_3D(3, 3, 0)
  46.  
  47. #define GEN6_3DSTATE_CLEAR_PARAMS               GEN6_3D(3, 1, 0x10)
  48. /* DW1 */
  49. # define GEN6_3DSTATE_DEPTH_CLEAR_VALID         (1 << 15)
  50.  
  51. #define GEN6_3DSTATE_SAMPLER_STATE_POINTERS     GEN6_3D(3, 0, 0x02)
  52. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS   (1 << 12)
  53. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS   (1 << 9)
  54. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS   (1 << 8)
  55.  
  56. #define GEN6_3DSTATE_URB                        GEN6_3D(3, 0, 0x05)
  57. /* DW1 */
  58. # define GEN6_3DSTATE_URB_VS_SIZE_SHIFT         16
  59. # define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT      0
  60. /* DW2 */
  61. # define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT      8
  62. # define GEN6_3DSTATE_URB_GS_SIZE_SHIFT         0
  63.  
  64. #define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS    GEN6_3D(3, 0, 0x0d)
  65. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC          (1 << 12)
  66. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF          (1 << 11)
  67. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP        (1 << 10)
  68.  
  69. #define GEN6_3DSTATE_CC_STATE_POINTERS          GEN6_3D(3, 0, 0x0e)
  70.  
  71. #define GEN6_3DSTATE_VS                         GEN6_3D(3, 0, 0x10)
  72.  
  73. #define GEN6_3DSTATE_GS                         GEN6_3D(3, 0, 0x11)
  74. /* DW4 */
  75. # define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT       0
  76.  
  77. #define GEN6_3DSTATE_CLIP                       GEN6_3D(3, 0, 0x12)
  78.  
  79. #define GEN6_3DSTATE_SF                         GEN6_3D(3, 0, 0x13)
  80. /* DW1 */
  81. # define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT              22
  82. # define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT    11
  83. # define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT    4
  84. /* DW2 */
  85. /* DW3 */
  86. # define GEN6_3DSTATE_SF_CULL_BOTH                      (0 << 29)
  87. # define GEN6_3DSTATE_SF_CULL_NONE                      (1 << 29)
  88. # define GEN6_3DSTATE_SF_CULL_FRONT                     (2 << 29)
  89. # define GEN6_3DSTATE_SF_CULL_BACK                      (3 << 29)
  90. /* DW4 */
  91. # define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT              29
  92. # define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT             27
  93. # define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT           25
  94.  
  95. #define GEN6_3DSTATE_WM                         GEN6_3D(3, 0, 0x14)
  96. /* DW2 */
  97. # define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHIFT                    27
  98. # define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT        18
  99. /* DW4 */
  100. # define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT             16
  101. /* DW5 */
  102. # define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT                      25
  103. # define GEN6_3DSTATE_WM_DISPATCH_ENABLE                        (1 << 19)
  104. # define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE                     (1 << 1)
  105. # define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE                      (1 << 0)
  106. /* DW6 */
  107. # define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT                   20
  108. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC      (1 << 15)
  109. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC    (1 << 14)
  110. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC       (1 << 13)
  111. # define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC         (1 << 12)
  112. # define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC       (1 << 11)
  113. # define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC          (1 << 10)
  114.  
  115.  
  116. #define GEN6_3DSTATE_CONSTANT_VS                GEN6_3D(3, 0, 0x15)
  117. #define GEN6_3DSTATE_CONSTANT_GS                GEN6_3D(3, 0, 0x16)
  118. #define GEN6_3DSTATE_CONSTANT_PS                GEN6_3D(3, 0, 0x17)
  119.  
  120. #define GEN6_3DSTATE_SAMPLE_MASK                GEN6_3D(3, 0, 0x18)
  121.  
  122. #define GEN6_3DSTATE_MULTISAMPLE                GEN6_3D(3, 1, 0x0d)
  123. /* DW1 */
  124. # define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER         (0 << 4)
  125. # define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT     (1 << 4)
  126. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1                  (0 << 1)
  127. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4                  (2 << 1)
  128. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8                  (3 << 1)
  129.  
  130. #define PIPELINE_SELECT_3D              0
  131. #define PIPELINE_SELECT_MEDIA           1
  132.  
  133. /* for GEN6_STATE_BASE_ADDRESS */
  134. #define BASE_ADDRESS_MODIFY             (1 << 0)
  135.  
  136. /* VERTEX_BUFFER_STATE Structure */
  137. #define VB0_BUFFER_INDEX_SHIFT  26
  138. #define VB0_VERTEXDATA                  (0 << 20)
  139. #define VB0_INSTANCEDATA                (1 << 20)
  140. #define VB0_BUFFER_PITCH_SHIFT          0
  141.  
  142. /* VERTEX_ELEMENT_STATE Structure */
  143. #define VE0_VERTEX_BUFFER_INDEX_SHIFT   26 /* for GEN6 */
  144. #define VE0_VALID                       (1 << 25) /* for GEN6 */
  145. #define VE0_FORMAT_SHIFT                16
  146. #define VE0_OFFSET_SHIFT                0
  147. #define VE1_VFCOMPONENT_0_SHIFT         28
  148. #define VE1_VFCOMPONENT_1_SHIFT         24
  149. #define VE1_VFCOMPONENT_2_SHIFT         20
  150. #define VE1_VFCOMPONENT_3_SHIFT         16
  151. #define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT    0
  152.  
  153. /* 3DPRIMITIVE bits */
  154. #define GEN6_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15)
  155. #define GEN6_3DPRIMITIVE_VERTEX_RANDOM    (1 << 15)
  156. /* Primitive types are in gen6_defines.h */
  157. #define GEN6_3DPRIMITIVE_TOPOLOGY_SHIFT   10
  158.  
  159. #define GEN6_SVG_CTL                   0x7400
  160.  
  161. #define GEN6_SVG_CTL_GS_BA             (0 << 8)
  162. #define GEN6_SVG_CTL_SS_BA             (1 << 8)
  163. #define GEN6_SVG_CTL_IO_BA             (2 << 8)
  164. #define GEN6_SVG_CTL_GS_AUB            (3 << 8)
  165. #define GEN6_SVG_CTL_IO_AUB            (4 << 8)
  166. #define GEN6_SVG_CTL_SIP                       (5 << 8)
  167.  
  168. #define GEN6_SVG_RDATA                 0x7404
  169. #define GEN6_SVG_WORK_CTL              0x7408
  170.  
  171. #define GEN6_VF_CTL                    0x7500
  172.  
  173. #define GEN6_VF_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  174. #define GEN6_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID           (0 << 8)
  175. #define GEN6_VF_CTL_SNAPSHOT_MUX_SELECT_VF_DEBUG           (1 << 8)
  176. #define GEN6_VF_CTL_SNAPSHOT_TYPE_VERTEX_SEQUENCE   (0 << 4)
  177. #define GEN6_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX     (1 << 4)
  178. #define GEN6_VF_CTL_SKIP_INITIAL_PRIMITIVES        (1 << 3)
  179. #define GEN6_VF_CTL_MAX_PRIMITIVES_LIMIT_ENABLE    (1 << 2)
  180. #define GEN6_VF_CTL_VERTEX_RANGE_LIMIT_ENABLE      (1 << 1)
  181. #define GEN6_VF_CTL_SNAPSHOT_ENABLE                (1 << 0)
  182.  
  183. #define GEN6_VF_STRG_VAL                       0x7504
  184. #define GEN6_VF_STR_VL_OVR             0x7508
  185. #define GEN6_VF_VC_OVR                 0x750c
  186. #define GEN6_VF_STR_PSKIP              0x7510
  187. #define GEN6_VF_MAX_PRIM                       0x7514
  188. #define GEN6_VF_RDATA                  0x7518
  189.  
  190. #define GEN6_VS_CTL                    0x7600
  191. #define GEN6_VS_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  192. #define GEN6_VS_CTL_SNAPSHOT_MUX_VERTEX_0          (0 << 8)
  193. #define GEN6_VS_CTL_SNAPSHOT_MUX_VERTEX_1          (1 << 8)
  194. #define GEN6_VS_CTL_SNAPSHOT_MUX_VALID_COUNT       (2 << 8)
  195. #define GEN6_VS_CTL_SNAPSHOT_MUX_VS_KERNEL_POINTER  (3 << 8)
  196. #define GEN6_VS_CTL_SNAPSHOT_ALL_THREADS                   (1 << 2)
  197. #define GEN6_VS_CTL_THREAD_SNAPSHOT_ENABLE         (1 << 1)
  198. #define GEN6_VS_CTL_SNAPSHOT_ENABLE                (1 << 0)
  199.  
  200. #define GEN6_VS_STRG_VAL                       0x7604
  201. #define GEN6_VS_RDATA                  0x7608
  202.  
  203. #define GEN6_SF_CTL                    0x7b00
  204. #define GEN6_SF_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  205. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_0_FF_ID    (0 << 8)
  206. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_0_REL_COUNT (1 << 8)
  207. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_1_FF_ID    (2 << 8)
  208. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_1_REL_COUNT (3 << 8)
  209. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_2_FF_ID    (4 << 8)
  210. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_2_REL_COUNT (5 << 8)
  211. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT      (6 << 8)
  212. #define GEN6_SF_CTL_SNAPSHOT_MUX_SF_KERNEL_POINTER  (7 << 8)
  213. #define GEN6_SF_CTL_MIN_MAX_PRIMITIVE_RANGE_ENABLE  (1 << 4)
  214. #define GEN6_SF_CTL_DEBUG_CLIP_RECTANGLE_ENABLE    (1 << 3)
  215. #define GEN6_SF_CTL_SNAPSHOT_ALL_THREADS                   (1 << 2)
  216. #define GEN6_SF_CTL_THREAD_SNAPSHOT_ENABLE         (1 << 1)
  217. #define GEN6_SF_CTL_SNAPSHOT_ENABLE                (1 << 0)
  218.  
  219. #define GEN6_SF_STRG_VAL                       0x7b04
  220. #define GEN6_SF_RDATA                  0x7b18
  221.  
  222. #define GEN6_WIZ_CTL                   0x7c00
  223. #define GEN6_WIZ_CTL_SNAPSHOT_COMPLETE             (1 << 31)
  224. #define GEN6_WIZ_CTL_SUBSPAN_INSTANCE_SHIFT        16
  225. #define GEN6_WIZ_CTL_SNAPSHOT_MUX_WIZ_KERNEL_POINTER   (0 << 8)
  226. #define GEN6_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE     (1 << 8)
  227. #define GEN6_WIZ_CTL_SNAPSHOT_MUX_PRIMITIVE_SEQUENCE   (2 << 8)
  228. #define GEN6_WIZ_CTL_SINGLE_SUBSPAN_DISPATCH          (1 << 6)
  229. #define GEN6_WIZ_CTL_IGNORE_COLOR_SCOREBOARD_STALLS    (1 << 5)
  230. #define GEN6_WIZ_CTL_ENABLE_SUBSPAN_INSTANCE_COMPARE   (1 << 4)
  231. #define GEN6_WIZ_CTL_USE_UPSTREAM_SNAPSHOT_FLAG       (1 << 3)
  232. #define GEN6_WIZ_CTL_SNAPSHOT_ALL_THREADS             (1 << 2)
  233. #define GEN6_WIZ_CTL_THREAD_SNAPSHOT_ENABLE           (1 << 1)
  234. #define GEN6_WIZ_CTL_SNAPSHOT_ENABLE                  (1 << 0)
  235.  
  236. #define GEN6_WIZ_STRG_VAL                             0x7c04
  237. #define GEN6_WIZ_RDATA                                0x7c18
  238.  
  239. #define GEN6_TS_CTL                    0x7e00
  240. #define GEN6_TS_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  241. #define GEN6_TS_CTL_SNAPSHOT_MESSAGE_ERROR         (0 << 8)
  242. #define GEN6_TS_CTL_SNAPSHOT_INTERFACE_DESCRIPTOR   (3 << 8)
  243. #define GEN6_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS     (1 << 2)
  244. #define GEN6_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS      (1 << 1)
  245. #define GEN6_TS_CTL_SNAPSHOT_ENABLE                (1 << 0)
  246.  
  247. #define GEN6_TS_STRG_VAL                       0x7e04
  248. #define GEN6_TS_RDATA                  0x7e08
  249.  
  250. #define GEN6_TD_CTL                    0x8000
  251. #define GEN6_TD_CTL_MUX_SHIFT          8
  252. #define GEN6_TD_CTL_EXTERNAL_HALT_R0_DEBUG_MATCH           (1 << 7)
  253. #define GEN6_TD_CTL_FORCE_EXTERNAL_HALT            (1 << 6)
  254. #define GEN6_TD_CTL_EXCEPTION_MASK_OVERRIDE        (1 << 5)
  255. #define GEN6_TD_CTL_FORCE_THREAD_BREAKPOINT_ENABLE  (1 << 4)
  256. #define GEN6_TD_CTL_BREAKPOINT_ENABLE              (1 << 2)
  257. #define GEN6_TD_CTL2                   0x8004
  258. #define GEN6_TD_CTL2_ILLEGAL_OPCODE_EXCEPTION_OVERRIDE (1 << 28)
  259. #define GEN6_TD_CTL2_MASKSTACK_EXCEPTION_OVERRIDE      (1 << 26)
  260. #define GEN6_TD_CTL2_SOFTWARE_EXCEPTION_OVERRIDE              (1 << 25)
  261. #define GEN6_TD_CTL2_ACTIVE_THREAD_LIMIT_SHIFT        16
  262. #define GEN6_TD_CTL2_ACTIVE_THREAD_LIMIT_ENABLE       (1 << 8)
  263. #define GEN6_TD_CTL2_THREAD_SPAWNER_EXECUTION_MASK_ENABLE (1 << 7)
  264. #define GEN6_TD_CTL2_WIZ_EXECUTION_MASK_ENABLE        (1 << 6)
  265. #define GEN6_TD_CTL2_SF_EXECUTION_MASK_ENABLE         (1 << 5)
  266. #define GEN6_TD_CTL2_CLIPPER_EXECUTION_MASK_ENABLE     (1 << 4)
  267. #define GEN6_TD_CTL2_GS_EXECUTION_MASK_ENABLE         (1 << 3)
  268. #define GEN6_TD_CTL2_VS_EXECUTION_MASK_ENABLE         (1 << 0)
  269. #define GEN6_TD_VF_VS_EMSK             0x8008
  270. #define GEN6_TD_GS_EMSK                0x800c
  271. #define GEN6_TD_CLIP_EMSK              0x8010
  272. #define GEN6_TD_SF_EMSK                0x8014
  273. #define GEN6_TD_WIZ_EMSK                       0x8018
  274. #define GEN6_TD_0_6_EHTRG_VAL          0x801c
  275. #define GEN6_TD_0_7_EHTRG_VAL          0x8020
  276. #define GEN6_TD_0_6_EHTRG_MSK           0x8024
  277. #define GEN6_TD_0_7_EHTRG_MSK          0x8028
  278. #define GEN6_TD_RDATA                  0x802c
  279. #define GEN6_TD_TS_EMSK                0x8030
  280.  
  281. #define GEN6_EU_CTL                    0x8800
  282. #define GEN6_EU_CTL_SELECT_SHIFT               16
  283. #define GEN6_EU_CTL_DATA_MUX_SHIFT      8
  284. #define GEN6_EU_ATT_0                  0x8810
  285. #define GEN6_EU_ATT_1                  0x8814
  286. #define GEN6_EU_ATT_DATA_0             0x8820
  287. #define GEN6_EU_ATT_DATA_1             0x8824
  288. #define GEN6_EU_ATT_CLR_0              0x8830
  289. #define GEN6_EU_ATT_CLR_1              0x8834
  290. #define GEN6_EU_RDATA                  0x8840
  291.  
  292. #define GEN6_3D(Pipeline,Opcode,Subopcode) ((3 << 29) | \
  293.                                            ((Pipeline) << 27) | \
  294.                                            ((Opcode) << 24) | \
  295.                                            ((Subopcode) << 16))
  296.  
  297. #define GEN6_STATE_BASE_ADDRESS                 GEN6_3D(0, 1, 1)
  298. #define GEN6_STATE_SIP                          GEN6_3D(0, 1, 2)
  299.  
  300. #define GEN6_PIPELINE_SELECT                    GEN6_3D(1, 1, 4)
  301.  
  302. #define GEN6_MEDIA_STATE_POINTERS               GEN6_3D(2, 0, 0)
  303. #define GEN6_MEDIA_OBJECT                       GEN6_3D(2, 1, 0)
  304.  
  305. #define GEN6_3DSTATE_BINDING_TABLE_POINTERS     GEN6_3D(3, 0, 1)
  306. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_PS  (1 << 12)/* for GEN6 */
  307. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_GS  (1 << 9) /* for GEN6 */
  308. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_VS  (1 << 8) /* for GEN6 */
  309.  
  310. #define GEN6_3DSTATE_VERTEX_BUFFERS             GEN6_3D(3, 0, 8)
  311. #define GEN6_3DSTATE_VERTEX_ELEMENTS            GEN6_3D(3, 0, 9)
  312. #define GEN6_3DSTATE_INDEX_BUFFER               GEN6_3D(3, 0, 0xa)
  313. #define GEN6_3DSTATE_VF_STATISTICS              GEN6_3D(3, 0, 0xb)
  314.  
  315. #define GEN6_3DSTATE_DRAWING_RECTANGLE          GEN6_3D(3, 1, 0)
  316. #define GEN6_3DSTATE_CONSTANT_COLOR             GEN6_3D(3, 1, 1)
  317. #define GEN6_3DSTATE_SAMPLER_PALETTE_LOAD       GEN6_3D(3, 1, 2)
  318. #define GEN6_3DSTATE_CHROMA_KEY                 GEN6_3D(3, 1, 4)
  319. #define GEN6_3DSTATE_DEPTH_BUFFER               GEN6_3D(3, 1, 5)
  320. # define GEN6_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT   29
  321. # define GEN6_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT 18
  322.  
  323. #define GEN6_3DSTATE_POLY_STIPPLE_OFFSET                GEN6_3D(3, 1, 6)
  324. #define GEN6_3DSTATE_POLY_STIPPLE_PATTERN       GEN6_3D(3, 1, 7)
  325. #define GEN6_3DSTATE_LINE_STIPPLE               GEN6_3D(3, 1, 8)
  326. #define GEN6_3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP  GEN6_3D(3, 1, 9)
  327. /* These two are BLC and CTG only, not BW or CL */
  328. #define GEN6_3DSTATE_AA_LINE_PARAMS             GEN6_3D(3, 1, 0xa)
  329. #define GEN6_3DSTATE_GS_SVB_INDEX               GEN6_3D(3, 1, 0xb)
  330.  
  331. #define GEN6_3DPRIMITIVE                                GEN6_3D(3, 3, 0)
  332.  
  333. #define GEN6_3DSTATE_CLEAR_PARAMS               GEN6_3D(3, 1, 0x10)
  334. /* DW1 */
  335. # define GEN6_3DSTATE_DEPTH_CLEAR_VALID         (1 << 15)
  336.  
  337. /* for GEN6+ */
  338. #define GEN6_3DSTATE_SAMPLER_STATE_POINTERS     GEN6_3D(3, 0, 0x02)
  339. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS   (1 << 12)
  340. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS   (1 << 9)
  341. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS   (1 << 8)
  342.  
  343. #define GEN6_3DSTATE_URB                        GEN6_3D(3, 0, 0x05)
  344. /* DW1 */
  345. # define GEN6_3DSTATE_URB_VS_SIZE_SHIFT         16
  346. # define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT      0
  347. /* DW2 */
  348. # define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT      8
  349. # define GEN6_3DSTATE_URB_GS_SIZE_SHIFT         0
  350.  
  351. #define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS    GEN6_3D(3, 0, 0x0d)
  352. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC          (1 << 12)
  353. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF          (1 << 11)
  354. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP        (1 << 10)
  355.  
  356. #define GEN6_3DSTATE_CC_STATE_POINTERS          GEN6_3D(3, 0, 0x0e)
  357.  
  358. #define GEN6_3DSTATE_VS                         GEN6_3D(3, 0, 0x10)
  359.  
  360. #define GEN6_3DSTATE_GS                         GEN6_3D(3, 0, 0x11)
  361. /* DW4 */
  362. # define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT       0
  363.  
  364. #define GEN6_3DSTATE_CLIP                       GEN6_3D(3, 0, 0x12)
  365.  
  366. #define GEN6_3DSTATE_SF                         GEN6_3D(3, 0, 0x13)
  367. /* DW1 */
  368. # define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT              22
  369. # define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT    11
  370. # define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT    4
  371. /* DW2 */
  372. /* DW3 */
  373. # define GEN6_3DSTATE_SF_CULL_BOTH                      (0 << 29)
  374. # define GEN6_3DSTATE_SF_CULL_NONE                      (1 << 29)
  375. # define GEN6_3DSTATE_SF_CULL_FRONT                     (2 << 29)
  376. # define GEN6_3DSTATE_SF_CULL_BACK                      (3 << 29)
  377. /* DW4 */
  378. # define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT              29
  379. # define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT             27
  380. # define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT           25
  381.  
  382.  
  383. #define GEN6_3DSTATE_WM                         GEN6_3D(3, 0, 0x14)
  384. /* DW2 */
  385. # define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF                    27
  386. # define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT        18
  387. /* DW4 */
  388. # define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT             16
  389. /* DW5 */
  390. # define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT                      25
  391. # define GEN6_3DSTATE_WM_DISPATCH_ENABLE                        (1 << 19)
  392. # define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE                     (1 << 1)
  393. # define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE                      (1 << 0)
  394. /* DW6 */
  395. # define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT                   20
  396. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC      (1 << 15)
  397. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC    (1 << 14)
  398. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC       (1 << 13)
  399. # define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC         (1 << 12)
  400. # define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC       (1 << 11)
  401. # define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC          (1 << 10)
  402.  
  403.  
  404. #define GEN6_3DSTATE_CONSTANT_VS                GEN6_3D(3, 0, 0x15)
  405. #define GEN6_3DSTATE_CONSTANT_GS                GEN6_3D(3, 0, 0x16)
  406. #define GEN6_3DSTATE_CONSTANT_PS                GEN6_3D(3, 0, 0x17)
  407.  
  408. #define GEN6_3DSTATE_SAMPLE_MASK                GEN6_3D(3, 0, 0x18)
  409.  
  410. #define GEN6_3DSTATE_MULTISAMPLE                GEN6_3D(3, 1, 0x0d)
  411. /* DW1 */
  412. # define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER         (0 << 4)
  413. # define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT     (1 << 4)
  414. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1                  (0 << 1)
  415. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4                  (2 << 1)
  416. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8                  (3 << 1)
  417.  
  418. #define PIPELINE_SELECT_3D              0
  419. #define PIPELINE_SELECT_MEDIA           1
  420.  
  421. #define UF0_CS_REALLOC                  (1 << 13)
  422. #define UF0_VFE_REALLOC                 (1 << 12)
  423. #define UF0_SF_REALLOC                  (1 << 11)
  424. #define UF0_CLIP_REALLOC                (1 << 10)
  425. #define UF0_GS_REALLOC                  (1 << 9)
  426. #define UF0_VS_REALLOC                  (1 << 8)
  427. #define UF1_CLIP_FENCE_SHIFT            20
  428. #define UF1_GS_FENCE_SHIFT              10
  429. #define UF1_VS_FENCE_SHIFT              0
  430. #define UF2_CS_FENCE_SHIFT              20
  431. #define UF2_VFE_FENCE_SHIFT             10
  432. #define UF2_SF_FENCE_SHIFT              0
  433.  
  434. /* for GEN6_STATE_BASE_ADDRESS */
  435. #define BASE_ADDRESS_MODIFY             (1 << 0)
  436.  
  437. /* for GEN6_3DSTATE_PIPELINED_POINTERS */
  438. #define GEN6_GS_DISABLE                0
  439. #define GEN6_GS_ENABLE                 1
  440. #define GEN6_CLIP_DISABLE              0
  441. #define GEN6_CLIP_ENABLE                       1
  442.  
  443. /* for GEN6_PIPE_CONTROL */
  444. #define GEN6_PIPE_CONTROL               GEN6_3D(3, 2, 0)
  445. #define GEN6_PIPE_CONTROL_CS_STALL      (1 << 20)
  446. #define GEN6_PIPE_CONTROL_NOWRITE       (0 << 14)
  447. #define GEN6_PIPE_CONTROL_WRITE_QWORD   (1 << 14)
  448. #define GEN6_PIPE_CONTROL_WRITE_DEPTH   (2 << 14)
  449. #define GEN6_PIPE_CONTROL_WRITE_TIME    (3 << 14)
  450. #define GEN6_PIPE_CONTROL_DEPTH_STALL   (1 << 13)
  451. #define GEN6_PIPE_CONTROL_WC_FLUSH      (1 << 12)
  452. #define GEN6_PIPE_CONTROL_IS_FLUSH      (1 << 11)
  453. #define GEN6_PIPE_CONTROL_TC_FLUSH      (1 << 10)
  454. #define GEN6_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8)
  455. #define GEN6_PIPE_CONTROL_GLOBAL_GTT    (1 << 2)
  456. #define GEN6_PIPE_CONTROL_LOCAL_PGTT    (0 << 2)
  457. #define GEN6_PIPE_CONTROL_STALL_AT_SCOREBOARD   (1 << 1)
  458. #define GEN6_PIPE_CONTROL_DEPTH_CACHE_FLUSH     (1 << 0)
  459.  
  460. /* 3DPRIMITIVE bits */
  461. #define GEN6_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15)
  462. #define GEN6_3DPRIMITIVE_VERTEX_RANDOM    (1 << 15)
  463. /* Primitive types are in gen6_defines.h */
  464. #define GEN6_3DPRIMITIVE_TOPOLOGY_SHIFT   10
  465.  
  466. #define GEN6_SVG_CTL                   0x7400
  467.  
  468. #define GEN6_SVG_CTL_GS_BA             (0 << 8)
  469. #define GEN6_SVG_CTL_SS_BA             (1 << 8)
  470. #define GEN6_SVG_CTL_IO_BA             (2 << 8)
  471. #define GEN6_SVG_CTL_GS_AUB            (3 << 8)
  472. #define GEN6_SVG_CTL_IO_AUB            (4 << 8)
  473. #define GEN6_SVG_CTL_SIP                       (5 << 8)
  474.  
  475. #define GEN6_SVG_RDATA                 0x7404
  476. #define GEN6_SVG_WORK_CTL              0x7408
  477.  
  478. #define GEN6_VF_CTL                    0x7500
  479.  
  480. #define GEN6_VF_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  481. #define GEN6_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID           (0 << 8)
  482. #define GEN6_VF_CTL_SNAPSHOT_MUX_SELECT_VF_DEBUG           (1 << 8)
  483. #define GEN6_VF_CTL_SNAPSHOT_TYPE_VERTEX_SEQUENCE   (0 << 4)
  484. #define GEN6_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX     (1 << 4)
  485. #define GEN6_VF_CTL_SKIP_INITIAL_PRIMITIVES        (1 << 3)
  486. #define GEN6_VF_CTL_MAX_PRIMITIVES_LIMIT_ENABLE    (1 << 2)
  487. #define GEN6_VF_CTL_VERTEX_RANGE_LIMIT_ENABLE      (1 << 1)
  488. #define GEN6_VF_CTL_SNAPSHOT_ENABLE                (1 << 0)
  489.  
  490. #define GEN6_VF_STRG_VAL                       0x7504
  491. #define GEN6_VF_STR_VL_OVR             0x7508
  492. #define GEN6_VF_VC_OVR                 0x750c
  493. #define GEN6_VF_STR_PSKIP              0x7510
  494. #define GEN6_VF_MAX_PRIM                       0x7514
  495. #define GEN6_VF_RDATA                  0x7518
  496.  
  497. #define GEN6_VS_CTL                    0x7600
  498. #define GEN6_VS_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  499. #define GEN6_VS_CTL_SNAPSHOT_MUX_VERTEX_0          (0 << 8)
  500. #define GEN6_VS_CTL_SNAPSHOT_MUX_VERTEX_1          (1 << 8)
  501. #define GEN6_VS_CTL_SNAPSHOT_MUX_VALID_COUNT       (2 << 8)
  502. #define GEN6_VS_CTL_SNAPSHOT_MUX_VS_KERNEL_POINTER  (3 << 8)
  503. #define GEN6_VS_CTL_SNAPSHOT_ALL_THREADS                   (1 << 2)
  504. #define GEN6_VS_CTL_THREAD_SNAPSHOT_ENABLE         (1 << 1)
  505. #define GEN6_VS_CTL_SNAPSHOT_ENABLE                (1 << 0)
  506.  
  507. #define GEN6_VS_STRG_VAL                       0x7604
  508. #define GEN6_VS_RDATA                  0x7608
  509.  
  510. #define GEN6_SF_CTL                    0x7b00
  511. #define GEN6_SF_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  512. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_0_FF_ID    (0 << 8)
  513. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_0_REL_COUNT (1 << 8)
  514. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_1_FF_ID    (2 << 8)
  515. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_1_REL_COUNT (3 << 8)
  516. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_2_FF_ID    (4 << 8)
  517. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_2_REL_COUNT (5 << 8)
  518. #define GEN6_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT      (6 << 8)
  519. #define GEN6_SF_CTL_SNAPSHOT_MUX_SF_KERNEL_POINTER  (7 << 8)
  520. #define GEN6_SF_CTL_MIN_MAX_PRIMITIVE_RANGE_ENABLE  (1 << 4)
  521. #define GEN6_SF_CTL_DEBUG_CLIP_RECTANGLE_ENABLE    (1 << 3)
  522. #define GEN6_SF_CTL_SNAPSHOT_ALL_THREADS                   (1 << 2)
  523. #define GEN6_SF_CTL_THREAD_SNAPSHOT_ENABLE         (1 << 1)
  524. #define GEN6_SF_CTL_SNAPSHOT_ENABLE                (1 << 0)
  525.  
  526. #define GEN6_SF_STRG_VAL                       0x7b04
  527. #define GEN6_SF_RDATA                  0x7b18
  528.  
  529. #define GEN6_WIZ_CTL                   0x7c00
  530. #define GEN6_WIZ_CTL_SNAPSHOT_COMPLETE             (1 << 31)
  531. #define GEN6_WIZ_CTL_SUBSPAN_INSTANCE_SHIFT        16
  532. #define GEN6_WIZ_CTL_SNAPSHOT_MUX_WIZ_KERNEL_POINTER   (0 << 8)
  533. #define GEN6_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE     (1 << 8)
  534. #define GEN6_WIZ_CTL_SNAPSHOT_MUX_PRIMITIVE_SEQUENCE   (2 << 8)
  535. #define GEN6_WIZ_CTL_SINGLE_SUBSPAN_DISPATCH          (1 << 6)
  536. #define GEN6_WIZ_CTL_IGNORE_COLOR_SCOREBOARD_STALLS    (1 << 5)
  537. #define GEN6_WIZ_CTL_ENABLE_SUBSPAN_INSTANCE_COMPARE   (1 << 4)
  538. #define GEN6_WIZ_CTL_USE_UPSTREAM_SNAPSHOT_FLAG       (1 << 3)
  539. #define GEN6_WIZ_CTL_SNAPSHOT_ALL_THREADS             (1 << 2)
  540. #define GEN6_WIZ_CTL_THREAD_SNAPSHOT_ENABLE           (1 << 1)
  541. #define GEN6_WIZ_CTL_SNAPSHOT_ENABLE                  (1 << 0)
  542.  
  543. #define GEN6_WIZ_STRG_VAL                             0x7c04
  544. #define GEN6_WIZ_RDATA                                0x7c18
  545.  
  546. #define GEN6_TS_CTL                    0x7e00
  547. #define GEN6_TS_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  548. #define GEN6_TS_CTL_SNAPSHOT_MESSAGE_ERROR         (0 << 8)
  549. #define GEN6_TS_CTL_SNAPSHOT_INTERFACE_DESCRIPTOR   (3 << 8)
  550. #define GEN6_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS     (1 << 2)
  551. #define GEN6_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS      (1 << 1)
  552. #define GEN6_TS_CTL_SNAPSHOT_ENABLE                (1 << 0)
  553.  
  554. #define GEN6_TS_STRG_VAL                       0x7e04
  555. #define GEN6_TS_RDATA                  0x7e08
  556.  
  557. #define GEN6_TD_CTL                    0x8000
  558. #define GEN6_TD_CTL_MUX_SHIFT          8
  559. #define GEN6_TD_CTL_EXTERNAL_HALT_R0_DEBUG_MATCH           (1 << 7)
  560. #define GEN6_TD_CTL_FORCE_EXTERNAL_HALT            (1 << 6)
  561. #define GEN6_TD_CTL_EXCEPTION_MASK_OVERRIDE        (1 << 5)
  562. #define GEN6_TD_CTL_FORCE_THREAD_BREAKPOINT_ENABLE  (1 << 4)
  563. #define GEN6_TD_CTL_BREAKPOINT_ENABLE              (1 << 2)
  564. #define GEN6_TD_CTL2                   0x8004
  565. #define GEN6_TD_CTL2_ILLEGAL_OPCODE_EXCEPTION_OVERRIDE (1 << 28)
  566. #define GEN6_TD_CTL2_MASKSTACK_EXCEPTION_OVERRIDE      (1 << 26)
  567. #define GEN6_TD_CTL2_SOFTWARE_EXCEPTION_OVERRIDE              (1 << 25)
  568. #define GEN6_TD_CTL2_ACTIVE_THREAD_LIMIT_SHIFT        16
  569. #define GEN6_TD_CTL2_ACTIVE_THREAD_LIMIT_ENABLE       (1 << 8)
  570. #define GEN6_TD_CTL2_THREAD_SPAWNER_EXECUTION_MASK_ENABLE (1 << 7)
  571. #define GEN6_TD_CTL2_WIZ_EXECUTION_MASK_ENABLE        (1 << 6)
  572. #define GEN6_TD_CTL2_SF_EXECUTION_MASK_ENABLE         (1 << 5)
  573. #define GEN6_TD_CTL2_CLIPPER_EXECUTION_MASK_ENABLE     (1 << 4)
  574. #define GEN6_TD_CTL2_GS_EXECUTION_MASK_ENABLE         (1 << 3)
  575. #define GEN6_TD_CTL2_VS_EXECUTION_MASK_ENABLE         (1 << 0)
  576. #define GEN6_TD_VF_VS_EMSK             0x8008
  577. #define GEN6_TD_GS_EMSK                0x800c
  578. #define GEN6_TD_CLIP_EMSK              0x8010
  579. #define GEN6_TD_SF_EMSK                0x8014
  580. #define GEN6_TD_WIZ_EMSK                       0x8018
  581. #define GEN6_TD_0_6_EHTRG_VAL          0x801c
  582. #define GEN6_TD_0_7_EHTRG_VAL          0x8020
  583. #define GEN6_TD_0_6_EHTRG_MSK           0x8024
  584. #define GEN6_TD_0_7_EHTRG_MSK          0x8028
  585. #define GEN6_TD_RDATA                  0x802c
  586. #define GEN6_TD_TS_EMSK                0x8030
  587.  
  588. #define GEN6_EU_CTL                    0x8800
  589. #define GEN6_EU_CTL_SELECT_SHIFT               16
  590. #define GEN6_EU_CTL_DATA_MUX_SHIFT      8
  591. #define GEN6_EU_ATT_0                  0x8810
  592. #define GEN6_EU_ATT_1                  0x8814
  593. #define GEN6_EU_ATT_DATA_0             0x8820
  594. #define GEN6_EU_ATT_DATA_1             0x8824
  595. #define GEN6_EU_ATT_CLR_0              0x8830
  596. #define GEN6_EU_ATT_CLR_1              0x8834
  597. #define GEN6_EU_RDATA                  0x8840
  598.  
  599. /* 3D state:
  600.  */
  601. #define _3DOP_3DSTATE_PIPELINED       0x0
  602. #define _3DOP_3DSTATE_NONPIPELINED    0x1
  603. #define _3DOP_3DCONTROL               0x2
  604. #define _3DOP_3DPRIMITIVE             0x3
  605.  
  606. #define _3DSTATE_PIPELINED_POINTERS       0x00
  607. #define _3DSTATE_BINDING_TABLE_POINTERS   0x01
  608. #define _3DSTATE_VERTEX_BUFFERS           0x08
  609. #define _3DSTATE_VERTEX_ELEMENTS          0x09
  610. #define _3DSTATE_INDEX_BUFFER             0x0A
  611. #define _3DSTATE_VF_STATISTICS            0x0B
  612. #define _3DSTATE_DRAWING_RECTANGLE            0x00
  613. #define _3DSTATE_CONSTANT_COLOR               0x01
  614. #define _3DSTATE_SAMPLER_PALETTE_LOAD         0x02
  615. #define _3DSTATE_CHROMA_KEY                   0x04
  616. #define _3DSTATE_DEPTH_BUFFER                 0x05
  617. #define _3DSTATE_POLY_STIPPLE_OFFSET          0x06
  618. #define _3DSTATE_POLY_STIPPLE_PATTERN         0x07
  619. #define _3DSTATE_LINE_STIPPLE                 0x08
  620. #define _3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP    0x09
  621. #define _3DCONTROL    0x00
  622. #define _3DPRIMITIVE  0x00
  623.  
  624. #define _3DPRIM_POINTLIST         0x01
  625. #define _3DPRIM_LINELIST          0x02
  626. #define _3DPRIM_LINESTRIP         0x03
  627. #define _3DPRIM_TRILIST           0x04
  628. #define _3DPRIM_TRISTRIP          0x05
  629. #define _3DPRIM_TRIFAN            0x06
  630. #define _3DPRIM_QUADLIST          0x07
  631. #define _3DPRIM_QUADSTRIP         0x08
  632. #define _3DPRIM_LINELIST_ADJ      0x09
  633. #define _3DPRIM_LINESTRIP_ADJ     0x0A
  634. #define _3DPRIM_TRILIST_ADJ       0x0B
  635. #define _3DPRIM_TRISTRIP_ADJ      0x0C
  636. #define _3DPRIM_TRISTRIP_REVERSE  0x0D
  637. #define _3DPRIM_POLYGON           0x0E
  638. #define _3DPRIM_RECTLIST          0x0F
  639. #define _3DPRIM_LINELOOP          0x10
  640. #define _3DPRIM_POINTLIST_BF      0x11
  641. #define _3DPRIM_LINESTRIP_CONT    0x12
  642. #define _3DPRIM_LINESTRIP_BF      0x13
  643. #define _3DPRIM_LINESTRIP_CONT_BF 0x14
  644. #define _3DPRIM_TRIFAN_NOSTIPPLE  0x15
  645.  
  646. #define _3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL 0
  647. #define _3DPRIM_VERTEXBUFFER_ACCESS_RANDOM     1
  648.  
  649. #define GEN6_ANISORATIO_2     0
  650. #define GEN6_ANISORATIO_4     1
  651. #define GEN6_ANISORATIO_6     2
  652. #define GEN6_ANISORATIO_8     3
  653. #define GEN6_ANISORATIO_10    4
  654. #define GEN6_ANISORATIO_12    5
  655. #define GEN6_ANISORATIO_14    6
  656. #define GEN6_ANISORATIO_16    7
  657.  
  658. #define GEN6_BLENDFACTOR_ONE                 0x1
  659. #define GEN6_BLENDFACTOR_SRC_COLOR           0x2
  660. #define GEN6_BLENDFACTOR_SRC_ALPHA           0x3
  661. #define GEN6_BLENDFACTOR_DST_ALPHA           0x4
  662. #define GEN6_BLENDFACTOR_DST_COLOR           0x5
  663. #define GEN6_BLENDFACTOR_SRC_ALPHA_SATURATE  0x6
  664. #define GEN6_BLENDFACTOR_CONST_COLOR         0x7
  665. #define GEN6_BLENDFACTOR_CONST_ALPHA         0x8
  666. #define GEN6_BLENDFACTOR_SRC1_COLOR          0x9
  667. #define GEN6_BLENDFACTOR_SRC1_ALPHA          0x0A
  668. #define GEN6_BLENDFACTOR_ZERO                0x11
  669. #define GEN6_BLENDFACTOR_INV_SRC_COLOR       0x12
  670. #define GEN6_BLENDFACTOR_INV_SRC_ALPHA       0x13
  671. #define GEN6_BLENDFACTOR_INV_DST_ALPHA       0x14
  672. #define GEN6_BLENDFACTOR_INV_DST_COLOR       0x15
  673. #define GEN6_BLENDFACTOR_INV_CONST_COLOR     0x17
  674. #define GEN6_BLENDFACTOR_INV_CONST_ALPHA     0x18
  675. #define GEN6_BLENDFACTOR_INV_SRC1_COLOR      0x19
  676. #define GEN6_BLENDFACTOR_INV_SRC1_ALPHA      0x1A
  677.  
  678. #define GEN6_BLENDFUNCTION_ADD               0
  679. #define GEN6_BLENDFUNCTION_SUBTRACT          1
  680. #define GEN6_BLENDFUNCTION_REVERSE_SUBTRACT  2
  681. #define GEN6_BLENDFUNCTION_MIN               3
  682. #define GEN6_BLENDFUNCTION_MAX               4
  683.  
  684. #define GEN6_ALPHATEST_FORMAT_UNORM8         0
  685. #define GEN6_ALPHATEST_FORMAT_FLOAT32        1
  686.  
  687. #define GEN6_CHROMAKEY_KILL_ON_ANY_MATCH  0
  688. #define GEN6_CHROMAKEY_REPLACE_BLACK      1
  689.  
  690. #define GEN6_CLIP_API_OGL     0
  691. #define GEN6_CLIP_API_DX      1
  692.  
  693. #define GEN6_CLIPMODE_NORMAL              0
  694. #define GEN6_CLIPMODE_CLIP_ALL            1
  695. #define GEN6_CLIPMODE_CLIP_NON_REJECTED   2
  696. #define GEN6_CLIPMODE_REJECT_ALL          3
  697. #define GEN6_CLIPMODE_ACCEPT_ALL          4
  698.  
  699. #define GEN6_CLIP_NDCSPACE     0
  700. #define GEN6_CLIP_SCREENSPACE  1
  701.  
  702. #define GEN6_COMPAREFUNCTION_ALWAYS       0
  703. #define GEN6_COMPAREFUNCTION_NEVER        1
  704. #define GEN6_COMPAREFUNCTION_LESS         2
  705. #define GEN6_COMPAREFUNCTION_EQUAL        3
  706. #define GEN6_COMPAREFUNCTION_LEQUAL       4
  707. #define GEN6_COMPAREFUNCTION_GREATER      5
  708. #define GEN6_COMPAREFUNCTION_NOTEQUAL     6
  709. #define GEN6_COMPAREFUNCTION_GEQUAL       7
  710.  
  711. #define GEN6_COVERAGE_PIXELS_HALF     0
  712. #define GEN6_COVERAGE_PIXELS_1        1
  713. #define GEN6_COVERAGE_PIXELS_2        2
  714. #define GEN6_COVERAGE_PIXELS_4        3
  715.  
  716. #define GEN6_CULLMODE_BOTH        0
  717. #define GEN6_CULLMODE_NONE        1
  718. #define GEN6_CULLMODE_FRONT       2
  719. #define GEN6_CULLMODE_BACK        3
  720.  
  721. #define GEN6_DEFAULTCOLOR_R8G8B8A8_UNORM      0
  722. #define GEN6_DEFAULTCOLOR_R32G32B32A32_FLOAT  1
  723.  
  724. #define GEN6_DEPTHFORMAT_D32_FLOAT_S8X24_UINT     0
  725. #define GEN6_DEPTHFORMAT_D32_FLOAT                1
  726. #define GEN6_DEPTHFORMAT_D24_UNORM_S8_UINT        2
  727. #define GEN6_DEPTHFORMAT_D16_UNORM                5
  728.  
  729. #define GEN6_FLOATING_POINT_IEEE_754        0
  730. #define GEN6_FLOATING_POINT_NON_IEEE_754    1
  731.  
  732. #define GEN6_FRONTWINDING_CW      0
  733. #define GEN6_FRONTWINDING_CCW     1
  734.  
  735. #define GEN6_INDEX_BYTE     0
  736. #define GEN6_INDEX_WORD     1
  737. #define GEN6_INDEX_DWORD    2
  738.  
  739. #define GEN6_LOGICOPFUNCTION_CLEAR            0
  740. #define GEN6_LOGICOPFUNCTION_NOR              1
  741. #define GEN6_LOGICOPFUNCTION_AND_INVERTED     2
  742. #define GEN6_LOGICOPFUNCTION_COPY_INVERTED    3
  743. #define GEN6_LOGICOPFUNCTION_AND_REVERSE      4
  744. #define GEN6_LOGICOPFUNCTION_INVERT           5
  745. #define GEN6_LOGICOPFUNCTION_XOR              6
  746. #define GEN6_LOGICOPFUNCTION_NAND             7
  747. #define GEN6_LOGICOPFUNCTION_AND              8
  748. #define GEN6_LOGICOPFUNCTION_EQUIV            9
  749. #define GEN6_LOGICOPFUNCTION_NOOP             10
  750. #define GEN6_LOGICOPFUNCTION_OR_INVERTED      11
  751. #define GEN6_LOGICOPFUNCTION_COPY             12
  752. #define GEN6_LOGICOPFUNCTION_OR_REVERSE       13
  753. #define GEN6_LOGICOPFUNCTION_OR               14
  754. #define GEN6_LOGICOPFUNCTION_SET              15  
  755.  
  756. #define GEN6_MAPFILTER_NEAREST        0x0
  757. #define GEN6_MAPFILTER_LINEAR         0x1
  758. #define GEN6_MAPFILTER_ANISOTROPIC    0x2
  759.  
  760. #define GEN6_MIPFILTER_NONE        0  
  761. #define GEN6_MIPFILTER_NEAREST     1  
  762. #define GEN6_MIPFILTER_LINEAR      3
  763.  
  764. #define GEN6_POLYGON_FRONT_FACING     0
  765. #define GEN6_POLYGON_BACK_FACING      1
  766.  
  767. #define GEN6_PREFILTER_ALWAYS     0x0
  768. #define GEN6_PREFILTER_NEVER      0x1
  769. #define GEN6_PREFILTER_LESS       0x2
  770. #define GEN6_PREFILTER_EQUAL      0x3
  771. #define GEN6_PREFILTER_LEQUAL     0x4
  772. #define GEN6_PREFILTER_GREATER    0x5
  773. #define GEN6_PREFILTER_NOTEQUAL   0x6
  774. #define GEN6_PREFILTER_GEQUAL     0x7
  775.  
  776. #define GEN6_PROVOKING_VERTEX_0    0
  777. #define GEN6_PROVOKING_VERTEX_1    1
  778. #define GEN6_PROVOKING_VERTEX_2    2
  779.  
  780. #define GEN6_RASTRULE_UPPER_LEFT  0    
  781. #define GEN6_RASTRULE_UPPER_RIGHT 1
  782.  
  783. #define GEN6_RENDERTARGET_CLAMPRANGE_UNORM    0
  784. #define GEN6_RENDERTARGET_CLAMPRANGE_SNORM    1
  785. #define GEN6_RENDERTARGET_CLAMPRANGE_FORMAT   2
  786.  
  787. #define GEN6_STENCILOP_KEEP               0
  788. #define GEN6_STENCILOP_ZERO               1
  789. #define GEN6_STENCILOP_REPLACE            2
  790. #define GEN6_STENCILOP_INCRSAT            3
  791. #define GEN6_STENCILOP_DECRSAT            4
  792. #define GEN6_STENCILOP_INCR               5
  793. #define GEN6_STENCILOP_DECR               6
  794. #define GEN6_STENCILOP_INVERT             7
  795.  
  796. #define GEN6_SURFACE_MIPMAPLAYOUT_BELOW   0
  797. #define GEN6_SURFACE_MIPMAPLAYOUT_RIGHT   1
  798.  
  799. #define GEN6_SURFACEFORMAT_R32G32B32A32_FLOAT             0x000
  800. #define GEN6_SURFACEFORMAT_R32G32B32A32_SINT              0x001
  801. #define GEN6_SURFACEFORMAT_R32G32B32A32_UINT              0x002
  802. #define GEN6_SURFACEFORMAT_R32G32B32A32_UNORM             0x003
  803. #define GEN6_SURFACEFORMAT_R32G32B32A32_SNORM             0x004
  804. #define GEN6_SURFACEFORMAT_R64G64_FLOAT                   0x005
  805. #define GEN6_SURFACEFORMAT_R32G32B32X32_FLOAT             0x006
  806. #define GEN6_SURFACEFORMAT_R32G32B32A32_SSCALED           0x007
  807. #define GEN6_SURFACEFORMAT_R32G32B32A32_USCALED           0x008
  808. #define GEN6_SURFACEFORMAT_R32G32B32_FLOAT                0x040
  809. #define GEN6_SURFACEFORMAT_R32G32B32_SINT                 0x041
  810. #define GEN6_SURFACEFORMAT_R32G32B32_UINT                 0x042
  811. #define GEN6_SURFACEFORMAT_R32G32B32_UNORM                0x043
  812. #define GEN6_SURFACEFORMAT_R32G32B32_SNORM                0x044
  813. #define GEN6_SURFACEFORMAT_R32G32B32_SSCALED              0x045
  814. #define GEN6_SURFACEFORMAT_R32G32B32_USCALED              0x046
  815. #define GEN6_SURFACEFORMAT_R16G16B16A16_UNORM             0x080
  816. #define GEN6_SURFACEFORMAT_R16G16B16A16_SNORM             0x081
  817. #define GEN6_SURFACEFORMAT_R16G16B16A16_SINT              0x082
  818. #define GEN6_SURFACEFORMAT_R16G16B16A16_UINT              0x083
  819. #define GEN6_SURFACEFORMAT_R16G16B16A16_FLOAT             0x084
  820. #define GEN6_SURFACEFORMAT_R32G32_FLOAT                   0x085
  821. #define GEN6_SURFACEFORMAT_R32G32_SINT                    0x086
  822. #define GEN6_SURFACEFORMAT_R32G32_UINT                    0x087
  823. #define GEN6_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS       0x088
  824. #define GEN6_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT        0x089
  825. #define GEN6_SURFACEFORMAT_L32A32_FLOAT                   0x08A
  826. #define GEN6_SURFACEFORMAT_R32G32_UNORM                   0x08B
  827. #define GEN6_SURFACEFORMAT_R32G32_SNORM                   0x08C
  828. #define GEN6_SURFACEFORMAT_R64_FLOAT                      0x08D
  829. #define GEN6_SURFACEFORMAT_R16G16B16X16_UNORM             0x08E
  830. #define GEN6_SURFACEFORMAT_R16G16B16X16_FLOAT             0x08F
  831. #define GEN6_SURFACEFORMAT_A32X32_FLOAT                   0x090
  832. #define GEN6_SURFACEFORMAT_L32X32_FLOAT                   0x091
  833. #define GEN6_SURFACEFORMAT_I32X32_FLOAT                   0x092
  834. #define GEN6_SURFACEFORMAT_R16G16B16A16_SSCALED           0x093
  835. #define GEN6_SURFACEFORMAT_R16G16B16A16_USCALED           0x094
  836. #define GEN6_SURFACEFORMAT_R32G32_SSCALED                 0x095
  837. #define GEN6_SURFACEFORMAT_R32G32_USCALED                 0x096
  838. #define GEN6_SURFACEFORMAT_B8G8R8A8_UNORM                 0x0C0
  839. #define GEN6_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB            0x0C1
  840. #define GEN6_SURFACEFORMAT_R10G10B10A2_UNORM              0x0C2
  841. #define GEN6_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB         0x0C3
  842. #define GEN6_SURFACEFORMAT_R10G10B10A2_UINT               0x0C4
  843. #define GEN6_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM       0x0C5
  844. #define GEN6_SURFACEFORMAT_R8G8B8A8_UNORM                 0x0C7
  845. #define GEN6_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB            0x0C8
  846. #define GEN6_SURFACEFORMAT_R8G8B8A8_SNORM                 0x0C9
  847. #define GEN6_SURFACEFORMAT_R8G8B8A8_SINT                  0x0CA
  848. #define GEN6_SURFACEFORMAT_R8G8B8A8_UINT                  0x0CB
  849. #define GEN6_SURFACEFORMAT_R16G16_UNORM                   0x0CC
  850. #define GEN6_SURFACEFORMAT_R16G16_SNORM                   0x0CD
  851. #define GEN6_SURFACEFORMAT_R16G16_SINT                    0x0CE
  852. #define GEN6_SURFACEFORMAT_R16G16_UINT                    0x0CF
  853. #define GEN6_SURFACEFORMAT_R16G16_FLOAT                   0x0D0
  854. #define GEN6_SURFACEFORMAT_B10G10R10A2_UNORM              0x0D1
  855. #define GEN6_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB         0x0D2
  856. #define GEN6_SURFACEFORMAT_R11G11B10_FLOAT                0x0D3
  857. #define GEN6_SURFACEFORMAT_R32_SINT                       0x0D6
  858. #define GEN6_SURFACEFORMAT_R32_UINT                       0x0D7
  859. #define GEN6_SURFACEFORMAT_R32_FLOAT                      0x0D8
  860. #define GEN6_SURFACEFORMAT_R24_UNORM_X8_TYPELESS          0x0D9
  861. #define GEN6_SURFACEFORMAT_X24_TYPELESS_G8_UINT           0x0DA
  862. #define GEN6_SURFACEFORMAT_L16A16_UNORM                   0x0DF
  863. #define GEN6_SURFACEFORMAT_I24X8_UNORM                    0x0E0
  864. #define GEN6_SURFACEFORMAT_L24X8_UNORM                    0x0E1
  865. #define GEN6_SURFACEFORMAT_A24X8_UNORM                    0x0E2
  866. #define GEN6_SURFACEFORMAT_I32_FLOAT                      0x0E3
  867. #define GEN6_SURFACEFORMAT_L32_FLOAT                      0x0E4
  868. #define GEN6_SURFACEFORMAT_A32_FLOAT                      0x0E5
  869. #define GEN6_SURFACEFORMAT_B8G8R8X8_UNORM                 0x0E9
  870. #define GEN6_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB            0x0EA
  871. #define GEN6_SURFACEFORMAT_R8G8B8X8_UNORM                 0x0EB
  872. #define GEN6_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB            0x0EC
  873. #define GEN6_SURFACEFORMAT_R9G9B9E5_SHAREDEXP             0x0ED
  874. #define GEN6_SURFACEFORMAT_B10G10R10X2_UNORM              0x0EE
  875. #define GEN6_SURFACEFORMAT_L16A16_FLOAT                   0x0F0
  876. #define GEN6_SURFACEFORMAT_R32_UNORM                      0x0F1
  877. #define GEN6_SURFACEFORMAT_R32_SNORM                      0x0F2
  878. #define GEN6_SURFACEFORMAT_R10G10B10X2_USCALED            0x0F3
  879. #define GEN6_SURFACEFORMAT_R8G8B8A8_SSCALED               0x0F4
  880. #define GEN6_SURFACEFORMAT_R8G8B8A8_USCALED               0x0F5
  881. #define GEN6_SURFACEFORMAT_R16G16_SSCALED                 0x0F6
  882. #define GEN6_SURFACEFORMAT_R16G16_USCALED                 0x0F7
  883. #define GEN6_SURFACEFORMAT_R32_SSCALED                    0x0F8
  884. #define GEN6_SURFACEFORMAT_R32_USCALED                    0x0F9
  885. #define GEN6_SURFACEFORMAT_B5G6R5_UNORM                   0x100
  886. #define GEN6_SURFACEFORMAT_B5G6R5_UNORM_SRGB              0x101
  887. #define GEN6_SURFACEFORMAT_B5G5R5A1_UNORM                 0x102
  888. #define GEN6_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB            0x103
  889. #define GEN6_SURFACEFORMAT_B4G4R4A4_UNORM                 0x104
  890. #define GEN6_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB            0x105
  891. #define GEN6_SURFACEFORMAT_R8G8_UNORM                     0x106
  892. #define GEN6_SURFACEFORMAT_R8G8_SNORM                     0x107
  893. #define GEN6_SURFACEFORMAT_R8G8_SINT                      0x108
  894. #define GEN6_SURFACEFORMAT_R8G8_UINT                      0x109
  895. #define GEN6_SURFACEFORMAT_R16_UNORM                      0x10A
  896. #define GEN6_SURFACEFORMAT_R16_SNORM                      0x10B
  897. #define GEN6_SURFACEFORMAT_R16_SINT                       0x10C
  898. #define GEN6_SURFACEFORMAT_R16_UINT                       0x10D
  899. #define GEN6_SURFACEFORMAT_R16_FLOAT                      0x10E
  900. #define GEN6_SURFACEFORMAT_I16_UNORM                      0x111
  901. #define GEN6_SURFACEFORMAT_L16_UNORM                      0x112
  902. #define GEN6_SURFACEFORMAT_A16_UNORM                      0x113
  903. #define GEN6_SURFACEFORMAT_L8A8_UNORM                     0x114
  904. #define GEN6_SURFACEFORMAT_I16_FLOAT                      0x115
  905. #define GEN6_SURFACEFORMAT_L16_FLOAT                      0x116
  906. #define GEN6_SURFACEFORMAT_A16_FLOAT                      0x117
  907. #define GEN6_SURFACEFORMAT_R5G5_SNORM_B6_UNORM            0x119
  908. #define GEN6_SURFACEFORMAT_B5G5R5X1_UNORM                 0x11A
  909. #define GEN6_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB            0x11B
  910. #define GEN6_SURFACEFORMAT_R8G8_SSCALED                   0x11C
  911. #define GEN6_SURFACEFORMAT_R8G8_USCALED                   0x11D
  912. #define GEN6_SURFACEFORMAT_R16_SSCALED                    0x11E
  913. #define GEN6_SURFACEFORMAT_R16_USCALED                    0x11F
  914. #define GEN6_SURFACEFORMAT_R8_UNORM                       0x140
  915. #define GEN6_SURFACEFORMAT_R8_SNORM                       0x141
  916. #define GEN6_SURFACEFORMAT_R8_SINT                        0x142
  917. #define GEN6_SURFACEFORMAT_R8_UINT                        0x143
  918. #define GEN6_SURFACEFORMAT_A8_UNORM                       0x144
  919. #define GEN6_SURFACEFORMAT_I8_UNORM                       0x145
  920. #define GEN6_SURFACEFORMAT_L8_UNORM                       0x146
  921. #define GEN6_SURFACEFORMAT_P4A4_UNORM                     0x147
  922. #define GEN6_SURFACEFORMAT_A4P4_UNORM                     0x148
  923. #define GEN6_SURFACEFORMAT_R8_SSCALED                     0x149
  924. #define GEN6_SURFACEFORMAT_R8_USCALED                     0x14A
  925. #define GEN6_SURFACEFORMAT_R1_UINT                        0x181
  926. #define GEN6_SURFACEFORMAT_YCRCB_NORMAL                   0x182
  927. #define GEN6_SURFACEFORMAT_YCRCB_SWAPUVY                  0x183
  928. #define GEN6_SURFACEFORMAT_BC1_UNORM                      0x186
  929. #define GEN6_SURFACEFORMAT_BC2_UNORM                      0x187
  930. #define GEN6_SURFACEFORMAT_BC3_UNORM                      0x188
  931. #define GEN6_SURFACEFORMAT_BC4_UNORM                      0x189
  932. #define GEN6_SURFACEFORMAT_BC5_UNORM                      0x18A
  933. #define GEN6_SURFACEFORMAT_BC1_UNORM_SRGB                 0x18B
  934. #define GEN6_SURFACEFORMAT_BC2_UNORM_SRGB                 0x18C
  935. #define GEN6_SURFACEFORMAT_BC3_UNORM_SRGB                 0x18D
  936. #define GEN6_SURFACEFORMAT_MONO8                          0x18E
  937. #define GEN6_SURFACEFORMAT_YCRCB_SWAPUV                   0x18F
  938. #define GEN6_SURFACEFORMAT_YCRCB_SWAPY                    0x190
  939. #define GEN6_SURFACEFORMAT_DXT1_RGB                       0x191
  940. #define GEN6_SURFACEFORMAT_FXT1                           0x192
  941. #define GEN6_SURFACEFORMAT_R8G8B8_UNORM                   0x193
  942. #define GEN6_SURFACEFORMAT_R8G8B8_SNORM                   0x194
  943. #define GEN6_SURFACEFORMAT_R8G8B8_SSCALED                 0x195
  944. #define GEN6_SURFACEFORMAT_R8G8B8_USCALED                 0x196
  945. #define GEN6_SURFACEFORMAT_R64G64B64A64_FLOAT             0x197
  946. #define GEN6_SURFACEFORMAT_R64G64B64_FLOAT                0x198
  947. #define GEN6_SURFACEFORMAT_BC4_SNORM                      0x199
  948. #define GEN6_SURFACEFORMAT_BC5_SNORM                      0x19A
  949. #define GEN6_SURFACEFORMAT_R16G16B16_UNORM                0x19C
  950. #define GEN6_SURFACEFORMAT_R16G16B16_SNORM                0x19D
  951. #define GEN6_SURFACEFORMAT_R16G16B16_SSCALED              0x19E
  952. #define GEN6_SURFACEFORMAT_R16G16B16_USCALED              0x19F
  953.  
  954. #define GEN6_SURFACERETURNFORMAT_FLOAT32  0
  955. #define GEN6_SURFACERETURNFORMAT_S1       1
  956.  
  957. #define GEN6_SURFACE_1D      0
  958. #define GEN6_SURFACE_2D      1
  959. #define GEN6_SURFACE_3D      2
  960. #define GEN6_SURFACE_CUBE    3
  961. #define GEN6_SURFACE_BUFFER  4
  962. #define GEN6_SURFACE_NULL    7
  963.  
  964. #define GEN6_BORDER_COLOR_MODE_DEFAULT  0
  965. #define GEN6_BORDER_COLOR_MODE_LEGACY   1
  966.  
  967. #define GEN6_TEXCOORDMODE_WRAP            0
  968. #define GEN6_TEXCOORDMODE_MIRROR          1
  969. #define GEN6_TEXCOORDMODE_CLAMP           2
  970. #define GEN6_TEXCOORDMODE_CUBE            3
  971. #define GEN6_TEXCOORDMODE_CLAMP_BORDER    4
  972. #define GEN6_TEXCOORDMODE_MIRROR_ONCE     5
  973.  
  974. #define GEN6_THREAD_PRIORITY_NORMAL   0
  975. #define GEN6_THREAD_PRIORITY_HIGH     1
  976.  
  977. #define GEN6_TILEWALK_XMAJOR                 0
  978. #define GEN6_TILEWALK_YMAJOR                 1
  979.  
  980. #define GEN6_VERTEX_SUBPIXEL_PRECISION_8BITS  0
  981. #define GEN6_VERTEX_SUBPIXEL_PRECISION_4BITS  1
  982.  
  983. #define GEN6_VERTEXBUFFER_ACCESS_VERTEXDATA     0
  984. #define GEN6_VERTEXBUFFER_ACCESS_INSTANCEDATA   1
  985.  
  986. #define GEN6_VFCOMPONENT_NOSTORE      0
  987. #define GEN6_VFCOMPONENT_STORE_SRC    1
  988. #define GEN6_VFCOMPONENT_STORE_0      2
  989. #define GEN6_VFCOMPONENT_STORE_1_FLT  3
  990. #define GEN6_VFCOMPONENT_STORE_1_INT  4
  991. #define GEN6_VFCOMPONENT_STORE_VID    5
  992. #define GEN6_VFCOMPONENT_STORE_IID    6
  993. #define GEN6_VFCOMPONENT_STORE_PID    7
  994.  
  995.  
  996.  
  997. /* Execution Unit (EU) defines
  998.  */
  999.  
  1000. #define GEN6_ALIGN_1   0
  1001. #define GEN6_ALIGN_16  1
  1002.  
  1003. #define GEN6_ADDRESS_DIRECT                        0
  1004. #define GEN6_ADDRESS_REGISTER_INDIRECT_REGISTER    1
  1005.  
  1006. #define GEN6_CHANNEL_X     0
  1007. #define GEN6_CHANNEL_Y     1
  1008. #define GEN6_CHANNEL_Z     2
  1009. #define GEN6_CHANNEL_W     3
  1010.  
  1011. #define GEN6_COMPRESSION_NONE          0
  1012. #define GEN6_COMPRESSION_2NDHALF       1
  1013. #define GEN6_COMPRESSION_COMPRESSED    2
  1014.  
  1015. #define GEN6_CONDITIONAL_NONE  0
  1016. #define GEN6_CONDITIONAL_Z     1
  1017. #define GEN6_CONDITIONAL_NZ    2
  1018. #define GEN6_CONDITIONAL_EQ    1        /* Z */
  1019. #define GEN6_CONDITIONAL_NEQ   2        /* NZ */
  1020. #define GEN6_CONDITIONAL_G     3
  1021. #define GEN6_CONDITIONAL_GE    4
  1022. #define GEN6_CONDITIONAL_L     5
  1023. #define GEN6_CONDITIONAL_LE    6
  1024. #define GEN6_CONDITIONAL_C     7
  1025. #define GEN6_CONDITIONAL_O     8
  1026.  
  1027. #define GEN6_DEBUG_NONE        0
  1028. #define GEN6_DEBUG_BREAKPOINT  1
  1029.  
  1030. #define GEN6_DEPENDENCY_NORMAL         0
  1031. #define GEN6_DEPENDENCY_NOTCLEARED     1
  1032. #define GEN6_DEPENDENCY_NOTCHECKED     2
  1033. #define GEN6_DEPENDENCY_DISABLE        3
  1034.  
  1035. #define GEN6_EXECUTE_1     0
  1036. #define GEN6_EXECUTE_2     1
  1037. #define GEN6_EXECUTE_4     2
  1038. #define GEN6_EXECUTE_8     3
  1039. #define GEN6_EXECUTE_16    4
  1040. #define GEN6_EXECUTE_32    5
  1041.  
  1042. #define GEN6_HORIZONTAL_STRIDE_0   0
  1043. #define GEN6_HORIZONTAL_STRIDE_1   1
  1044. #define GEN6_HORIZONTAL_STRIDE_2   2
  1045. #define GEN6_HORIZONTAL_STRIDE_4   3
  1046.  
  1047. #define GEN6_INSTRUCTION_NORMAL    0
  1048. #define GEN6_INSTRUCTION_SATURATE  1
  1049.  
  1050. #define GEN6_MASK_ENABLE   0
  1051. #define GEN6_MASK_DISABLE  1
  1052.  
  1053. #define GEN6_OPCODE_MOV        1
  1054. #define GEN6_OPCODE_SEL        2
  1055. #define GEN6_OPCODE_NOT        4
  1056. #define GEN6_OPCODE_AND        5
  1057. #define GEN6_OPCODE_OR         6
  1058. #define GEN6_OPCODE_XOR        7
  1059. #define GEN6_OPCODE_SHR        8
  1060. #define GEN6_OPCODE_SHL        9
  1061. #define GEN6_OPCODE_RSR        10
  1062. #define GEN6_OPCODE_RSL        11
  1063. #define GEN6_OPCODE_ASR        12
  1064. #define GEN6_OPCODE_CMP        16
  1065. #define GEN6_OPCODE_JMPI       32
  1066. #define GEN6_OPCODE_IF         34
  1067. #define GEN6_OPCODE_IFF        35
  1068. #define GEN6_OPCODE_ELSE       36
  1069. #define GEN6_OPCODE_ENDIF      37
  1070. #define GEN6_OPCODE_DO         38
  1071. #define GEN6_OPCODE_WHILE      39
  1072. #define GEN6_OPCODE_BREAK      40
  1073. #define GEN6_OPCODE_CONTINUE   41
  1074. #define GEN6_OPCODE_HALT       42
  1075. #define GEN6_OPCODE_MSAVE      44
  1076. #define GEN6_OPCODE_MRESTORE   45
  1077. #define GEN6_OPCODE_PUSH       46
  1078. #define GEN6_OPCODE_POP        47
  1079. #define GEN6_OPCODE_WAIT       48
  1080. #define GEN6_OPCODE_SEND       49
  1081. #define GEN6_OPCODE_ADD        64
  1082. #define GEN6_OPCODE_MUL        65
  1083. #define GEN6_OPCODE_AVG        66
  1084. #define GEN6_OPCODE_FRC        67
  1085. #define GEN6_OPCODE_RNDU       68
  1086. #define GEN6_OPCODE_RNDD       69
  1087. #define GEN6_OPCODE_RNDE       70
  1088. #define GEN6_OPCODE_RNDZ       71
  1089. #define GEN6_OPCODE_MAC        72
  1090. #define GEN6_OPCODE_MACH       73
  1091. #define GEN6_OPCODE_LZD        74
  1092. #define GEN6_OPCODE_SAD2       80
  1093. #define GEN6_OPCODE_SADA2      81
  1094. #define GEN6_OPCODE_DP4        84
  1095. #define GEN6_OPCODE_DPH        85
  1096. #define GEN6_OPCODE_DP3        86
  1097. #define GEN6_OPCODE_DP2        87
  1098. #define GEN6_OPCODE_DPA2       88
  1099. #define GEN6_OPCODE_LINE       89
  1100. #define GEN6_OPCODE_NOP        126
  1101.  
  1102. #define GEN6_PREDICATE_NONE             0
  1103. #define GEN6_PREDICATE_NORMAL           1
  1104. #define GEN6_PREDICATE_ALIGN1_ANYV             2
  1105. #define GEN6_PREDICATE_ALIGN1_ALLV             3
  1106. #define GEN6_PREDICATE_ALIGN1_ANY2H            4
  1107. #define GEN6_PREDICATE_ALIGN1_ALL2H            5
  1108. #define GEN6_PREDICATE_ALIGN1_ANY4H            6
  1109. #define GEN6_PREDICATE_ALIGN1_ALL4H            7
  1110. #define GEN6_PREDICATE_ALIGN1_ANY8H            8
  1111. #define GEN6_PREDICATE_ALIGN1_ALL8H            9
  1112. #define GEN6_PREDICATE_ALIGN1_ANY16H           10
  1113. #define GEN6_PREDICATE_ALIGN1_ALL16H           11
  1114. #define GEN6_PREDICATE_ALIGN16_REPLICATE_X     2
  1115. #define GEN6_PREDICATE_ALIGN16_REPLICATE_Y     3
  1116. #define GEN6_PREDICATE_ALIGN16_REPLICATE_Z     4
  1117. #define GEN6_PREDICATE_ALIGN16_REPLICATE_W     5
  1118. #define GEN6_PREDICATE_ALIGN16_ANY4H           6
  1119. #define GEN6_PREDICATE_ALIGN16_ALL4H           7
  1120.  
  1121. #define GEN6_ARCHITECTURE_REGISTER_FILE    0
  1122. #define GEN6_GENERAL_REGISTER_FILE         1
  1123. #define GEN6_MESSAGE_REGISTER_FILE         2
  1124. #define GEN6_IMMEDIATE_VALUE               3
  1125.  
  1126. #define GEN6_REGISTER_TYPE_UD  0
  1127. #define GEN6_REGISTER_TYPE_D   1
  1128. #define GEN6_REGISTER_TYPE_UW  2
  1129. #define GEN6_REGISTER_TYPE_W   3
  1130. #define GEN6_REGISTER_TYPE_UB  4
  1131. #define GEN6_REGISTER_TYPE_B   5
  1132. #define GEN6_REGISTER_TYPE_VF  5        /* packed float vector, immediates only? */
  1133. #define GEN6_REGISTER_TYPE_HF  6
  1134. #define GEN6_REGISTER_TYPE_V   6        /* packed int vector, immediates only, uword dest only */
  1135. #define GEN6_REGISTER_TYPE_F   7
  1136.  
  1137. #define GEN6_ARF_NULL                  0x00
  1138. #define GEN6_ARF_ADDRESS               0x10
  1139. #define GEN6_ARF_ACCUMULATOR           0x20  
  1140. #define GEN6_ARF_FLAG                  0x30
  1141. #define GEN6_ARF_MASK                  0x40
  1142. #define GEN6_ARF_MASK_STACK            0x50
  1143. #define GEN6_ARF_MASK_STACK_DEPTH      0x60
  1144. #define GEN6_ARF_STATE                 0x70
  1145. #define GEN6_ARF_CONTROL               0x80
  1146. #define GEN6_ARF_NOTIFICATION_COUNT    0x90
  1147. #define GEN6_ARF_IP                    0xA0
  1148.  
  1149. #define GEN6_AMASK   0
  1150. #define GEN6_IMASK   1
  1151. #define GEN6_LMASK   2
  1152. #define GEN6_CMASK   3
  1153.  
  1154.  
  1155.  
  1156. #define GEN6_THREAD_NORMAL     0
  1157. #define GEN6_THREAD_ATOMIC     1
  1158. #define GEN6_THREAD_SWITCH     2
  1159.  
  1160. #define GEN6_VERTICAL_STRIDE_0                 0
  1161. #define GEN6_VERTICAL_STRIDE_1                 1
  1162. #define GEN6_VERTICAL_STRIDE_2                 2
  1163. #define GEN6_VERTICAL_STRIDE_4                 3
  1164. #define GEN6_VERTICAL_STRIDE_8                 4
  1165. #define GEN6_VERTICAL_STRIDE_16                5
  1166. #define GEN6_VERTICAL_STRIDE_32                6
  1167. #define GEN6_VERTICAL_STRIDE_64                7
  1168. #define GEN6_VERTICAL_STRIDE_128               8
  1169. #define GEN6_VERTICAL_STRIDE_256               9
  1170. #define GEN6_VERTICAL_STRIDE_ONE_DIMENSIONAL   0xF
  1171.  
  1172. #define GEN6_WIDTH_1       0
  1173. #define GEN6_WIDTH_2       1
  1174. #define GEN6_WIDTH_4       2
  1175. #define GEN6_WIDTH_8       3
  1176. #define GEN6_WIDTH_16      4
  1177.  
  1178. #define GEN6_STATELESS_BUFFER_BOUNDARY_1K      0
  1179. #define GEN6_STATELESS_BUFFER_BOUNDARY_2K      1
  1180. #define GEN6_STATELESS_BUFFER_BOUNDARY_4K      2
  1181. #define GEN6_STATELESS_BUFFER_BOUNDARY_8K      3
  1182. #define GEN6_STATELESS_BUFFER_BOUNDARY_16K     4
  1183. #define GEN6_STATELESS_BUFFER_BOUNDARY_32K     5
  1184. #define GEN6_STATELESS_BUFFER_BOUNDARY_64K     6
  1185. #define GEN6_STATELESS_BUFFER_BOUNDARY_128K    7
  1186. #define GEN6_STATELESS_BUFFER_BOUNDARY_256K    8
  1187. #define GEN6_STATELESS_BUFFER_BOUNDARY_512K    9
  1188. #define GEN6_STATELESS_BUFFER_BOUNDARY_1M      10
  1189. #define GEN6_STATELESS_BUFFER_BOUNDARY_2M      11
  1190.  
  1191. #define GEN6_POLYGON_FACING_FRONT      0
  1192. #define GEN6_POLYGON_FACING_BACK       1
  1193.  
  1194. #define GEN6_MESSAGE_TARGET_NULL               0
  1195. #define GEN6_MESSAGE_TARGET_MATH               1
  1196. #define GEN6_MESSAGE_TARGET_SAMPLER            2
  1197. #define GEN6_MESSAGE_TARGET_GATEWAY            3
  1198. #define GEN6_MESSAGE_TARGET_DATAPORT_READ      4
  1199. #define GEN6_MESSAGE_TARGET_DATAPORT_WRITE     5
  1200. #define GEN6_MESSAGE_TARGET_URB                6
  1201. #define GEN6_MESSAGE_TARGET_THREAD_SPAWNER     7
  1202.  
  1203. #define GEN6_SAMPLER_RETURN_FORMAT_FLOAT32     0
  1204. #define GEN6_SAMPLER_RETURN_FORMAT_UINT32      2
  1205. #define GEN6_SAMPLER_RETURN_FORMAT_SINT32      3
  1206.  
  1207. #define GEN6_SAMPLER_MESSAGE_SIMD8_SAMPLE              0
  1208. #define GEN6_SAMPLER_MESSAGE_SIMD16_SAMPLE             0
  1209. #define GEN6_SAMPLER_MESSAGE_SIMD16_SAMPLE_BIAS        0
  1210. #define GEN6_SAMPLER_MESSAGE_SIMD8_KILLPIX             1
  1211. #define GEN6_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_LOD        1
  1212. #define GEN6_SAMPLER_MESSAGE_SIMD16_SAMPLE_LOD         1
  1213. #define GEN6_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_GRADIENTS  2
  1214. #define GEN6_SAMPLER_MESSAGE_SIMD8_SAMPLE_GRADIENTS    2
  1215. #define GEN6_SAMPLER_MESSAGE_SIMD4X2_SAMPLE_COMPARE    0
  1216. #define GEN6_SAMPLER_MESSAGE_SIMD16_SAMPLE_COMPARE     2
  1217. #define GEN6_SAMPLER_MESSAGE_SIMD4X2_RESINFO           2
  1218. #define GEN6_SAMPLER_MESSAGE_SIMD8_RESINFO             2
  1219. #define GEN6_SAMPLER_MESSAGE_SIMD16_RESINFO            2
  1220. #define GEN6_SAMPLER_MESSAGE_SIMD4X2_LD                3
  1221. #define GEN6_SAMPLER_MESSAGE_SIMD8_LD                  3
  1222. #define GEN6_SAMPLER_MESSAGE_SIMD16_LD                 3
  1223.  
  1224. #define GEN6_DATAPORT_OWORD_BLOCK_1_OWORDLOW   0
  1225. #define GEN6_DATAPORT_OWORD_BLOCK_1_OWORDHIGH  1
  1226. #define GEN6_DATAPORT_OWORD_BLOCK_2_OWORDS     2
  1227. #define GEN6_DATAPORT_OWORD_BLOCK_4_OWORDS     3
  1228. #define GEN6_DATAPORT_OWORD_BLOCK_8_OWORDS     4
  1229.  
  1230. #define GEN6_DATAPORT_OWORD_DUAL_BLOCK_1OWORD     0
  1231. #define GEN6_DATAPORT_OWORD_DUAL_BLOCK_4OWORDS    2
  1232.  
  1233. #define GEN6_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS   2
  1234. #define GEN6_DATAPORT_DWORD_SCATTERED_BLOCK_16DWORDS  3
  1235.  
  1236. #define GEN6_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ          0
  1237. #define GEN6_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ     1
  1238. #define GEN6_DATAPORT_READ_MESSAGE_DWORD_BLOCK_READ          2
  1239. #define GEN6_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ      3
  1240.  
  1241. #define GEN6_DATAPORT_READ_TARGET_DATA_CACHE      0
  1242. #define GEN6_DATAPORT_READ_TARGET_RENDER_CACHE    1
  1243. #define GEN6_DATAPORT_READ_TARGET_SAMPLER_CACHE   2
  1244.  
  1245. #define GEN6_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE                0
  1246. #define GEN6_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE_REPLICATED     1
  1247. #define GEN6_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN01         2
  1248. #define GEN6_DATAPORT_RENDER_TARGET_WRITE_SIMD8_DUAL_SOURCE_SUBSPAN23         3
  1249. #define GEN6_DATAPORT_RENDER_TARGET_WRITE_SIMD8_SINGLE_SOURCE_SUBSPAN01       4
  1250.  
  1251. #define GEN6_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE                0
  1252. #define GEN6_DATAPORT_WRITE_MESSAGE_OWORD_DUAL_BLOCK_WRITE           1
  1253. #define GEN6_DATAPORT_WRITE_MESSAGE_DWORD_BLOCK_WRITE                2
  1254. #define GEN6_DATAPORT_WRITE_MESSAGE_DWORD_SCATTERED_WRITE            3
  1255. #define GEN6_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_WRITE              4
  1256. #define GEN6_DATAPORT_WRITE_MESSAGE_STREAMED_VERTEX_BUFFER_WRITE     5
  1257. #define GEN6_DATAPORT_WRITE_MESSAGE_FLUSH_RENDER_CACHE               7
  1258.  
  1259. #define GEN6_MATH_FUNCTION_INV                              1
  1260. #define GEN6_MATH_FUNCTION_LOG                              2
  1261. #define GEN6_MATH_FUNCTION_EXP                              3
  1262. #define GEN6_MATH_FUNCTION_SQRT                             4
  1263. #define GEN6_MATH_FUNCTION_RSQ                              5
  1264. #define GEN6_MATH_FUNCTION_SIN                              6 /* was 7 */
  1265. #define GEN6_MATH_FUNCTION_COS                              7 /* was 8 */
  1266. #define GEN6_MATH_FUNCTION_SINCOS                           8 /* was 6 */
  1267. #define GEN6_MATH_FUNCTION_TAN                              9
  1268. #define GEN6_MATH_FUNCTION_POW                              10
  1269. #define GEN6_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER   11
  1270. #define GEN6_MATH_FUNCTION_INT_DIV_QUOTIENT                 12
  1271. #define GEN6_MATH_FUNCTION_INT_DIV_REMAINDER                13
  1272.  
  1273. #define GEN6_MATH_INTEGER_UNSIGNED     0
  1274. #define GEN6_MATH_INTEGER_SIGNED       1
  1275.  
  1276. #define GEN6_MATH_PRECISION_FULL        0
  1277. #define GEN6_MATH_PRECISION_PARTIAL     1
  1278.  
  1279. #define GEN6_MATH_SATURATE_NONE         0
  1280. #define GEN6_MATH_SATURATE_SATURATE     1
  1281.  
  1282. #define GEN6_MATH_DATA_VECTOR  0
  1283. #define GEN6_MATH_DATA_SCALAR  1
  1284.  
  1285. #define GEN6_URB_OPCODE_WRITE  0
  1286.  
  1287. #define GEN6_URB_SWIZZLE_NONE          0
  1288. #define GEN6_URB_SWIZZLE_INTERLEAVE    1
  1289. #define GEN6_URB_SWIZZLE_TRANSPOSE     2
  1290.  
  1291. #define GEN6_SCRATCH_SPACE_SIZE_1K     0
  1292. #define GEN6_SCRATCH_SPACE_SIZE_2K     1
  1293. #define GEN6_SCRATCH_SPACE_SIZE_4K     2
  1294. #define GEN6_SCRATCH_SPACE_SIZE_8K     3
  1295. #define GEN6_SCRATCH_SPACE_SIZE_16K    4
  1296. #define GEN6_SCRATCH_SPACE_SIZE_32K    5
  1297. #define GEN6_SCRATCH_SPACE_SIZE_64K    6
  1298. #define GEN6_SCRATCH_SPACE_SIZE_128K   7
  1299. #define GEN6_SCRATCH_SPACE_SIZE_256K   8
  1300. #define GEN6_SCRATCH_SPACE_SIZE_512K   9
  1301. #define GEN6_SCRATCH_SPACE_SIZE_1M     10
  1302. #define GEN6_SCRATCH_SPACE_SIZE_2M     11
  1303.  
  1304. /* The hardware supports two different modes for border color. The
  1305.  * default (OpenGL) mode uses floating-point color channels, while the
  1306.  * legacy mode uses 4 bytes.
  1307.  *
  1308.  * More significantly, the legacy mode respects the components of the
  1309.  * border color for channels not present in the source, (whereas the
  1310.  * default mode will ignore the border color's alpha channel and use
  1311.  * alpha==1 for an RGB source, for example).
  1312.  *
  1313.  * The legacy mode matches the semantics specified by the Render
  1314.  * extension.
  1315.  */
  1316. struct gen6_sampler_default_border_color {
  1317.    float color[4];
  1318. };
  1319.  
  1320. struct gen6_sampler_legacy_border_color {
  1321.    uint8_t color[4];
  1322. };
  1323.  
  1324. struct gen6_sampler_state {
  1325.    struct {
  1326.       uint32_t shadow_function:3;
  1327.       uint32_t lod_bias:11;
  1328.       uint32_t min_filter:3;
  1329.       uint32_t mag_filter:3;
  1330.       uint32_t mip_filter:2;
  1331.       uint32_t base_level:5;
  1332.       uint32_t pad:1;
  1333.       uint32_t lod_preclamp:1;
  1334.       uint32_t border_color_mode:1;
  1335.       uint32_t pad0:1;
  1336.       uint32_t disable:1;
  1337.    } ss0;
  1338.  
  1339.    struct {
  1340.       uint32_t r_wrap_mode:3;
  1341.       uint32_t t_wrap_mode:3;
  1342.       uint32_t s_wrap_mode:3;
  1343.       uint32_t pad:3;
  1344.       uint32_t max_lod:10;
  1345.       uint32_t min_lod:10;
  1346.    } ss1;
  1347.  
  1348.    struct {
  1349.       uint32_t border_color;
  1350.    } ss2;
  1351.  
  1352.    struct {
  1353.       uint32_t pad:19;
  1354.       uint32_t max_aniso:3;
  1355.       uint32_t chroma_key_mode:1;
  1356.       uint32_t chroma_key_index:2;
  1357.       uint32_t chroma_key_enable:1;
  1358.       uint32_t monochrome_filter_width:3;
  1359.       uint32_t monochrome_filter_height:3;
  1360.    } ss3;
  1361. };
  1362.  
  1363. struct gen6_blend_state {
  1364.         struct {
  1365.                 uint32_t dest_blend_factor:5;
  1366.                 uint32_t source_blend_factor:5;
  1367.                 uint32_t pad3:1;
  1368.                 uint32_t blend_func:3;
  1369.                 uint32_t pad2:1;
  1370.                 uint32_t ia_dest_blend_factor:5;
  1371.                 uint32_t ia_source_blend_factor:5;
  1372.                 uint32_t pad1:1;
  1373.                 uint32_t ia_blend_func:3;
  1374.                 uint32_t pad0:1;
  1375.                 uint32_t ia_blend_enable:1;
  1376.                 uint32_t blend_enable:1;
  1377.         } blend0;
  1378.  
  1379.         struct {
  1380.                 uint32_t post_blend_clamp_enable:1;
  1381.                 uint32_t pre_blend_clamp_enable:1;
  1382.                 uint32_t clamp_range:2;
  1383.                 uint32_t pad0:4;
  1384.                 uint32_t x_dither_offset:2;
  1385.                 uint32_t y_dither_offset:2;
  1386.                 uint32_t dither_enable:1;
  1387.                 uint32_t alpha_test_func:3;
  1388.                 uint32_t alpha_test_enable:1;
  1389.                 uint32_t pad1:1;
  1390.                 uint32_t logic_op_func:4;
  1391.                 uint32_t logic_op_enable:1;
  1392.                 uint32_t pad2:1;
  1393.                 uint32_t write_disable_b:1;
  1394.                 uint32_t write_disable_g:1;
  1395.                 uint32_t write_disable_r:1;
  1396.                 uint32_t write_disable_a:1;
  1397.                 uint32_t pad3:1;
  1398.                 uint32_t alpha_to_coverage_dither:1;
  1399.                 uint32_t alpha_to_one:1;
  1400.                 uint32_t alpha_to_coverage:1;
  1401.         } blend1;
  1402. };
  1403.  
  1404. struct gen6_color_calc_state {
  1405.         struct {
  1406.                 uint32_t alpha_test_format:1;
  1407.                 uint32_t pad0:14;
  1408.                 uint32_t round_disable:1;
  1409.                 uint32_t bf_stencil_ref:8;
  1410.                 uint32_t stencil_ref:8;
  1411.         } cc0;
  1412.  
  1413.         union {
  1414.                 float alpha_ref_f;
  1415.                 struct {
  1416.                         uint32_t ui:8;
  1417.                         uint32_t pad0:24;
  1418.                 } alpha_ref_fi;
  1419.         } cc1;
  1420.  
  1421.         float constant_r;
  1422.         float constant_g;
  1423.         float constant_b;
  1424.         float constant_a;
  1425. };
  1426.  
  1427. struct gen6_depth_stencil_state {
  1428.         struct {
  1429.                 uint32_t pad0:3;
  1430.                 uint32_t bf_stencil_pass_depth_pass_op:3;
  1431.                 uint32_t bf_stencil_pass_depth_fail_op:3;
  1432.                 uint32_t bf_stencil_fail_op:3;
  1433.                 uint32_t bf_stencil_func:3;
  1434.                 uint32_t bf_stencil_enable:1;
  1435.                 uint32_t pad1:2;
  1436.                 uint32_t stencil_write_enable:1;
  1437.                 uint32_t stencil_pass_depth_pass_op:3;
  1438.                 uint32_t stencil_pass_depth_fail_op:3;
  1439.                 uint32_t stencil_fail_op:3;
  1440.                 uint32_t stencil_func:3;
  1441.                 uint32_t stencil_enable:1;
  1442.         } ds0;
  1443.  
  1444.         struct {
  1445.                 uint32_t bf_stencil_write_mask:8;
  1446.                 uint32_t bf_stencil_test_mask:8;
  1447.                 uint32_t stencil_write_mask:8;
  1448.                 uint32_t stencil_test_mask:8;
  1449.         } ds1;
  1450.  
  1451.         struct {
  1452.                 uint32_t pad0:26;
  1453.                 uint32_t depth_write_enable:1;
  1454.                 uint32_t depth_test_func:3;
  1455.                 uint32_t pad1:1;
  1456.                 uint32_t depth_test_enable:1;
  1457.         } ds2;
  1458. };
  1459.  
  1460. struct gen6_surface_state {
  1461.         struct {
  1462.                 uint32_t cube_pos_z:1;
  1463.                 uint32_t cube_neg_z:1;
  1464.                 uint32_t cube_pos_y:1;
  1465.                 uint32_t cube_neg_y:1;
  1466.                 uint32_t cube_pos_x:1;
  1467.                 uint32_t cube_neg_x:1;
  1468.                 uint32_t pad:3;
  1469.                 uint32_t render_cache_read_mode:1;
  1470.                 uint32_t mipmap_layout_mode:1;
  1471.                 uint32_t vert_line_stride_ofs:1;
  1472.                 uint32_t vert_line_stride:1;
  1473.                 uint32_t color_blend:1;
  1474.                 uint32_t writedisable_blue:1;
  1475.                 uint32_t writedisable_green:1;
  1476.                 uint32_t writedisable_red:1;
  1477.                 uint32_t writedisable_alpha:1;
  1478.                 uint32_t surface_format:9;
  1479.                 uint32_t data_return_format:1;
  1480.                 uint32_t pad0:1;
  1481.                 uint32_t surface_type:3;
  1482.         } ss0;
  1483.  
  1484.         struct {
  1485.                 uint32_t base_addr;
  1486.         } ss1;
  1487.  
  1488.         struct {
  1489.                 uint32_t render_target_rotation:2;
  1490.                 uint32_t mip_count:4;
  1491.                 uint32_t width:13;
  1492.                 uint32_t height:13;
  1493.         } ss2;
  1494.  
  1495.         struct {
  1496.                 uint32_t tile_walk:1;
  1497.                 uint32_t tiled_surface:1;
  1498.                 uint32_t pad:1;
  1499.                 uint32_t pitch:18;
  1500.                 uint32_t depth:11;
  1501.         } ss3;
  1502.  
  1503.         struct {
  1504.                 uint32_t pad:19;
  1505.                 uint32_t min_array_elt:9;
  1506.                 uint32_t min_lod:4;
  1507.         } ss4;
  1508.  
  1509.         struct {
  1510.                 uint32_t pad:20;
  1511.                 uint32_t y_offset:4;
  1512.                 uint32_t pad2:1;
  1513.                 uint32_t x_offset:7;
  1514.         } ss5;
  1515. };
  1516.  
  1517. /* Surface state DW0 */
  1518. #define GEN6_SURFACE_RC_READ_WRITE       (1 << 8)
  1519. #define GEN6_SURFACE_MIPLAYOUT_SHIFT     10
  1520. #define GEN6_SURFACE_MIPMAPLAYOUT_BELOW   0
  1521. #define GEN6_SURFACE_MIPMAPLAYOUT_RIGHT   1
  1522. #define GEN6_SURFACE_CUBEFACE_ENABLES    0x3f
  1523. #define GEN6_SURFACE_BLEND_ENABLED       (1 << 13)
  1524. #define GEN6_SURFACE_WRITEDISABLE_B_SHIFT        14
  1525. #define GEN6_SURFACE_WRITEDISABLE_G_SHIFT        15
  1526. #define GEN6_SURFACE_WRITEDISABLE_R_SHIFT        16
  1527. #define GEN6_SURFACE_WRITEDISABLE_A_SHIFT        17
  1528. #define GEN6_SURFACE_FORMAT_SHIFT        18
  1529. #define GEN6_SURFACE_FORMAT_MASK         INTEL_MASK(26, 18)
  1530.  
  1531. #define GEN6_SURFACE_TYPE_SHIFT          29
  1532. #define GEN6_SURFACE_TYPE_MASK           GEN6_MASK(31, 29)
  1533. #define GEN6_SURFACE_1D      0
  1534. #define GEN6_SURFACE_2D      1
  1535. #define GEN6_SURFACE_3D      2
  1536. #define GEN6_SURFACE_CUBE    3
  1537. #define GEN6_SURFACE_BUFFER  4
  1538. #define GEN6_SURFACE_NULL    7
  1539.  
  1540. /* Surface state DW2 */
  1541. #define GEN6_SURFACE_HEIGHT_SHIFT        19
  1542. #define GEN6_SURFACE_HEIGHT_MASK         GEN6_MASK(31, 19)
  1543. #define GEN6_SURFACE_WIDTH_SHIFT         6
  1544. #define GEN6_SURFACE_WIDTH_MASK          GEN6_MASK(18, 6)
  1545. #define GEN6_SURFACE_LOD_SHIFT           2
  1546. #define GEN6_SURFACE_LOD_MASK            GEN6_MASK(5, 2)
  1547.  
  1548. /* Surface state DW3 */
  1549. #define GEN6_SURFACE_DEPTH_SHIFT         21
  1550. #define GEN6_SURFACE_DEPTH_MASK          GEN6_MASK(31, 21)
  1551. #define GEN6_SURFACE_PITCH_SHIFT         3
  1552. #define GEN6_SURFACE_PITCH_MASK          GEN6_MASK(19, 3)
  1553. #define GEN6_SURFACE_TILED               (1 << 1)
  1554. #define GEN6_SURFACE_TILED_Y             (1 << 0)
  1555.  
  1556. /* Surface state DW4 */
  1557. #define GEN6_SURFACE_MIN_LOD_SHIFT       28
  1558. #define GEN6_SURFACE_MIN_LOD_MASK        GEN6_MASK(31, 28)
  1559.  
  1560. /* Surface state DW5 */
  1561. #define GEN6_SURFACE_X_OFFSET_SHIFT      25
  1562. #define GEN6_SURFACE_X_OFFSET_MASK       GEN6_MASK(31, 25)
  1563. #define GEN6_SURFACE_Y_OFFSET_SHIFT      20
  1564. #define GEN6_SURFACE_Y_OFFSET_MASK       GEN6_MASK(23, 20)
  1565.  
  1566. struct gen6_cc_viewport {
  1567.         float min_depth;
  1568.         float max_depth;
  1569. };
  1570.  
  1571. typedef enum {
  1572.         SAMPLER_FILTER_NEAREST = 0,
  1573.         SAMPLER_FILTER_BILINEAR,
  1574.         FILTER_COUNT
  1575. } sampler_filter_t;
  1576.  
  1577. typedef enum {
  1578.         SAMPLER_EXTEND_NONE = 0,
  1579.         SAMPLER_EXTEND_REPEAT,
  1580.         SAMPLER_EXTEND_PAD,
  1581.         SAMPLER_EXTEND_REFLECT,
  1582.         EXTEND_COUNT
  1583. } sampler_extend_t;
  1584.  
  1585. #endif
  1586.