1428d7b3dSmrg/**************************************************************************
2428d7b3dSmrg *
3428d7b3dSmrg * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
4428d7b3dSmrg * All Rights Reserved.
5428d7b3dSmrg *
6428d7b3dSmrg * Permission is hereby granted, free of charge, to any person obtaining a
7428d7b3dSmrg * copy of this software and associated documentation files (the
8428d7b3dSmrg * "Software"), to deal in the Software without restriction, including
9428d7b3dSmrg * without limitation the rights to use, copy, modify, merge, publish,
10428d7b3dSmrg * distribute, sub license, and/or sell copies of the Software, and to
11428d7b3dSmrg * permit persons to whom the Software is furnished to do so, subject to
12428d7b3dSmrg * the following conditions:
13428d7b3dSmrg *
14428d7b3dSmrg * The above copyright notice and this permission notice (including the
15428d7b3dSmrg * next paragraph) shall be included in all copies or substantial portions
16428d7b3dSmrg * of the Software.
17428d7b3dSmrg *
18428d7b3dSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19428d7b3dSmrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20428d7b3dSmrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21428d7b3dSmrg * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22428d7b3dSmrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23428d7b3dSmrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24428d7b3dSmrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25428d7b3dSmrg *
26428d7b3dSmrg **************************************************************************/
27428d7b3dSmrg
28428d7b3dSmrg/*
29428d7b3dSmrg * New regs for broadwater -- we need to split this file up sensibly somehow.
30428d7b3dSmrg */
31428d7b3dSmrg#define BRW_3D(Pipeline,Opcode,Subopcode) ((3 << 29) | \
32428d7b3dSmrg					   ((Pipeline) << 27) | \
33428d7b3dSmrg					   ((Opcode) << 24) | \
34428d7b3dSmrg					   ((Subopcode) << 16))
35428d7b3dSmrg
36428d7b3dSmrg#define BRW_URB_FENCE				BRW_3D(0, 0, 0)
37428d7b3dSmrg#define BRW_CS_URB_STATE			BRW_3D(0, 0, 1)
38428d7b3dSmrg#define BRW_CONSTANT_BUFFER			BRW_3D(0, 0, 2)
39428d7b3dSmrg#define BRW_STATE_PREFETCH			BRW_3D(0, 0, 3)
40428d7b3dSmrg
41428d7b3dSmrg#define BRW_STATE_BASE_ADDRESS			BRW_3D(0, 1, 1)
42428d7b3dSmrg#define BRW_STATE_SIP				BRW_3D(0, 1, 2)
43428d7b3dSmrg#define BRW_PIPELINE_SELECT			BRW_3D(0, 1, 4)
44428d7b3dSmrg
45428d7b3dSmrg#define NEW_PIPELINE_SELECT			BRW_3D(1, 1, 4)
46428d7b3dSmrg
47428d7b3dSmrg#define BRW_MEDIA_STATE_POINTERS		BRW_3D(2, 0, 0)
48428d7b3dSmrg#define BRW_MEDIA_OBJECT			BRW_3D(2, 1, 0)
49428d7b3dSmrg
50428d7b3dSmrg#define BRW_3DSTATE_PIPELINED_POINTERS		BRW_3D(3, 0, 0)
51428d7b3dSmrg#define BRW_3DSTATE_BINDING_TABLE_POINTERS	BRW_3D(3, 0, 1)
52428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_PS  (1 << 12)/* for GEN6 */
53428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_GS  (1 << 9) /* for GEN6 */
54428d7b3dSmrg# define GEN6_3DSTATE_BINDING_TABLE_MODIFY_VS  (1 << 8) /* for GEN6 */
55428d7b3dSmrg
56428d7b3dSmrg#define BRW_3DSTATE_VERTEX_BUFFERS		BRW_3D(3, 0, 8)
57428d7b3dSmrg#define BRW_3DSTATE_VERTEX_ELEMENTS		BRW_3D(3, 0, 9)
58428d7b3dSmrg#define BRW_3DSTATE_INDEX_BUFFER		BRW_3D(3, 0, 0xa)
59428d7b3dSmrg#define BRW_3DSTATE_VF_STATISTICS		BRW_3D(3, 0, 0xb)
60428d7b3dSmrg
61428d7b3dSmrg#define BRW_3DSTATE_DRAWING_RECTANGLE		BRW_3D(3, 1, 0)
62428d7b3dSmrg#define BRW_3DSTATE_CONSTANT_COLOR		BRW_3D(3, 1, 1)
63428d7b3dSmrg#define BRW_3DSTATE_SAMPLER_PALETTE_LOAD	BRW_3D(3, 1, 2)
64428d7b3dSmrg#define BRW_3DSTATE_CHROMA_KEY			BRW_3D(3, 1, 4)
65428d7b3dSmrg#define BRW_3DSTATE_DEPTH_BUFFER		BRW_3D(3, 1, 5)
66428d7b3dSmrg# define BRW_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT	29
67428d7b3dSmrg# define BRW_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT	18
68428d7b3dSmrg
69428d7b3dSmrg#define BRW_3DSTATE_POLY_STIPPLE_OFFSET		BRW_3D(3, 1, 6)
70428d7b3dSmrg#define BRW_3DSTATE_POLY_STIPPLE_PATTERN	BRW_3D(3, 1, 7)
71428d7b3dSmrg#define BRW_3DSTATE_LINE_STIPPLE		BRW_3D(3, 1, 8)
72428d7b3dSmrg#define BRW_3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP	BRW_3D(3, 1, 9)
73428d7b3dSmrg/* These two are BLC and CTG only, not BW or CL */
74428d7b3dSmrg#define BRW_3DSTATE_AA_LINE_PARAMS		BRW_3D(3, 1, 0xa)
75428d7b3dSmrg#define BRW_3DSTATE_GS_SVB_INDEX		BRW_3D(3, 1, 0xb)
76428d7b3dSmrg
77428d7b3dSmrg#define BRW_PIPE_CONTROL			BRW_3D(3, 2, 0)
78428d7b3dSmrg
79428d7b3dSmrg#define BRW_3DPRIMITIVE				BRW_3D(3, 3, 0)
80428d7b3dSmrg
81428d7b3dSmrg#define BRW_3DSTATE_CLEAR_PARAMS		BRW_3D(3, 1, 0x10)
82428d7b3dSmrg/* DW1 */
83428d7b3dSmrg# define BRW_3DSTATE_DEPTH_CLEAR_VALID		(1 << 15)
84428d7b3dSmrg
85428d7b3dSmrg/* for GEN6+ */
86428d7b3dSmrg#define GEN6_3DSTATE_SAMPLER_STATE_POINTERS	BRW_3D(3, 0, 0x02)
87428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS	(1 << 12)
88428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS	(1 << 9)
89428d7b3dSmrg# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS	(1 << 8)
90428d7b3dSmrg
91428d7b3dSmrg#define GEN6_3DSTATE_URB			BRW_3D(3, 0, 0x05)
92428d7b3dSmrg/* DW1 */
93428d7b3dSmrg# define GEN6_3DSTATE_URB_VS_SIZE_SHIFT		16
94428d7b3dSmrg# define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT	0
95428d7b3dSmrg/* DW2 */
96428d7b3dSmrg# define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT	8
97428d7b3dSmrg# define GEN6_3DSTATE_URB_GS_SIZE_SHIFT		0
98428d7b3dSmrg
99428d7b3dSmrg#define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS	BRW_3D(3, 0, 0x0d)
100428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC		(1 << 12)
101428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF		(1 << 11)
102428d7b3dSmrg# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP	(1 << 10)
103428d7b3dSmrg
104428d7b3dSmrg#define GEN6_3DSTATE_CC_STATE_POINTERS		BRW_3D(3, 0, 0x0e)
105428d7b3dSmrg
106428d7b3dSmrg#define GEN6_3DSTATE_VS				BRW_3D(3, 0, 0x10)
107428d7b3dSmrg
108428d7b3dSmrg#define GEN6_3DSTATE_GS				BRW_3D(3, 0, 0x11)
109428d7b3dSmrg/* DW4 */
110428d7b3dSmrg# define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT	0
111428d7b3dSmrg
112428d7b3dSmrg#define GEN6_3DSTATE_CLIP			BRW_3D(3, 0, 0x12)
113428d7b3dSmrg
114428d7b3dSmrg#define GEN6_3DSTATE_SF				BRW_3D(3, 0, 0x13)
115428d7b3dSmrg/* DW1 */
116428d7b3dSmrg# define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT		22
117428d7b3dSmrg# define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT	11
118428d7b3dSmrg# define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT	4
119428d7b3dSmrg/* DW2 */
120428d7b3dSmrg/* DW3 */
121428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_BOTH			(0 << 29)
122428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_NONE			(1 << 29)
123428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_FRONT			(2 << 29)
124428d7b3dSmrg# define GEN6_3DSTATE_SF_CULL_BACK			(3 << 29)
125428d7b3dSmrg/* DW4 */
126428d7b3dSmrg# define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT		29
127428d7b3dSmrg# define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT		27
128428d7b3dSmrg# define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT		25
129428d7b3dSmrg
130428d7b3dSmrg
131428d7b3dSmrg#define GEN6_3DSTATE_WM				BRW_3D(3, 0, 0x14)
132428d7b3dSmrg/* DW2 */
133428d7b3dSmrg# define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF			27
134428d7b3dSmrg# define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT	18
135428d7b3dSmrg/* DW4 */
136428d7b3dSmrg# define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT		16
137428d7b3dSmrg/* DW5 */
138428d7b3dSmrg# define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT			25
139428d7b3dSmrg# define GEN6_3DSTATE_WM_DISPATCH_ENABLE			(1 << 19)
140428d7b3dSmrg# define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE			(1 << 1)
141428d7b3dSmrg# define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE			(1 << 0)
142428d7b3dSmrg/* DW6 */
143428d7b3dSmrg# define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT			20
144428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC	(1 << 15)
145428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 14)
146428d7b3dSmrg# define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC	(1 << 13)
147428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC		(1 << 12)
148428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC	(1 << 11)
149428d7b3dSmrg# define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC		(1 << 10)
150428d7b3dSmrg
151428d7b3dSmrg
152428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_VS		BRW_3D(3, 0, 0x15)
153428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_GS          	BRW_3D(3, 0, 0x16)
154428d7b3dSmrg#define GEN6_3DSTATE_CONSTANT_PS          	BRW_3D(3, 0, 0x17)
155428d7b3dSmrg
156428d7b3dSmrg#define GEN6_3DSTATE_SAMPLE_MASK		BRW_3D(3, 0, 0x18)
157428d7b3dSmrg
158428d7b3dSmrg#define GEN6_3DSTATE_MULTISAMPLE		BRW_3D(3, 1, 0x0d)
159428d7b3dSmrg/* DW1 */
160428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER		(0 << 4)
161428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT	(1 << 4)
162428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1			(0 << 1)
163428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4			(2 << 1)
164428d7b3dSmrg# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8			(3 << 1)
165428d7b3dSmrg
166428d7b3dSmrg/* on GEN7+ */
167428d7b3dSmrg/* _3DSTATE_VERTEX_BUFFERS on GEN7*/
168428d7b3dSmrg/* DW1 */
169428d7b3dSmrg#define GEN7_VB0_ADDRESS_MODIFYENABLE   (1 << 14)
170428d7b3dSmrg
171428d7b3dSmrg/* _3DPRIMITIVE on GEN7 */
172428d7b3dSmrg/* DW1 */
173428d7b3dSmrg# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL     (0 << 8)
174428d7b3dSmrg# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM         (1 << 8)
175428d7b3dSmrg
176428d7b3dSmrg/* 3DSTATE_WM on GEN7 */
177428d7b3dSmrg/* DW1 */
178428d7b3dSmrg# define GEN7_WM_STATISTICS_ENABLE                              (1 << 31)
179428d7b3dSmrg# define GEN7_WM_DEPTH_CLEAR                                    (1 << 30)
180428d7b3dSmrg# define GEN7_WM_DISPATCH_ENABLE                                (1 << 29)
181428d7b3dSmrg# define GEN6_WM_DEPTH_RESOLVE                                  (1 << 28)
182428d7b3dSmrg# define GEN7_WM_HIERARCHICAL_DEPTH_RESOLVE                     (1 << 27)
183428d7b3dSmrg# define GEN7_WM_KILL_ENABLE                                    (1 << 25)
184428d7b3dSmrg# define GEN7_WM_PSCDEPTH_OFF                                   (0 << 23)
185428d7b3dSmrg# define GEN7_WM_PSCDEPTH_ON                                    (1 << 23)
186428d7b3dSmrg# define GEN7_WM_PSCDEPTH_ON_GE                                 (2 << 23)
187428d7b3dSmrg# define GEN7_WM_PSCDEPTH_ON_LE                                 (3 << 23)
188428d7b3dSmrg# define GEN7_WM_USES_SOURCE_DEPTH                              (1 << 20)
189428d7b3dSmrg# define GEN7_WM_USES_SOURCE_W                                  (1 << 19)
190428d7b3dSmrg# define GEN7_WM_POSITION_ZW_PIXEL                              (0 << 17)
191428d7b3dSmrg# define GEN7_WM_POSITION_ZW_CENTROID                           (2 << 17)
192428d7b3dSmrg# define GEN7_WM_POSITION_ZW_SAMPLE                             (3 << 17)
193428d7b3dSmrg# define GEN7_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC              (1 << 16)
194428d7b3dSmrg# define GEN7_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC            (1 << 15)
195428d7b3dSmrg# define GEN7_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC               (1 << 14)
196428d7b3dSmrg# define GEN7_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC                 (1 << 13)
197428d7b3dSmrg# define GEN7_WM_PERSPECTIVE_CENTROID_BARYCENTRIC               (1 << 12)
198428d7b3dSmrg# define GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC                  (1 << 11)
199428d7b3dSmrg# define GEN7_WM_USES_INPUT_COVERAGE_MASK                       (1 << 10)
200428d7b3dSmrg# define GEN7_WM_LINE_END_CAP_AA_WIDTH_0_5                      (0 << 8)
201428d7b3dSmrg# define GEN7_WM_LINE_END_CAP_AA_WIDTH_1_0                      (1 << 8)
202428d7b3dSmrg# define GEN7_WM_LINE_END_CAP_AA_WIDTH_2_0                      (2 << 8)
203428d7b3dSmrg# define GEN7_WM_LINE_END_CAP_AA_WIDTH_4_0                      (3 << 8)
204428d7b3dSmrg# define GEN7_WM_LINE_AA_WIDTH_0_5                              (0 << 6)
205428d7b3dSmrg# define GEN7_WM_LINE_AA_WIDTH_1_0                              (1 << 6)
206428d7b3dSmrg# define GEN7_WM_LINE_AA_WIDTH_2_0                              (2 << 6)
207428d7b3dSmrg# define GEN7_WM_LINE_AA_WIDTH_4_0                              (3 << 6)
208428d7b3dSmrg# define GEN7_WM_POLYGON_STIPPLE_ENABLE                         (1 << 4)
209428d7b3dSmrg# define GEN7_WM_LINE_STIPPLE_ENABLE                            (1 << 3)
210428d7b3dSmrg# define GEN7_WM_POINT_RASTRULE_UPPER_RIGHT                     (1 << 2)
211428d7b3dSmrg# define GEN7_WM_MSRAST_OFF_PIXEL                               (0 << 0)
212428d7b3dSmrg# define GEN7_WM_MSRAST_OFF_PATTERN                             (1 << 0)
213428d7b3dSmrg# define GEN7_WM_MSRAST_ON_PIXEL                                (2 << 0)
214428d7b3dSmrg# define GEN7_WM_MSRAST_ON_PATTERN                              (3 << 0)
215428d7b3dSmrg/* DW2 */
216428d7b3dSmrg# define GEN7_WM_MSDISPMODE_PERPIXEL                            (1 << 31)
217428d7b3dSmrg
218428d7b3dSmrg#define GEN7_3DSTATE_CLEAR_PARAMS               BRW_3D(3, 0, 0x04)
219428d7b3dSmrg#define GEN7_3DSTATE_DEPTH_BUFFER               BRW_3D(3, 0, 0x05)
220428d7b3dSmrg
221428d7b3dSmrg#define GEN7_3DSTATE_CONSTANT_HS                BRW_3D(3, 0, 0x19)
222428d7b3dSmrg#define GEN7_3DSTATE_CONSTANT_DS                BRW_3D(3, 0, 0x1a)
223428d7b3dSmrg
224428d7b3dSmrg#define GEN7_3DSTATE_HS                         BRW_3D(3, 0, 0x1b)
225428d7b3dSmrg#define GEN7_3DSTATE_TE                         BRW_3D(3, 0, 0x1c)
226428d7b3dSmrg#define GEN7_3DSTATE_DS                         BRW_3D(3, 0, 0x1d)
227428d7b3dSmrg#define GEN7_3DSTATE_STREAMOUT                  BRW_3D(3, 0, 0x1e)
228428d7b3dSmrg#define GEN7_3DSTATE_SBE                        BRW_3D(3, 0, 0x1f)
229428d7b3dSmrg
230428d7b3dSmrg/* DW1 */
231428d7b3dSmrg# define GEN7_SBE_SWIZZLE_CONTROL_MODE          (1 << 28)
232428d7b3dSmrg# define GEN7_SBE_NUM_OUTPUTS_SHIFT             22
233428d7b3dSmrg# define GEN7_SBE_SWIZZLE_ENABLE                (1 << 21)
234428d7b3dSmrg# define GEN7_SBE_POINT_SPRITE_LOWERLEFT        (1 << 20)
235428d7b3dSmrg# define GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT   11
236428d7b3dSmrg# define GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT   4
237428d7b3dSmrg
238428d7b3dSmrg#define GEN7_3DSTATE_PS                                 BRW_3D(3, 0, 0x20)
239428d7b3dSmrg/* DW1: kernel pointer */
240428d7b3dSmrg/* DW2 */
241428d7b3dSmrg# define GEN7_PS_SPF_MODE                               (1 << 31)
242428d7b3dSmrg# define GEN7_PS_VECTOR_MASK_ENABLE                     (1 << 30)
243428d7b3dSmrg# define GEN7_PS_SAMPLER_COUNT_SHIFT                    27
244428d7b3dSmrg# define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT        18
245428d7b3dSmrg# define GEN7_PS_FLOATING_POINT_MODE_IEEE_754           (0 << 16)
246428d7b3dSmrg# define GEN7_PS_FLOATING_POINT_MODE_ALT                (1 << 16)
247428d7b3dSmrg/* DW3: scratch space */
248428d7b3dSmrg/* DW4 */
249428d7b3dSmrg# define GEN7_PS_MAX_THREADS_SHIFT_IVB                  24
250428d7b3dSmrg# define GEN7_PS_MAX_THREADS_SHIFT_HSW                  23
251428d7b3dSmrg# define GEN7_PS_SAMPLE_MASK_SHIFT_HSW			12
252428d7b3dSmrg# define GEN7_PS_PUSH_CONSTANT_ENABLE                   (1 << 11)
253428d7b3dSmrg# define GEN7_PS_ATTRIBUTE_ENABLE                       (1 << 10)
254428d7b3dSmrg# define GEN7_PS_OMASK_TO_RENDER_TARGET                 (1 << 9)
255428d7b3dSmrg# define GEN7_PS_DUAL_SOURCE_BLEND_ENABLE               (1 << 7)
256428d7b3dSmrg# define GEN7_PS_POSOFFSET_NONE                         (0 << 3)
257428d7b3dSmrg# define GEN7_PS_POSOFFSET_CENTROID                     (2 << 3)
258428d7b3dSmrg# define GEN7_PS_POSOFFSET_SAMPLE                       (3 << 3)
259428d7b3dSmrg# define GEN7_PS_32_DISPATCH_ENABLE                     (1 << 2)
260428d7b3dSmrg# define GEN7_PS_16_DISPATCH_ENABLE                     (1 << 1)
261428d7b3dSmrg# define GEN7_PS_8_DISPATCH_ENABLE                      (1 << 0)
262428d7b3dSmrg/* DW5 */
263428d7b3dSmrg# define GEN7_PS_DISPATCH_START_GRF_SHIFT_0             16
264428d7b3dSmrg# define GEN7_PS_DISPATCH_START_GRF_SHIFT_1             8
265428d7b3dSmrg# define GEN7_PS_DISPATCH_START_GRF_SHIFT_2             0
266428d7b3dSmrg/* DW6: kernel 1 pointer */
267428d7b3dSmrg/* DW7: kernel 2 pointer */
268428d7b3dSmrg
269428d7b3dSmrg#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL      BRW_3D(3, 0, 0x21)
270428d7b3dSmrg#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC         BRW_3D(3, 0, 0x23)
271428d7b3dSmrg
272428d7b3dSmrg#define GEN7_3DSTATE_BLEND_STATE_POINTERS               BRW_3D(3, 0, 0x24)
273428d7b3dSmrg#define GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS       BRW_3D(3, 0, 0x25)
274428d7b3dSmrg
275428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS          BRW_3D(3, 0, 0x26)
276428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS          BRW_3D(3, 0, 0x27)
277428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS          BRW_3D(3, 0, 0x28)
278428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS          BRW_3D(3, 0, 0x29)
279428d7b3dSmrg#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS          BRW_3D(3, 0, 0x2a)
280428d7b3dSmrg
281428d7b3dSmrg#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS          BRW_3D(3, 0, 0x2b)
282428d7b3dSmrg#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS          BRW_3D(3, 0, 0x2e)
283428d7b3dSmrg#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS          BRW_3D(3, 0, 0x2f)
284428d7b3dSmrg
285428d7b3dSmrg#define GEN7_3DSTATE_URB_VS                             BRW_3D(3, 0, 0x30)
286428d7b3dSmrg#define GEN7_3DSTATE_URB_HS                             BRW_3D(3, 0, 0x31)
287428d7b3dSmrg#define GEN7_3DSTATE_URB_DS                             BRW_3D(3, 0, 0x32)
288428d7b3dSmrg#define GEN7_3DSTATE_URB_GS                             BRW_3D(3, 0, 0x33)
289428d7b3dSmrg/* DW1 */
290428d7b3dSmrg# define GEN7_URB_ENTRY_NUMBER_SHIFT            0
291428d7b3dSmrg# define GEN7_URB_ENTRY_SIZE_SHIFT              16
292428d7b3dSmrg# define GEN7_URB_STARTING_ADDRESS_SHIFT        25
293428d7b3dSmrg
294428d7b3dSmrg#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS             BRW_3D(3, 1, 0x12)
295428d7b3dSmrg#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS             BRW_3D(3, 1, 0x16)
296428d7b3dSmrg/* DW1 */
297428d7b3dSmrg# define GEN7_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16
298428d7b3dSmrg
299428d7b3dSmrg
300428d7b3dSmrg#define PIPELINE_SELECT_3D		0
301428d7b3dSmrg#define PIPELINE_SELECT_MEDIA		1
302428d7b3dSmrg
303428d7b3dSmrg#define UF0_CS_REALLOC			(1 << 13)
304428d7b3dSmrg#define UF0_VFE_REALLOC			(1 << 12)
305428d7b3dSmrg#define UF0_SF_REALLOC			(1 << 11)
306428d7b3dSmrg#define UF0_CLIP_REALLOC		(1 << 10)
307428d7b3dSmrg#define UF0_GS_REALLOC			(1 << 9)
308428d7b3dSmrg#define UF0_VS_REALLOC			(1 << 8)
309428d7b3dSmrg#define UF1_CLIP_FENCE_SHIFT		20
310428d7b3dSmrg#define UF1_GS_FENCE_SHIFT		10
311428d7b3dSmrg#define UF1_VS_FENCE_SHIFT		0
312428d7b3dSmrg#define UF2_CS_FENCE_SHIFT		20
313428d7b3dSmrg#define UF2_VFE_FENCE_SHIFT		10
314428d7b3dSmrg#define UF2_SF_FENCE_SHIFT		0
315428d7b3dSmrg
316428d7b3dSmrg/* for BRW_STATE_BASE_ADDRESS */
317428d7b3dSmrg#define BASE_ADDRESS_MODIFY		(1 << 0)
318428d7b3dSmrg
319428d7b3dSmrg/* for BRW_3DSTATE_PIPELINED_POINTERS */
320428d7b3dSmrg#define BRW_GS_DISABLE		       0
321428d7b3dSmrg#define BRW_GS_ENABLE		       1
322428d7b3dSmrg#define BRW_CLIP_DISABLE	       0
323428d7b3dSmrg#define BRW_CLIP_ENABLE		       1
324428d7b3dSmrg
325428d7b3dSmrg/* for BRW_PIPE_CONTROL */
326428d7b3dSmrg#define BRW_PIPE_CONTROL_CS_STALL      (1 << 20)
327428d7b3dSmrg#define BRW_PIPE_CONTROL_NOWRITE       (0 << 14)
328428d7b3dSmrg#define BRW_PIPE_CONTROL_WRITE_QWORD   (1 << 14)
329428d7b3dSmrg#define BRW_PIPE_CONTROL_WRITE_DEPTH   (2 << 14)
330428d7b3dSmrg#define BRW_PIPE_CONTROL_WRITE_TIME    (3 << 14)
331428d7b3dSmrg#define BRW_PIPE_CONTROL_DEPTH_STALL   (1 << 13)
332428d7b3dSmrg#define BRW_PIPE_CONTROL_WC_FLUSH      (1 << 12)
333428d7b3dSmrg#define BRW_PIPE_CONTROL_IS_FLUSH      (1 << 11)
334428d7b3dSmrg#define BRW_PIPE_CONTROL_TC_FLUSH      (1 << 10)
335428d7b3dSmrg#define BRW_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8)
336428d7b3dSmrg#define BRW_PIPE_CONTROL_GLOBAL_GTT    (1 << 2)
337428d7b3dSmrg#define BRW_PIPE_CONTROL_LOCAL_PGTT    (0 << 2)
338428d7b3dSmrg#define BRW_PIPE_CONTROL_STALL_AT_SCOREBOARD    (1 << 1)
339428d7b3dSmrg#define BRW_PIPE_CONTROL_DEPTH_CACHE_FLUSH	(1 << 0)
340428d7b3dSmrg
341428d7b3dSmrg/* VERTEX_BUFFER_STATE Structure */
342428d7b3dSmrg#define VB0_BUFFER_INDEX_SHIFT		27
343428d7b3dSmrg#define GEN6_VB0_BUFFER_INDEX_SHIFT	26
344428d7b3dSmrg#define VB0_VERTEXDATA			(0 << 26)
345428d7b3dSmrg#define VB0_INSTANCEDATA		(1 << 26)
346428d7b3dSmrg#define GEN6_VB0_VERTEXDATA		(0 << 20)
347428d7b3dSmrg#define GEN6_VB0_INSTANCEDATA		(1 << 20)
348428d7b3dSmrg#define VB0_BUFFER_PITCH_SHIFT		0
349428d7b3dSmrg
350428d7b3dSmrg/* VERTEX_ELEMENT_STATE Structure */
351428d7b3dSmrg#define VE0_VERTEX_BUFFER_INDEX_SHIFT	27
352428d7b3dSmrg#define GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT	26 /* for GEN6 */
353428d7b3dSmrg#define VE0_VALID			(1 << 26)
354428d7b3dSmrg#define GEN6_VE0_VALID			(1 << 25) /* for GEN6 */
355428d7b3dSmrg#define VE0_FORMAT_SHIFT		16
356428d7b3dSmrg#define VE0_OFFSET_SHIFT		0
357428d7b3dSmrg#define VE1_VFCOMPONENT_0_SHIFT		28
358428d7b3dSmrg#define VE1_VFCOMPONENT_1_SHIFT		24
359428d7b3dSmrg#define VE1_VFCOMPONENT_2_SHIFT		20
360428d7b3dSmrg#define VE1_VFCOMPONENT_3_SHIFT		16
361428d7b3dSmrg#define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT	0
362428d7b3dSmrg
363428d7b3dSmrg/* 3DPRIMITIVE bits */
364428d7b3dSmrg#define BRW_3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15)
365428d7b3dSmrg#define BRW_3DPRIMITIVE_VERTEX_RANDOM	  (1 << 15)
366428d7b3dSmrg/* Primitive types are in brw_defines.h */
367428d7b3dSmrg#define BRW_3DPRIMITIVE_TOPOLOGY_SHIFT	  10
368428d7b3dSmrg
369428d7b3dSmrg#define BRW_SVG_CTL		       0x7400
370428d7b3dSmrg
371428d7b3dSmrg#define BRW_SVG_CTL_GS_BA	       (0 << 8)
372428d7b3dSmrg#define BRW_SVG_CTL_SS_BA	       (1 << 8)
373428d7b3dSmrg#define BRW_SVG_CTL_IO_BA	       (2 << 8)
374428d7b3dSmrg#define BRW_SVG_CTL_GS_AUB	       (3 << 8)
375428d7b3dSmrg#define BRW_SVG_CTL_IO_AUB	       (4 << 8)
376428d7b3dSmrg#define BRW_SVG_CTL_SIP		       (5 << 8)
377428d7b3dSmrg
378428d7b3dSmrg#define BRW_SVG_RDATA		       0x7404
379428d7b3dSmrg#define BRW_SVG_WORK_CTL	       0x7408
380428d7b3dSmrg
381428d7b3dSmrg#define BRW_VF_CTL		       0x7500
382428d7b3dSmrg
383428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
384428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID	   (0 << 8)
385428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_MUX_SELECT_VF_DEBUG	   (1 << 8)
386428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_SEQUENCE   (0 << 4)
387428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX	   (1 << 4)
388428d7b3dSmrg#define BRW_VF_CTL_SKIP_INITIAL_PRIMITIVES	   (1 << 3)
389428d7b3dSmrg#define BRW_VF_CTL_MAX_PRIMITIVES_LIMIT_ENABLE	   (1 << 2)
390428d7b3dSmrg#define BRW_VF_CTL_VERTEX_RANGE_LIMIT_ENABLE	   (1 << 1)
391428d7b3dSmrg#define BRW_VF_CTL_SNAPSHOT_ENABLE	     	   (1 << 0)
392428d7b3dSmrg
393428d7b3dSmrg#define BRW_VF_STRG_VAL		       0x7504
394428d7b3dSmrg#define BRW_VF_STR_VL_OVR	       0x7508
395428d7b3dSmrg#define BRW_VF_VC_OVR		       0x750c
396428d7b3dSmrg#define BRW_VF_STR_PSKIP	       0x7510
397428d7b3dSmrg#define BRW_VF_MAX_PRIM		       0x7514
398428d7b3dSmrg#define BRW_VF_RDATA		       0x7518
399428d7b3dSmrg
400428d7b3dSmrg#define BRW_VS_CTL		       0x7600
401428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
402428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_MUX_VERTEX_0	   (0 << 8)
403428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_MUX_VERTEX_1	   (1 << 8)
404428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_MUX_VALID_COUNT	   (2 << 8)
405428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_MUX_VS_KERNEL_POINTER  (3 << 8)
406428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_ALL_THREADS		   (1 << 2)
407428d7b3dSmrg#define BRW_VS_CTL_THREAD_SNAPSHOT_ENABLE	   (1 << 1)
408428d7b3dSmrg#define BRW_VS_CTL_SNAPSHOT_ENABLE		   (1 << 0)
409428d7b3dSmrg
410428d7b3dSmrg#define BRW_VS_STRG_VAL		       0x7604
411428d7b3dSmrg#define BRW_VS_RDATA		       0x7608
412428d7b3dSmrg
413428d7b3dSmrg#define BRW_SF_CTL		       0x7b00
414428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
415428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_0_FF_ID	   (0 << 8)
416428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_0_REL_COUNT (1 << 8)
417428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_1_FF_ID	   (2 << 8)
418428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_1_REL_COUNT (3 << 8)
419428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_2_FF_ID	   (4 << 8)
420428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_2_REL_COUNT (5 << 8)
421428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT	   (6 << 8)
422428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_MUX_SF_KERNEL_POINTER  (7 << 8)
423428d7b3dSmrg#define BRW_SF_CTL_MIN_MAX_PRIMITIVE_RANGE_ENABLE  (1 << 4)
424428d7b3dSmrg#define BRW_SF_CTL_DEBUG_CLIP_RECTANGLE_ENABLE	   (1 << 3)
425428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_ALL_THREADS		   (1 << 2)
426428d7b3dSmrg#define BRW_SF_CTL_THREAD_SNAPSHOT_ENABLE	   (1 << 1)
427428d7b3dSmrg#define BRW_SF_CTL_SNAPSHOT_ENABLE		   (1 << 0)
428428d7b3dSmrg
429428d7b3dSmrg#define BRW_SF_STRG_VAL		       0x7b04
430428d7b3dSmrg#define BRW_SF_RDATA		       0x7b18
431428d7b3dSmrg
432428d7b3dSmrg#define BRW_WIZ_CTL		       0x7c00
433428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
434428d7b3dSmrg#define BRW_WIZ_CTL_SUBSPAN_INSTANCE_SHIFT	   16
435428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_MUX_WIZ_KERNEL_POINTER   (0 << 8)
436428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE     (1 << 8)
437428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_MUX_PRIMITIVE_SEQUENCE   (2 << 8)
438428d7b3dSmrg#define BRW_WIZ_CTL_SINGLE_SUBSPAN_DISPATCH	      (1 << 6)
439428d7b3dSmrg#define BRW_WIZ_CTL_IGNORE_COLOR_SCOREBOARD_STALLS    (1 << 5)
440428d7b3dSmrg#define BRW_WIZ_CTL_ENABLE_SUBSPAN_INSTANCE_COMPARE   (1 << 4)
441428d7b3dSmrg#define BRW_WIZ_CTL_USE_UPSTREAM_SNAPSHOT_FLAG	      (1 << 3)
442428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_ALL_THREADS	      (1 << 2)
443428d7b3dSmrg#define BRW_WIZ_CTL_THREAD_SNAPSHOT_ENABLE	      (1 << 1)
444428d7b3dSmrg#define BRW_WIZ_CTL_SNAPSHOT_ENABLE		      (1 << 0)
445428d7b3dSmrg
446428d7b3dSmrg#define BRW_WIZ_STRG_VAL			      0x7c04
447428d7b3dSmrg#define BRW_WIZ_RDATA				      0x7c18
448428d7b3dSmrg
449428d7b3dSmrg#define BRW_TS_CTL		       0x7e00
450428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_COMPLETE		   (1 << 31)
451428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_MESSAGE_ERROR	   (0 << 8)
452428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_INTERFACE_DESCRIPTOR   (3 << 8)
453428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS	   (1 << 2)
454428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS  	   (1 << 1)
455428d7b3dSmrg#define BRW_TS_CTL_SNAPSHOT_ENABLE		   (1 << 0)
456428d7b3dSmrg
457428d7b3dSmrg#define BRW_TS_STRG_VAL		       0x7e04
458428d7b3dSmrg#define BRW_TS_RDATA		       0x7e08
459428d7b3dSmrg
460428d7b3dSmrg#define BRW_TD_CTL		       0x8000
461428d7b3dSmrg#define BRW_TD_CTL_MUX_SHIFT	       8
462428d7b3dSmrg#define BRW_TD_CTL_EXTERNAL_HALT_R0_DEBUG_MATCH	   (1 << 7)
463428d7b3dSmrg#define BRW_TD_CTL_FORCE_EXTERNAL_HALT		   (1 << 6)
464428d7b3dSmrg#define BRW_TD_CTL_EXCEPTION_MASK_OVERRIDE	   (1 << 5)
465428d7b3dSmrg#define BRW_TD_CTL_FORCE_THREAD_BREAKPOINT_ENABLE  (1 << 4)
466428d7b3dSmrg#define BRW_TD_CTL_BREAKPOINT_ENABLE		   (1 << 2)
467428d7b3dSmrg#define BRW_TD_CTL2		       0x8004
468428d7b3dSmrg#define BRW_TD_CTL2_ILLEGAL_OPCODE_EXCEPTION_OVERRIDE (1 << 28)
469428d7b3dSmrg#define BRW_TD_CTL2_MASKSTACK_EXCEPTION_OVERRIDE      (1 << 26)
470428d7b3dSmrg#define BRW_TD_CTL2_SOFTWARE_EXCEPTION_OVERRIDE	      (1 << 25)
471428d7b3dSmrg#define BRW_TD_CTL2_ACTIVE_THREAD_LIMIT_SHIFT	      16
472428d7b3dSmrg#define BRW_TD_CTL2_ACTIVE_THREAD_LIMIT_ENABLE	      (1 << 8)
473428d7b3dSmrg#define BRW_TD_CTL2_THREAD_SPAWNER_EXECUTION_MASK_ENABLE (1 << 7)
474428d7b3dSmrg#define BRW_TD_CTL2_WIZ_EXECUTION_MASK_ENABLE	      (1 << 6)
475428d7b3dSmrg#define BRW_TD_CTL2_SF_EXECUTION_MASK_ENABLE	      (1 << 5)
476428d7b3dSmrg#define BRW_TD_CTL2_CLIPPER_EXECUTION_MASK_ENABLE     (1 << 4)
477428d7b3dSmrg#define BRW_TD_CTL2_GS_EXECUTION_MASK_ENABLE	      (1 << 3)
478428d7b3dSmrg#define BRW_TD_CTL2_VS_EXECUTION_MASK_ENABLE	      (1 << 0)
479428d7b3dSmrg#define BRW_TD_VF_VS_EMSK	       0x8008
480428d7b3dSmrg#define BRW_TD_GS_EMSK		       0x800c
481428d7b3dSmrg#define BRW_TD_CLIP_EMSK	       0x8010
482428d7b3dSmrg#define BRW_TD_SF_EMSK		       0x8014
483428d7b3dSmrg#define BRW_TD_WIZ_EMSK		       0x8018
484428d7b3dSmrg#define BRW_TD_0_6_EHTRG_VAL	       0x801c
485428d7b3dSmrg#define BRW_TD_0_7_EHTRG_VAL	       0x8020
486428d7b3dSmrg#define BRW_TD_0_6_EHTRG_MSK           0x8024
487428d7b3dSmrg#define BRW_TD_0_7_EHTRG_MSK	       0x8028
488428d7b3dSmrg#define BRW_TD_RDATA		       0x802c
489428d7b3dSmrg#define BRW_TD_TS_EMSK		       0x8030
490428d7b3dSmrg
491428d7b3dSmrg#define BRW_EU_CTL		       0x8800
492428d7b3dSmrg#define BRW_EU_CTL_SELECT_SHIFT	       16
493428d7b3dSmrg#define BRW_EU_CTL_DATA_MUX_SHIFT      8
494428d7b3dSmrg#define BRW_EU_ATT_0		       0x8810
495428d7b3dSmrg#define BRW_EU_ATT_1		       0x8814
496428d7b3dSmrg#define BRW_EU_ATT_DATA_0	       0x8820
497428d7b3dSmrg#define BRW_EU_ATT_DATA_1	       0x8824
498428d7b3dSmrg#define BRW_EU_ATT_CLR_0	       0x8830
499428d7b3dSmrg#define BRW_EU_ATT_CLR_1	       0x8834
500428d7b3dSmrg#define BRW_EU_RDATA		       0x8840
501428d7b3dSmrg
502428d7b3dSmrg/* End regs for broadwater */
503428d7b3dSmrg
504