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