Subversion Repositories Kolibri OS

Rev

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

  1. /**************************************************************************
  2.  *
  3.  * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
  4.  * All Rights Reserved.
  5.  *
  6.  * Permission is hereby granted, free of charge, to any person obtaining a
  7.  * copy of this software and associated documentation files (the
  8.  * "Software"), to deal in the Software without restriction, including
  9.  * without limitation the rights to use, copy, modify, merge, publish,
  10.  * distribute, sub license, and/or sell copies of the Software, and to
  11.  * permit persons to whom the Software is furnished to do so, subject to
  12.  * the following conditions:
  13.  *
  14.  * The above copyright notice and this permission notice (including the
  15.  * next paragraph) shall be included in all copies or substantial portions
  16.  * of the Software.
  17.  *
  18.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  19.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  21.  * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
  22.  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  23.  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  24.  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25.  *
  26.  **************************************************************************/
  27.  
  28. /*
  29.  * New regs for broadwater -- we need to split this file up sensibly somehow.
  30.  */
  31. #define BRW_3D(Pipeline,Opcode,Subopcode) ((3 << 29) | \
  32.                                            ((Pipeline) << 27) | \
  33.                                            ((Opcode) << 24) | \
  34.                                            ((Subopcode) << 16))
  35.  
  36. #define BRW_URB_FENCE                           BRW_3D(0, 0, 0)
  37. #define BRW_CS_URB_STATE                        BRW_3D(0, 0, 1)
  38. #define BRW_CONSTANT_BUFFER                     BRW_3D(0, 0, 2)
  39. #define BRW_STATE_PREFETCH                      BRW_3D(0, 0, 3)
  40.  
  41. #define BRW_STATE_BASE_ADDRESS                  BRW_3D(0, 1, 1)
  42. #define BRW_STATE_SIP                           BRW_3D(0, 1, 2)
  43. #define BRW_PIPELINE_SELECT                     BRW_3D(0, 1, 4)
  44.  
  45. #define NEW_PIPELINE_SELECT                     BRW_3D(1, 1, 4)
  46.  
  47. #define BRW_MEDIA_STATE_POINTERS                BRW_3D(2, 0, 0)
  48. #define BRW_MEDIA_OBJECT                        BRW_3D(2, 1, 0)
  49.  
  50. #define BRW_3DSTATE_PIPELINED_POINTERS          BRW_3D(3, 0, 0)
  51. #define BRW_3DSTATE_BINDING_TABLE_POINTERS      BRW_3D(3, 0, 1)
  52. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_PS  (1 << 12)/* for GEN6 */
  53. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_GS  (1 << 9) /* for GEN6 */
  54. # define GEN6_3DSTATE_BINDING_TABLE_MODIFY_VS  (1 << 8) /* for GEN6 */
  55.  
  56. #define BRW_3DSTATE_VERTEX_BUFFERS              BRW_3D(3, 0, 8)
  57. #define BRW_3DSTATE_VERTEX_ELEMENTS             BRW_3D(3, 0, 9)
  58. #define BRW_3DSTATE_INDEX_BUFFER                BRW_3D(3, 0, 0xa)
  59. #define BRW_3DSTATE_VF_STATISTICS               BRW_3D(3, 0, 0xb)
  60.  
  61. #define BRW_3DSTATE_DRAWING_RECTANGLE           BRW_3D(3, 1, 0)
  62. #define BRW_3DSTATE_CONSTANT_COLOR              BRW_3D(3, 1, 1)
  63. #define BRW_3DSTATE_SAMPLER_PALETTE_LOAD        BRW_3D(3, 1, 2)
  64. #define BRW_3DSTATE_CHROMA_KEY                  BRW_3D(3, 1, 4)
  65. #define BRW_3DSTATE_DEPTH_BUFFER                BRW_3D(3, 1, 5)
  66. # define BRW_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT    29
  67. # define BRW_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT  18
  68.  
  69. #define BRW_3DSTATE_POLY_STIPPLE_OFFSET         BRW_3D(3, 1, 6)
  70. #define BRW_3DSTATE_POLY_STIPPLE_PATTERN        BRW_3D(3, 1, 7)
  71. #define BRW_3DSTATE_LINE_STIPPLE                BRW_3D(3, 1, 8)
  72. #define BRW_3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP   BRW_3D(3, 1, 9)
  73. /* These two are BLC and CTG only, not BW or CL */
  74. #define BRW_3DSTATE_AA_LINE_PARAMS              BRW_3D(3, 1, 0xa)
  75. #define BRW_3DSTATE_GS_SVB_INDEX                BRW_3D(3, 1, 0xb)
  76.  
  77. #define BRW_PIPE_CONTROL                        BRW_3D(3, 2, 0)
  78.  
  79. #define BRW_3DPRIMITIVE                         BRW_3D(3, 3, 0)
  80.  
  81. #define BRW_3DSTATE_CLEAR_PARAMS                BRW_3D(3, 1, 0x10)
  82. /* DW1 */
  83. # define BRW_3DSTATE_DEPTH_CLEAR_VALID          (1 << 15)
  84.  
  85. /* for GEN6+ */
  86. #define GEN6_3DSTATE_SAMPLER_STATE_POINTERS     BRW_3D(3, 0, 0x02)
  87. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS   (1 << 12)
  88. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS   (1 << 9)
  89. # define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS   (1 << 8)
  90.  
  91. #define GEN6_3DSTATE_URB                        BRW_3D(3, 0, 0x05)
  92. /* DW1 */
  93. # define GEN6_3DSTATE_URB_VS_SIZE_SHIFT         16
  94. # define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT      0
  95. /* DW2 */
  96. # define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT      8
  97. # define GEN6_3DSTATE_URB_GS_SIZE_SHIFT         0
  98.  
  99. #define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS    BRW_3D(3, 0, 0x0d)
  100. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC          (1 << 12)
  101. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF          (1 << 11)
  102. # define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP        (1 << 10)
  103.  
  104. #define GEN6_3DSTATE_CC_STATE_POINTERS          BRW_3D(3, 0, 0x0e)
  105.  
  106. #define GEN6_3DSTATE_VS                         BRW_3D(3, 0, 0x10)
  107.  
  108. #define GEN6_3DSTATE_GS                         BRW_3D(3, 0, 0x11)
  109. /* DW4 */
  110. # define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT       0
  111.  
  112. #define GEN6_3DSTATE_CLIP                       BRW_3D(3, 0, 0x12)
  113.  
  114. #define GEN6_3DSTATE_SF                         BRW_3D(3, 0, 0x13)
  115. /* DW1 */
  116. # define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT              22
  117. # define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT    11
  118. # define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT    4
  119. /* DW2 */
  120. /* DW3 */
  121. # define GEN6_3DSTATE_SF_CULL_BOTH                      (0 << 29)
  122. # define GEN6_3DSTATE_SF_CULL_NONE                      (1 << 29)
  123. # define GEN6_3DSTATE_SF_CULL_FRONT                     (2 << 29)
  124. # define GEN6_3DSTATE_SF_CULL_BACK                      (3 << 29)
  125. /* DW4 */
  126. # define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT              29
  127. # define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT             27
  128. # define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT           25
  129.  
  130.  
  131. #define GEN6_3DSTATE_WM                         BRW_3D(3, 0, 0x14)
  132. /* DW2 */
  133. # define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF                    27
  134. # define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT        18
  135. /* DW4 */
  136. # define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT             16
  137. /* DW5 */
  138. # define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT                      25
  139. # define GEN6_3DSTATE_WM_DISPATCH_ENABLE                        (1 << 19)
  140. # define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE                     (1 << 1)
  141. # define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE                      (1 << 0)
  142. /* DW6 */
  143. # define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT                   20
  144. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC      (1 << 15)
  145. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC    (1 << 14)
  146. # define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC       (1 << 13)
  147. # define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC         (1 << 12)
  148. # define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC       (1 << 11)
  149. # define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC          (1 << 10)
  150.  
  151.  
  152. #define GEN6_3DSTATE_CONSTANT_VS                BRW_3D(3, 0, 0x15)
  153. #define GEN6_3DSTATE_CONSTANT_GS                BRW_3D(3, 0, 0x16)
  154. #define GEN6_3DSTATE_CONSTANT_PS                BRW_3D(3, 0, 0x17)
  155.  
  156. #define GEN6_3DSTATE_SAMPLE_MASK                BRW_3D(3, 0, 0x18)
  157.  
  158. #define GEN6_3DSTATE_MULTISAMPLE                BRW_3D(3, 1, 0x0d)
  159. /* DW1 */
  160. # define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER         (0 << 4)
  161. # define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT     (1 << 4)
  162. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1                  (0 << 1)
  163. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4                  (2 << 1)
  164. # define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8                  (3 << 1)
  165.  
  166. /* on GEN7+ */
  167. /* _3DSTATE_VERTEX_BUFFERS on GEN7*/
  168. /* DW1 */
  169. #define GEN7_VB0_ADDRESS_MODIFYENABLE   (1 << 14)
  170.  
  171. /* _3DPRIMITIVE on GEN7 */
  172. /* DW1 */
  173. # define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL     (0 << 8)
  174. # define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM         (1 << 8)
  175.  
  176. /* 3DSTATE_WM on GEN7 */
  177. /* DW1 */
  178. # define GEN7_WM_STATISTICS_ENABLE                              (1 << 31)
  179. # define GEN7_WM_DEPTH_CLEAR                                    (1 << 30)
  180. # define GEN7_WM_DISPATCH_ENABLE                                (1 << 29)
  181. # define GEN6_WM_DEPTH_RESOLVE                                  (1 << 28)
  182. # define GEN7_WM_HIERARCHICAL_DEPTH_RESOLVE                     (1 << 27)
  183. # define GEN7_WM_KILL_ENABLE                                    (1 << 25)
  184. # define GEN7_WM_PSCDEPTH_OFF                                   (0 << 23)
  185. # define GEN7_WM_PSCDEPTH_ON                                    (1 << 23)
  186. # define GEN7_WM_PSCDEPTH_ON_GE                                 (2 << 23)
  187. # define GEN7_WM_PSCDEPTH_ON_LE                                 (3 << 23)
  188. # define GEN7_WM_USES_SOURCE_DEPTH                              (1 << 20)
  189. # define GEN7_WM_USES_SOURCE_W                                  (1 << 19)
  190. # define GEN7_WM_POSITION_ZW_PIXEL                              (0 << 17)
  191. # define GEN7_WM_POSITION_ZW_CENTROID                           (2 << 17)
  192. # define GEN7_WM_POSITION_ZW_SAMPLE                             (3 << 17)
  193. # define GEN7_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC              (1 << 16)
  194. # define GEN7_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC            (1 << 15)
  195. # define GEN7_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC               (1 << 14)
  196. # define GEN7_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC                 (1 << 13)
  197. # define GEN7_WM_PERSPECTIVE_CENTROID_BARYCENTRIC               (1 << 12)
  198. # define GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC                  (1 << 11)
  199. # define GEN7_WM_USES_INPUT_COVERAGE_MASK                       (1 << 10)
  200. # define GEN7_WM_LINE_END_CAP_AA_WIDTH_0_5                      (0 << 8)
  201. # define GEN7_WM_LINE_END_CAP_AA_WIDTH_1_0                      (1 << 8)
  202. # define GEN7_WM_LINE_END_CAP_AA_WIDTH_2_0                      (2 << 8)
  203. # define GEN7_WM_LINE_END_CAP_AA_WIDTH_4_0                      (3 << 8)
  204. # define GEN7_WM_LINE_AA_WIDTH_0_5                              (0 << 6)
  205. # define GEN7_WM_LINE_AA_WIDTH_1_0                              (1 << 6)
  206. # define GEN7_WM_LINE_AA_WIDTH_2_0                              (2 << 6)
  207. # define GEN7_WM_LINE_AA_WIDTH_4_0                              (3 << 6)
  208. # define GEN7_WM_POLYGON_STIPPLE_ENABLE                         (1 << 4)
  209. # define GEN7_WM_LINE_STIPPLE_ENABLE                            (1 << 3)
  210. # define GEN7_WM_POINT_RASTRULE_UPPER_RIGHT                     (1 << 2)
  211. # define GEN7_WM_MSRAST_OFF_PIXEL                               (0 << 0)
  212. # define GEN7_WM_MSRAST_OFF_PATTERN                             (1 << 0)
  213. # define GEN7_WM_MSRAST_ON_PIXEL                                (2 << 0)
  214. # define GEN7_WM_MSRAST_ON_PATTERN                              (3 << 0)
  215. /* DW2 */
  216. # define GEN7_WM_MSDISPMODE_PERPIXEL                            (1 << 31)
  217.  
  218. #define GEN7_3DSTATE_CLEAR_PARAMS               BRW_3D(3, 0, 0x04)
  219. #define GEN7_3DSTATE_DEPTH_BUFFER               BRW_3D(3, 0, 0x05)
  220.  
  221. #define GEN7_3DSTATE_CONSTANT_HS                BRW_3D(3, 0, 0x19)
  222. #define GEN7_3DSTATE_CONSTANT_DS                BRW_3D(3, 0, 0x1a)
  223.  
  224. #define GEN7_3DSTATE_HS                         BRW_3D(3, 0, 0x1b)
  225. #define GEN7_3DSTATE_TE                         BRW_3D(3, 0, 0x1c)
  226. #define GEN7_3DSTATE_DS                         BRW_3D(3, 0, 0x1d)
  227. #define GEN7_3DSTATE_STREAMOUT                  BRW_3D(3, 0, 0x1e)
  228. #define GEN7_3DSTATE_SBE                        BRW_3D(3, 0, 0x1f)
  229.  
  230. /* DW1 */
  231. # define GEN7_SBE_SWIZZLE_CONTROL_MODE          (1 << 28)
  232. # define GEN7_SBE_NUM_OUTPUTS_SHIFT             22
  233. # define GEN7_SBE_SWIZZLE_ENABLE                (1 << 21)
  234. # define GEN7_SBE_POINT_SPRITE_LOWERLEFT        (1 << 20)
  235. # define GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT   11
  236. # define GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT   4
  237.  
  238. #define GEN7_3DSTATE_PS                                 BRW_3D(3, 0, 0x20)
  239. /* DW1: kernel pointer */
  240. /* DW2 */
  241. # define GEN7_PS_SPF_MODE                               (1 << 31)
  242. # define GEN7_PS_VECTOR_MASK_ENABLE                     (1 << 30)
  243. # define GEN7_PS_SAMPLER_COUNT_SHIFT                    27
  244. # define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT        18
  245. # define GEN7_PS_FLOATING_POINT_MODE_IEEE_754           (0 << 16)
  246. # define GEN7_PS_FLOATING_POINT_MODE_ALT                (1 << 16)
  247. /* DW3: scratch space */
  248. /* DW4 */
  249. # define GEN7_PS_MAX_THREADS_SHIFT_IVB                  24
  250. # define GEN7_PS_MAX_THREADS_SHIFT_HSW                  23
  251. # define GEN7_PS_SAMPLE_MASK_SHIFT_HSW                  12
  252. # define GEN7_PS_PUSH_CONSTANT_ENABLE                   (1 << 11)
  253. # define GEN7_PS_ATTRIBUTE_ENABLE                       (1 << 10)
  254. # define GEN7_PS_OMASK_TO_RENDER_TARGET                 (1 << 9)
  255. # define GEN7_PS_DUAL_SOURCE_BLEND_ENABLE               (1 << 7)
  256. # define GEN7_PS_POSOFFSET_NONE                         (0 << 3)
  257. # define GEN7_PS_POSOFFSET_CENTROID                     (2 << 3)
  258. # define GEN7_PS_POSOFFSET_SAMPLE                       (3 << 3)
  259. # define GEN7_PS_32_DISPATCH_ENABLE                     (1 << 2)
  260. # define GEN7_PS_16_DISPATCH_ENABLE                     (1 << 1)
  261. # define GEN7_PS_8_DISPATCH_ENABLE                      (1 << 0)
  262. /* DW5 */
  263. # define GEN7_PS_DISPATCH_START_GRF_SHIFT_0             16
  264. # define GEN7_PS_DISPATCH_START_GRF_SHIFT_1             8
  265. # define GEN7_PS_DISPATCH_START_GRF_SHIFT_2             0
  266. /* DW6: kernel 1 pointer */
  267. /* DW7: kernel 2 pointer */
  268.  
  269. #define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL      BRW_3D(3, 0, 0x21)
  270. #define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC         BRW_3D(3, 0, 0x23)
  271.  
  272. #define GEN7_3DSTATE_BLEND_STATE_POINTERS               BRW_3D(3, 0, 0x24)
  273. #define GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS       BRW_3D(3, 0, 0x25)
  274.  
  275. #define GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS          BRW_3D(3, 0, 0x26)
  276. #define GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS          BRW_3D(3, 0, 0x27)
  277. #define GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS          BRW_3D(3, 0, 0x28)
  278. #define GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS          BRW_3D(3, 0, 0x29)
  279. #define GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS          BRW_3D(3, 0, 0x2a)
  280.  
  281. #define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS          BRW_3D(3, 0, 0x2b)
  282. #define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS          BRW_3D(3, 0, 0x2e)
  283. #define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS          BRW_3D(3, 0, 0x2f)
  284.  
  285. #define GEN7_3DSTATE_URB_VS                             BRW_3D(3, 0, 0x30)
  286. #define GEN7_3DSTATE_URB_HS                             BRW_3D(3, 0, 0x31)
  287. #define GEN7_3DSTATE_URB_DS                             BRW_3D(3, 0, 0x32)
  288. #define GEN7_3DSTATE_URB_GS                             BRW_3D(3, 0, 0x33)
  289. /* DW1 */
  290. # define GEN7_URB_ENTRY_NUMBER_SHIFT            0
  291. # define GEN7_URB_ENTRY_SIZE_SHIFT              16
  292. # define GEN7_URB_STARTING_ADDRESS_SHIFT        25
  293.  
  294. #define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS             BRW_3D(3, 1, 0x12)
  295. #define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS             BRW_3D(3, 1, 0x16)
  296. /* DW1 */
  297. # define GEN7_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16
  298.  
  299.  
  300. #define PIPELINE_SELECT_3D              0
  301. #define PIPELINE_SELECT_MEDIA           1
  302.  
  303. #define UF0_CS_REALLOC                  (1 << 13)
  304. #define UF0_VFE_REALLOC                 (1 << 12)
  305. #define UF0_SF_REALLOC                  (1 << 11)
  306. #define UF0_CLIP_REALLOC                (1 << 10)
  307. #define UF0_GS_REALLOC                  (1 << 9)
  308. #define UF0_VS_REALLOC                  (1 << 8)
  309. #define UF1_CLIP_FENCE_SHIFT            20
  310. #define UF1_GS_FENCE_SHIFT              10
  311. #define UF1_VS_FENCE_SHIFT              0
  312. #define UF2_CS_FENCE_SHIFT              20
  313. #define UF2_VFE_FENCE_SHIFT             10
  314. #define UF2_SF_FENCE_SHIFT              0
  315.  
  316. /* for BRW_STATE_BASE_ADDRESS */
  317. #define BASE_ADDRESS_MODIFY             (1 << 0)
  318.  
  319. /* for BRW_3DSTATE_PIPELINED_POINTERS */
  320. #define BRW_GS_DISABLE                 0
  321. #define BRW_GS_ENABLE                  1
  322. #define BRW_CLIP_DISABLE               0
  323. #define BRW_CLIP_ENABLE                1
  324.  
  325. /* for BRW_PIPE_CONTROL */
  326. #define BRW_PIPE_CONTROL_CS_STALL      (1 << 20)
  327. #define BRW_PIPE_CONTROL_NOWRITE       (0 << 14)
  328. #define BRW_PIPE_CONTROL_WRITE_QWORD   (1 << 14)
  329. #define BRW_PIPE_CONTROL_WRITE_DEPTH   (2 << 14)
  330. #define BRW_PIPE_CONTROL_WRITE_TIME    (3 << 14)
  331. #define BRW_PIPE_CONTROL_DEPTH_STALL   (1 << 13)
  332. #define BRW_PIPE_CONTROL_WC_FLUSH      (1 << 12)
  333. #define BRW_PIPE_CONTROL_IS_FLUSH      (1 << 11)
  334. #define BRW_PIPE_CONTROL_TC_FLUSH      (1 << 10)
  335. #define BRW_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8)
  336. #define BRW_PIPE_CONTROL_GLOBAL_GTT    (1 << 2)
  337. #define BRW_PIPE_CONTROL_LOCAL_PGTT    (0 << 2)
  338. #define BRW_PIPE_CONTROL_STALL_AT_SCOREBOARD    (1 << 1)
  339. #define BRW_PIPE_CONTROL_DEPTH_CACHE_FLUSH      (1 << 0)
  340.  
  341. /* VERTEX_BUFFER_STATE Structure */
  342. #define VB0_BUFFER_INDEX_SHIFT          27
  343. #define GEN6_VB0_BUFFER_INDEX_SHIFT     26
  344. #define VB0_VERTEXDATA                  (0 << 26)
  345. #define VB0_INSTANCEDATA                (1 << 26)
  346. #define GEN6_VB0_VERTEXDATA             (0 << 20)
  347. #define GEN6_VB0_INSTANCEDATA           (1 << 20)
  348. #define VB0_BUFFER_PITCH_SHIFT          0
  349.  
  350. /* VERTEX_ELEMENT_STATE Structure */
  351. #define VE0_VERTEX_BUFFER_INDEX_SHIFT   27
  352. #define GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT      26 /* for GEN6 */
  353. #define VE0_VALID                       (1 << 26)
  354. #define GEN6_VE0_VALID                  (1 << 25) /* for GEN6 */
  355. #define VE0_FORMAT_SHIFT                16
  356. #define VE0_OFFSET_SHIFT                0
  357. #define VE1_VFCOMPONENT_0_SHIFT         28
  358. #define VE1_VFCOMPONENT_1_SHIFT         24
  359. #define VE1_VFCOMPONENT_2_SHIFT         20
  360. #define VE1_VFCOMPONENT_3_SHIFT         16
  361. #define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT    0
  362.  
  363. /* 3DPRIMITIVE bits */
  364. #define BRW_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15)
  365. #define BRW_3DPRIMITIVE_VERTEX_RANDOM     (1 << 15)
  366. /* Primitive types are in brw_defines.h */
  367. #define BRW_3DPRIMITIVE_TOPOLOGY_SHIFT    10
  368.  
  369. #define BRW_SVG_CTL                    0x7400
  370.  
  371. #define BRW_SVG_CTL_GS_BA              (0 << 8)
  372. #define BRW_SVG_CTL_SS_BA              (1 << 8)
  373. #define BRW_SVG_CTL_IO_BA              (2 << 8)
  374. #define BRW_SVG_CTL_GS_AUB             (3 << 8)
  375. #define BRW_SVG_CTL_IO_AUB             (4 << 8)
  376. #define BRW_SVG_CTL_SIP                (5 << 8)
  377.  
  378. #define BRW_SVG_RDATA                  0x7404
  379. #define BRW_SVG_WORK_CTL               0x7408
  380.  
  381. #define BRW_VF_CTL                     0x7500
  382.  
  383. #define BRW_VF_CTL_SNAPSHOT_COMPLETE               (1 << 31)
  384. #define BRW_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID    (0 << 8)
  385. #define BRW_VF_CTL_SNAPSHOT_MUX_SELECT_VF_DEBUG    (1 << 8)
  386. #define BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_SEQUENCE   (0 << 4)
  387. #define BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX      (1 << 4)
  388. #define BRW_VF_CTL_SKIP_INITIAL_PRIMITIVES         (1 << 3)
  389. #define BRW_VF_CTL_MAX_PRIMITIVES_LIMIT_ENABLE     (1 << 2)
  390. #define BRW_VF_CTL_VERTEX_RANGE_LIMIT_ENABLE       (1 << 1)
  391. #define BRW_VF_CTL_SNAPSHOT_ENABLE                 (1 << 0)
  392.  
  393. #define BRW_VF_STRG_VAL                0x7504
  394. #define BRW_VF_STR_VL_OVR              0x7508
  395. #define BRW_VF_VC_OVR                  0x750c
  396. #define BRW_VF_STR_PSKIP               0x7510
  397. #define BRW_VF_MAX_PRIM                0x7514
  398. #define BRW_VF_RDATA                   0x7518
  399.  
  400. #define BRW_VS_CTL                     0x7600
  401. #define BRW_VS_CTL_SNAPSHOT_COMPLETE               (1 << 31)
  402. #define BRW_VS_CTL_SNAPSHOT_MUX_VERTEX_0           (0 << 8)
  403. #define BRW_VS_CTL_SNAPSHOT_MUX_VERTEX_1           (1 << 8)
  404. #define BRW_VS_CTL_SNAPSHOT_MUX_VALID_COUNT        (2 << 8)
  405. #define BRW_VS_CTL_SNAPSHOT_MUX_VS_KERNEL_POINTER  (3 << 8)
  406. #define BRW_VS_CTL_SNAPSHOT_ALL_THREADS            (1 << 2)
  407. #define BRW_VS_CTL_THREAD_SNAPSHOT_ENABLE          (1 << 1)
  408. #define BRW_VS_CTL_SNAPSHOT_ENABLE                 (1 << 0)
  409.  
  410. #define BRW_VS_STRG_VAL                0x7604
  411. #define BRW_VS_RDATA                   0x7608
  412.  
  413. #define BRW_SF_CTL                     0x7b00
  414. #define BRW_SF_CTL_SNAPSHOT_COMPLETE               (1 << 31)
  415. #define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_0_FF_ID     (0 << 8)
  416. #define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_0_REL_COUNT (1 << 8)
  417. #define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_1_FF_ID     (2 << 8)
  418. #define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_1_REL_COUNT (3 << 8)
  419. #define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_2_FF_ID     (4 << 8)
  420. #define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_2_REL_COUNT (5 << 8)
  421. #define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT       (6 << 8)
  422. #define BRW_SF_CTL_SNAPSHOT_MUX_SF_KERNEL_POINTER  (7 << 8)
  423. #define BRW_SF_CTL_MIN_MAX_PRIMITIVE_RANGE_ENABLE  (1 << 4)
  424. #define BRW_SF_CTL_DEBUG_CLIP_RECTANGLE_ENABLE     (1 << 3)
  425. #define BRW_SF_CTL_SNAPSHOT_ALL_THREADS            (1 << 2)
  426. #define BRW_SF_CTL_THREAD_SNAPSHOT_ENABLE          (1 << 1)
  427. #define BRW_SF_CTL_SNAPSHOT_ENABLE                 (1 << 0)
  428.  
  429. #define BRW_SF_STRG_VAL                0x7b04
  430. #define BRW_SF_RDATA                   0x7b18
  431.  
  432. #define BRW_WIZ_CTL                    0x7c00
  433. #define BRW_WIZ_CTL_SNAPSHOT_COMPLETE              (1 << 31)
  434. #define BRW_WIZ_CTL_SUBSPAN_INSTANCE_SHIFT         16
  435. #define BRW_WIZ_CTL_SNAPSHOT_MUX_WIZ_KERNEL_POINTER   (0 << 8)
  436. #define BRW_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE     (1 << 8)
  437. #define BRW_WIZ_CTL_SNAPSHOT_MUX_PRIMITIVE_SEQUENCE   (2 << 8)
  438. #define BRW_WIZ_CTL_SINGLE_SUBSPAN_DISPATCH           (1 << 6)
  439. #define BRW_WIZ_CTL_IGNORE_COLOR_SCOREBOARD_STALLS    (1 << 5)
  440. #define BRW_WIZ_CTL_ENABLE_SUBSPAN_INSTANCE_COMPARE   (1 << 4)
  441. #define BRW_WIZ_CTL_USE_UPSTREAM_SNAPSHOT_FLAG        (1 << 3)
  442. #define BRW_WIZ_CTL_SNAPSHOT_ALL_THREADS              (1 << 2)
  443. #define BRW_WIZ_CTL_THREAD_SNAPSHOT_ENABLE            (1 << 1)
  444. #define BRW_WIZ_CTL_SNAPSHOT_ENABLE                   (1 << 0)
  445.  
  446. #define BRW_WIZ_STRG_VAL                              0x7c04
  447. #define BRW_WIZ_RDATA                                 0x7c18
  448.  
  449. #define BRW_TS_CTL                     0x7e00
  450. #define BRW_TS_CTL_SNAPSHOT_COMPLETE               (1 << 31)
  451. #define BRW_TS_CTL_SNAPSHOT_MESSAGE_ERROR          (0 << 8)
  452. #define BRW_TS_CTL_SNAPSHOT_INTERFACE_DESCRIPTOR   (3 << 8)
  453. #define BRW_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS      (1 << 2)
  454. #define BRW_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS       (1 << 1)
  455. #define BRW_TS_CTL_SNAPSHOT_ENABLE                 (1 << 0)
  456.  
  457. #define BRW_TS_STRG_VAL                0x7e04
  458. #define BRW_TS_RDATA                   0x7e08
  459.  
  460. #define BRW_TD_CTL                     0x8000
  461. #define BRW_TD_CTL_MUX_SHIFT           8
  462. #define BRW_TD_CTL_EXTERNAL_HALT_R0_DEBUG_MATCH    (1 << 7)
  463. #define BRW_TD_CTL_FORCE_EXTERNAL_HALT             (1 << 6)
  464. #define BRW_TD_CTL_EXCEPTION_MASK_OVERRIDE         (1 << 5)
  465. #define BRW_TD_CTL_FORCE_THREAD_BREAKPOINT_ENABLE  (1 << 4)
  466. #define BRW_TD_CTL_BREAKPOINT_ENABLE               (1 << 2)
  467. #define BRW_TD_CTL2                    0x8004
  468. #define BRW_TD_CTL2_ILLEGAL_OPCODE_EXCEPTION_OVERRIDE (1 << 28)
  469. #define BRW_TD_CTL2_MASKSTACK_EXCEPTION_OVERRIDE      (1 << 26)
  470. #define BRW_TD_CTL2_SOFTWARE_EXCEPTION_OVERRIDE       (1 << 25)
  471. #define BRW_TD_CTL2_ACTIVE_THREAD_LIMIT_SHIFT         16
  472. #define BRW_TD_CTL2_ACTIVE_THREAD_LIMIT_ENABLE        (1 << 8)
  473. #define BRW_TD_CTL2_THREAD_SPAWNER_EXECUTION_MASK_ENABLE (1 << 7)
  474. #define BRW_TD_CTL2_WIZ_EXECUTION_MASK_ENABLE         (1 << 6)
  475. #define BRW_TD_CTL2_SF_EXECUTION_MASK_ENABLE          (1 << 5)
  476. #define BRW_TD_CTL2_CLIPPER_EXECUTION_MASK_ENABLE     (1 << 4)
  477. #define BRW_TD_CTL2_GS_EXECUTION_MASK_ENABLE          (1 << 3)
  478. #define BRW_TD_CTL2_VS_EXECUTION_MASK_ENABLE          (1 << 0)
  479. #define BRW_TD_VF_VS_EMSK              0x8008
  480. #define BRW_TD_GS_EMSK                 0x800c
  481. #define BRW_TD_CLIP_EMSK               0x8010
  482. #define BRW_TD_SF_EMSK                 0x8014
  483. #define BRW_TD_WIZ_EMSK                0x8018
  484. #define BRW_TD_0_6_EHTRG_VAL           0x801c
  485. #define BRW_TD_0_7_EHTRG_VAL           0x8020
  486. #define BRW_TD_0_6_EHTRG_MSK           0x8024
  487. #define BRW_TD_0_7_EHTRG_MSK           0x8028
  488. #define BRW_TD_RDATA                   0x802c
  489. #define BRW_TD_TS_EMSK                 0x8030
  490.  
  491. #define BRW_EU_CTL                     0x8800
  492. #define BRW_EU_CTL_SELECT_SHIFT        16
  493. #define BRW_EU_CTL_DATA_MUX_SHIFT      8
  494. #define BRW_EU_ATT_0                   0x8810
  495. #define BRW_EU_ATT_1                   0x8814
  496. #define BRW_EU_ATT_DATA_0              0x8820
  497. #define BRW_EU_ATT_DATA_1              0x8824
  498. #define BRW_EU_ATT_CLR_0               0x8830
  499. #define BRW_EU_ATT_CLR_1               0x8834
  500. #define BRW_EU_RDATA                   0x8840
  501.  
  502. /* End regs for broadwater */
  503.  
  504.