xref: /aosp_15_r20/external/igt-gpu-tools/lib/gen4_render.h (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Worker #ifndef GEN4_RENDER_H
2*d83cc019SAndroid Build Coastguard Worker #define GEN4_RENDER_H
3*d83cc019SAndroid Build Coastguard Worker 
4*d83cc019SAndroid Build Coastguard Worker #include <stdint.h>
5*d83cc019SAndroid Build Coastguard Worker 
6*d83cc019SAndroid Build Coastguard Worker #define GEN4_3D(Pipeline, Opcode, Subopcode)	((3 << 29) | \
7*d83cc019SAndroid Build Coastguard Worker 						((Pipeline) << 27) | \
8*d83cc019SAndroid Build Coastguard Worker 						((Opcode) << 24) | \
9*d83cc019SAndroid Build Coastguard Worker 						((Subopcode) << 16))
10*d83cc019SAndroid Build Coastguard Worker 
11*d83cc019SAndroid Build Coastguard Worker #define GEN4_URB_FENCE				GEN4_3D(0, 0, 0)
12*d83cc019SAndroid Build Coastguard Worker # define UF0_CS_REALLOC				(1 << 13)
13*d83cc019SAndroid Build Coastguard Worker # define UF0_VFE_REALLOC			(1 << 12)
14*d83cc019SAndroid Build Coastguard Worker # define UF0_SF_REALLOC				(1 << 11)
15*d83cc019SAndroid Build Coastguard Worker # define UF0_CLIP_REALLOC			(1 << 10)
16*d83cc019SAndroid Build Coastguard Worker # define UF0_GS_REALLOC				(1 << 9)
17*d83cc019SAndroid Build Coastguard Worker # define UF0_VS_REALLOC				(1 << 8)
18*d83cc019SAndroid Build Coastguard Worker # define UF1_CLIP_FENCE_SHIFT			20
19*d83cc019SAndroid Build Coastguard Worker # define UF1_GS_FENCE_SHIFT			10
20*d83cc019SAndroid Build Coastguard Worker # define UF1_VS_FENCE_SHIFT			0
21*d83cc019SAndroid Build Coastguard Worker # define UF2_CS_FENCE_SHIFT			20
22*d83cc019SAndroid Build Coastguard Worker # define UF2_VFE_FENCE_SHIFT			10
23*d83cc019SAndroid Build Coastguard Worker # define UF2_SF_FENCE_SHIFT			0
24*d83cc019SAndroid Build Coastguard Worker 
25*d83cc019SAndroid Build Coastguard Worker #define GEN4_CS_URB_STATE			GEN4_3D(0, 0, 1)
26*d83cc019SAndroid Build Coastguard Worker 
27*d83cc019SAndroid Build Coastguard Worker #define GEN4_STATE_BASE_ADDRESS			GEN4_3D(0, 1, 1)
28*d83cc019SAndroid Build Coastguard Worker # define BASE_ADDRESS_MODIFY			(1 << 0)
29*d83cc019SAndroid Build Coastguard Worker 
30*d83cc019SAndroid Build Coastguard Worker #define GEN4_STATE_SIP				GEN4_3D(0, 1, 2)
31*d83cc019SAndroid Build Coastguard Worker 
32*d83cc019SAndroid Build Coastguard Worker #define GEN4_PIPELINE_SELECT			GEN4_3D(0, 1, 4)
33*d83cc019SAndroid Build Coastguard Worker #define G4X_PIPELINE_SELECT			GEN4_3D(1, 1, 4)
34*d83cc019SAndroid Build Coastguard Worker # define PIPELINE_SELECT_3D			0
35*d83cc019SAndroid Build Coastguard Worker # define PIPELINE_SELECT_MEDIA			1
36*d83cc019SAndroid Build Coastguard Worker 
37*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_PIPELINED_POINTERS		GEN4_3D(3, 0, 0)
38*d83cc019SAndroid Build Coastguard Worker # define GEN4_GS_DISABLE			0
39*d83cc019SAndroid Build Coastguard Worker # define GEN4_GS_ENABLE				1
40*d83cc019SAndroid Build Coastguard Worker # define GEN4_CLIP_DISABLE			0
41*d83cc019SAndroid Build Coastguard Worker # define GEN4_CLIP_ENABLE			1
42*d83cc019SAndroid Build Coastguard Worker 
43*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_BINDING_TABLE_POINTERS	GEN4_3D(3, 0, 1)
44*d83cc019SAndroid Build Coastguard Worker 
45*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_VERTEX_BUFFERS		GEN4_3D(3, 0, 8)
46*d83cc019SAndroid Build Coastguard Worker # define GEN4_VB0_BUFFER_INDEX_SHIFT			27
47*d83cc019SAndroid Build Coastguard Worker # define GEN4_VB0_VERTEXDATA				(0 << 26)
48*d83cc019SAndroid Build Coastguard Worker # define GEN4_VB0_INSTANCEDATA			(1 << 26)
49*d83cc019SAndroid Build Coastguard Worker # define VB0_BUFFER_PITCH_SHIFT			0
50*d83cc019SAndroid Build Coastguard Worker 
51*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_VERTEX_ELEMENTS		GEN4_3D(3, 0, 9)
52*d83cc019SAndroid Build Coastguard Worker # define GEN4_VE0_VERTEX_BUFFER_INDEX_SHIFT		27
53*d83cc019SAndroid Build Coastguard Worker # define GEN4_VE0_VALID				(1 << 26)
54*d83cc019SAndroid Build Coastguard Worker # define VE0_FORMAT_SHIFT			16
55*d83cc019SAndroid Build Coastguard Worker # define VE0_OFFSET_SHIFT			0
56*d83cc019SAndroid Build Coastguard Worker # define VE1_VFCOMPONENT_0_SHIFT		28
57*d83cc019SAndroid Build Coastguard Worker # define VE1_VFCOMPONENT_1_SHIFT		24
58*d83cc019SAndroid Build Coastguard Worker # define VE1_VFCOMPONENT_2_SHIFT		20
59*d83cc019SAndroid Build Coastguard Worker # define VE1_VFCOMPONENT_3_SHIFT		16
60*d83cc019SAndroid Build Coastguard Worker # define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT	0
61*d83cc019SAndroid Build Coastguard Worker 
62*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_NOSTORE		0
63*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_SRC		1
64*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_0		2
65*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_1_FLT		3
66*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_1_INT		4
67*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_VID		5
68*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_IID		6
69*d83cc019SAndroid Build Coastguard Worker #define GEN4_VFCOMPONENT_STORE_PID		7
70*d83cc019SAndroid Build Coastguard Worker 
71*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_DRAWING_RECTANGLE		GEN4_3D(3, 1, 0)
72*d83cc019SAndroid Build Coastguard Worker 
73*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_DEPTH_BUFFER		GEN4_3D(3, 1, 5)
74*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DSTATE_DEPTH_BUFFER_TYPE_SHIFT	29
75*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DSTATE_DEPTH_BUFFER_FORMAT_SHIFT	18
76*d83cc019SAndroid Build Coastguard Worker 
77*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D32_FLOAT_S8X24_UINT	0
78*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D32_FLOAT		1
79*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D24_UNORM_S8_UINT	2
80*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D24_UNORM_X8_UINT	3
81*d83cc019SAndroid Build Coastguard Worker #define GEN4_DEPTHFORMAT_D16_UNORM		5
82*d83cc019SAndroid Build Coastguard Worker 
83*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DSTATE_CLEAR_PARAMS		GEN4_3D(3, 1, 0x10)
84*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DSTATE_DEPTH_CLEAR_VALID		(1 << 15)
85*d83cc019SAndroid Build Coastguard Worker 
86*d83cc019SAndroid Build Coastguard Worker #define GEN4_3DPRIMITIVE			GEN4_3D(3, 3, 0)
87*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DPRIMITIVE_VERTEX_SEQUENTIAL	(0 << 15)
88*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DPRIMITIVE_VERTEX_RANDOM		(1 << 15)
89*d83cc019SAndroid Build Coastguard Worker # define GEN4_3DPRIMITIVE_TOPOLOGY_SHIFT	10
90*d83cc019SAndroid Build Coastguard Worker 
91*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_POINTLIST		0x01
92*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINELIST		0x02
93*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP		0x03
94*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRILIST			0x04
95*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRISTRIP		0x05
96*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRIFAN			0x06
97*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_QUADLIST		0x07
98*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_QUADSTRIP		0x08
99*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINELIST_ADJ		0x09
100*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP_ADJ		0x0A
101*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRILIST_ADJ		0x0B
102*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRISTRIP_ADJ		0x0C
103*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRISTRIP_REVERSE	0x0D
104*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_POLYGON			0x0E
105*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_RECTLIST		0x0F
106*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINELOOP		0x10
107*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_POINTLIST_BF		0x11
108*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP_CONT		0x12
109*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP_BF		0x13
110*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_LINESTRIP_CONT_BF	0x14
111*d83cc019SAndroid Build Coastguard Worker #define _3DPRIM_TRIFAN_NOSTIPPLE	0x15
112*d83cc019SAndroid Build Coastguard Worker 
113*d83cc019SAndroid Build Coastguard Worker #define GEN4_CULLMODE_BOTH		0
114*d83cc019SAndroid Build Coastguard Worker #define GEN4_CULLMODE_NONE		1
115*d83cc019SAndroid Build Coastguard Worker #define GEN4_CULLMODE_FRONT		2
116*d83cc019SAndroid Build Coastguard Worker #define GEN4_CULLMODE_BACK		3
117*d83cc019SAndroid Build Coastguard Worker 
118*d83cc019SAndroid Build Coastguard Worker #define GEN4_BORDER_COLOR_MODE_DEFAULT	0
119*d83cc019SAndroid Build Coastguard Worker #define GEN4_BORDER_COLOR_MODE_LEGACY	1
120*d83cc019SAndroid Build Coastguard Worker 
121*d83cc019SAndroid Build Coastguard Worker #define GEN4_MAPFILTER_NEAREST		0
122*d83cc019SAndroid Build Coastguard Worker #define GEN4_MAPFILTER_LINEAR		1
123*d83cc019SAndroid Build Coastguard Worker #define GEN4_MAPFILTER_ANISOTROPIC	2
124*d83cc019SAndroid Build Coastguard Worker #define GEN4_MAPFILTER_MONO		6
125*d83cc019SAndroid Build Coastguard Worker 
126*d83cc019SAndroid Build Coastguard Worker #define GEN4_MIPFILTER_NONE		0
127*d83cc019SAndroid Build Coastguard Worker #define GEN4_MIPFILTER_NEAREST		1
128*d83cc019SAndroid Build Coastguard Worker #define GEN4_MIPFILTER_LINEAR		3
129*d83cc019SAndroid Build Coastguard Worker 
130*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_ALWAYS		0
131*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_NEVER		1
132*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_LESS		2
133*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_EQUAL		3
134*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_LEQUAL		4
135*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_GREATER		5
136*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_NOTEQUAL		6
137*d83cc019SAndroid Build Coastguard Worker #define GEN4_PREFILTER_GEQUAL		7
138*d83cc019SAndroid Build Coastguard Worker 
139*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_WRAP		0
140*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_MIRROR	1
141*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_CLAMP		2
142*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_CUBE		3
143*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_CLAMP_BORDER	4
144*d83cc019SAndroid Build Coastguard Worker #define GEN4_TEXCOORDMODE_MIRROR_ONCE	5
145*d83cc019SAndroid Build Coastguard Worker 
146*d83cc019SAndroid Build Coastguard Worker #define GEN4_LOD_PRECLAMP_D3D		0
147*d83cc019SAndroid Build Coastguard Worker #define GEN4_LOD_PRECLAMP_OGL		1
148*d83cc019SAndroid Build Coastguard Worker 
149*d83cc019SAndroid Build Coastguard Worker /* The hardware supports two different modes for border color. The
150*d83cc019SAndroid Build Coastguard Worker  * default (OpenGL) mode uses floating-point color channels, while the
151*d83cc019SAndroid Build Coastguard Worker  * legacy mode uses 4 bytes.
152*d83cc019SAndroid Build Coastguard Worker  *
153*d83cc019SAndroid Build Coastguard Worker  * More significantly, the legacy mode respects the components of the
154*d83cc019SAndroid Build Coastguard Worker  * border color for channels not present in the source, (whereas the
155*d83cc019SAndroid Build Coastguard Worker  * default mode will ignore the border color's alpha channel and use
156*d83cc019SAndroid Build Coastguard Worker  * alpha==1 for an RGB source, for example).
157*d83cc019SAndroid Build Coastguard Worker  *
158*d83cc019SAndroid Build Coastguard Worker  * The legacy mode matches the semantics specified by the Render
159*d83cc019SAndroid Build Coastguard Worker  * extension.
160*d83cc019SAndroid Build Coastguard Worker  */
161*d83cc019SAndroid Build Coastguard Worker struct gen4_sampler_default_border_color {
162*d83cc019SAndroid Build Coastguard Worker 	float color[4];
163*d83cc019SAndroid Build Coastguard Worker };
164*d83cc019SAndroid Build Coastguard Worker 
165*d83cc019SAndroid Build Coastguard Worker struct gen4_sampler_legacy_border_color {
166*d83cc019SAndroid Build Coastguard Worker 	uint8_t color[4];
167*d83cc019SAndroid Build Coastguard Worker };
168*d83cc019SAndroid Build Coastguard Worker 
169*d83cc019SAndroid Build Coastguard Worker struct gen4_sampler_state {
170*d83cc019SAndroid Build Coastguard Worker 	struct {
171*d83cc019SAndroid Build Coastguard Worker 		uint32_t shadow_function:3;
172*d83cc019SAndroid Build Coastguard Worker 		uint32_t lod_bias:11;
173*d83cc019SAndroid Build Coastguard Worker 		uint32_t min_filter:3;
174*d83cc019SAndroid Build Coastguard Worker 		uint32_t mag_filter:3;
175*d83cc019SAndroid Build Coastguard Worker 		uint32_t mip_filter:2;
176*d83cc019SAndroid Build Coastguard Worker 		uint32_t base_level:5;
177*d83cc019SAndroid Build Coastguard Worker 		uint32_t pad0:1;
178*d83cc019SAndroid Build Coastguard Worker 		uint32_t lod_preclamp:1;
179*d83cc019SAndroid Build Coastguard Worker 		uint32_t border_color_mode:1;
180*d83cc019SAndroid Build Coastguard Worker 		uint32_t pad1:1;
181*d83cc019SAndroid Build Coastguard Worker 		uint32_t disable:1;
182*d83cc019SAndroid Build Coastguard Worker 	} ss0;
183*d83cc019SAndroid Build Coastguard Worker 
184*d83cc019SAndroid Build Coastguard Worker 	struct {
185*d83cc019SAndroid Build Coastguard Worker 		uint32_t r_wrap_mode:3;
186*d83cc019SAndroid Build Coastguard Worker 		uint32_t t_wrap_mode:3;
187*d83cc019SAndroid Build Coastguard Worker 		uint32_t s_wrap_mode:3;
188*d83cc019SAndroid Build Coastguard Worker 		uint32_t cube_ctlr_mode:1;
189*d83cc019SAndroid Build Coastguard Worker 		uint32_t pad:2;
190*d83cc019SAndroid Build Coastguard Worker 		uint32_t max_lod:10;
191*d83cc019SAndroid Build Coastguard Worker 		uint32_t min_lod:10;
192*d83cc019SAndroid Build Coastguard Worker 	} ss1;
193*d83cc019SAndroid Build Coastguard Worker 
194*d83cc019SAndroid Build Coastguard Worker 	struct {
195*d83cc019SAndroid Build Coastguard Worker 		uint32_t pad:5;
196*d83cc019SAndroid Build Coastguard Worker 		uint32_t border_color_pointer:27;
197*d83cc019SAndroid Build Coastguard Worker 	} ss2;
198*d83cc019SAndroid Build Coastguard Worker 
199*d83cc019SAndroid Build Coastguard Worker 	struct {
200*d83cc019SAndroid Build Coastguard Worker 		uint32_t pad:13;
201*d83cc019SAndroid Build Coastguard Worker 		uint32_t address_rounding_enable:6;
202*d83cc019SAndroid Build Coastguard Worker 		uint32_t max_aniso:3;
203*d83cc019SAndroid Build Coastguard Worker 		uint32_t chroma_key_mode:1;
204*d83cc019SAndroid Build Coastguard Worker 		uint32_t chroma_key_index:2;
205*d83cc019SAndroid Build Coastguard Worker 		uint32_t chroma_key_enable:1;
206*d83cc019SAndroid Build Coastguard Worker 		uint32_t monochrome_filter_width:3;
207*d83cc019SAndroid Build Coastguard Worker 		uint32_t monochrome_filter_height:3;
208*d83cc019SAndroid Build Coastguard Worker 	} ss3;
209*d83cc019SAndroid Build Coastguard Worker };
210*d83cc019SAndroid Build Coastguard Worker 
211*d83cc019SAndroid Build Coastguard Worker typedef enum {
212*d83cc019SAndroid Build Coastguard Worker 	SAMPLER_FILTER_NEAREST = 0,
213*d83cc019SAndroid Build Coastguard Worker 	SAMPLER_FILTER_BILINEAR,
214*d83cc019SAndroid Build Coastguard Worker 	FILTER_COUNT
215*d83cc019SAndroid Build Coastguard Worker } sampler_filter_t;
216*d83cc019SAndroid Build Coastguard Worker 
217*d83cc019SAndroid Build Coastguard Worker typedef enum {
218*d83cc019SAndroid Build Coastguard Worker 	SAMPLER_EXTEND_NONE = 0,
219*d83cc019SAndroid Build Coastguard Worker 	SAMPLER_EXTEND_REPEAT,
220*d83cc019SAndroid Build Coastguard Worker 	SAMPLER_EXTEND_PAD,
221*d83cc019SAndroid Build Coastguard Worker 	SAMPLER_EXTEND_REFLECT,
222*d83cc019SAndroid Build Coastguard Worker 	EXTEND_COUNT
223*d83cc019SAndroid Build Coastguard Worker } sampler_extend_t;
224*d83cc019SAndroid Build Coastguard Worker 
225*d83cc019SAndroid Build Coastguard Worker struct gen4_surface_state {
226*d83cc019SAndroid Build Coastguard Worker 	struct {
227*d83cc019SAndroid Build Coastguard Worker 		unsigned int cube_pos_z:1;
228*d83cc019SAndroid Build Coastguard Worker 		unsigned int cube_neg_z:1;
229*d83cc019SAndroid Build Coastguard Worker 		unsigned int cube_pos_y:1;
230*d83cc019SAndroid Build Coastguard Worker 		unsigned int cube_neg_y:1;
231*d83cc019SAndroid Build Coastguard Worker 		unsigned int cube_pos_x:1;
232*d83cc019SAndroid Build Coastguard Worker 		unsigned int cube_neg_x:1;
233*d83cc019SAndroid Build Coastguard Worker 		unsigned int media_boundary_pixel_mode:2;
234*d83cc019SAndroid Build Coastguard Worker 		unsigned int render_cache_read_mode:1;
235*d83cc019SAndroid Build Coastguard Worker 		unsigned int cube_corner_mode:1;
236*d83cc019SAndroid Build Coastguard Worker 		unsigned int mipmap_layout_mode:1;
237*d83cc019SAndroid Build Coastguard Worker 		unsigned int vert_line_stride_ofs:1;
238*d83cc019SAndroid Build Coastguard Worker 		unsigned int vert_line_stride:1;
239*d83cc019SAndroid Build Coastguard Worker 		unsigned int color_blend:1;
240*d83cc019SAndroid Build Coastguard Worker 		unsigned int writedisable_blue:1;
241*d83cc019SAndroid Build Coastguard Worker 		unsigned int writedisable_green:1;
242*d83cc019SAndroid Build Coastguard Worker 		unsigned int writedisable_red:1;
243*d83cc019SAndroid Build Coastguard Worker 		unsigned int writedisable_alpha:1;
244*d83cc019SAndroid Build Coastguard Worker 		unsigned int surface_format:9;
245*d83cc019SAndroid Build Coastguard Worker 		unsigned int data_return_format:1;
246*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
247*d83cc019SAndroid Build Coastguard Worker 		unsigned int surface_type:3;
248*d83cc019SAndroid Build Coastguard Worker 	} ss0;
249*d83cc019SAndroid Build Coastguard Worker 
250*d83cc019SAndroid Build Coastguard Worker 	struct {
251*d83cc019SAndroid Build Coastguard Worker 		unsigned int base_addr;
252*d83cc019SAndroid Build Coastguard Worker 	} ss1;
253*d83cc019SAndroid Build Coastguard Worker 
254*d83cc019SAndroid Build Coastguard Worker 	struct {
255*d83cc019SAndroid Build Coastguard Worker 		unsigned int render_target_rotation:2;
256*d83cc019SAndroid Build Coastguard Worker 		unsigned int mip_count:4;
257*d83cc019SAndroid Build Coastguard Worker 		unsigned int width:13;
258*d83cc019SAndroid Build Coastguard Worker 		unsigned int height:13;
259*d83cc019SAndroid Build Coastguard Worker 	} ss2;
260*d83cc019SAndroid Build Coastguard Worker 
261*d83cc019SAndroid Build Coastguard Worker 	struct {
262*d83cc019SAndroid Build Coastguard Worker 		unsigned int tile_walk:1;
263*d83cc019SAndroid Build Coastguard Worker 		unsigned int tiled_surface:1;
264*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
265*d83cc019SAndroid Build Coastguard Worker 		unsigned int pitch:17;
266*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:1;
267*d83cc019SAndroid Build Coastguard Worker 		unsigned int depth:11;
268*d83cc019SAndroid Build Coastguard Worker 	} ss3;
269*d83cc019SAndroid Build Coastguard Worker 
270*d83cc019SAndroid Build Coastguard Worker 	struct {
271*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad:8;
272*d83cc019SAndroid Build Coastguard Worker 		unsigned int render_target_view_extent:9;
273*d83cc019SAndroid Build Coastguard Worker 		unsigned int min_array_elt:11;
274*d83cc019SAndroid Build Coastguard Worker 		unsigned int min_lod:4;
275*d83cc019SAndroid Build Coastguard Worker 	} ss4;
276*d83cc019SAndroid Build Coastguard Worker 
277*d83cc019SAndroid Build Coastguard Worker 	struct {
278*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad:20;
279*d83cc019SAndroid Build Coastguard Worker 		unsigned int y_offset:4;
280*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:1;
281*d83cc019SAndroid Build Coastguard Worker 		unsigned int x_offset:7;
282*d83cc019SAndroid Build Coastguard Worker 	} ss5;
283*d83cc019SAndroid Build Coastguard Worker };
284*d83cc019SAndroid Build Coastguard Worker 
285*d83cc019SAndroid Build Coastguard Worker struct gen4_cc_viewport {
286*d83cc019SAndroid Build Coastguard Worker 	float min_depth;
287*d83cc019SAndroid Build Coastguard Worker 	float max_depth;
288*d83cc019SAndroid Build Coastguard Worker };
289*d83cc019SAndroid Build Coastguard Worker 
290*d83cc019SAndroid Build Coastguard Worker struct gen4_vs_state {
291*d83cc019SAndroid Build Coastguard Worker 	struct {
292*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
293*d83cc019SAndroid Build Coastguard Worker 		unsigned int grf_reg_count:3;
294*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:2;
295*d83cc019SAndroid Build Coastguard Worker 		unsigned int kernel_start_pointer:26;
296*d83cc019SAndroid Build Coastguard Worker 	} vs0;
297*d83cc019SAndroid Build Coastguard Worker 
298*d83cc019SAndroid Build Coastguard Worker 	struct {
299*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:7;
300*d83cc019SAndroid Build Coastguard Worker 		unsigned int sw_exception_enable:1;
301*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:3;
302*d83cc019SAndroid Build Coastguard Worker 		unsigned int mask_stack_exception_enable:1;
303*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:1;
304*d83cc019SAndroid Build Coastguard Worker 		unsigned int illegal_op_exception_enable:1;
305*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad3:2;
306*d83cc019SAndroid Build Coastguard Worker 		unsigned int floating_point_mode:1;
307*d83cc019SAndroid Build Coastguard Worker 		unsigned int thread_priority:1;
308*d83cc019SAndroid Build Coastguard Worker 		unsigned int binding_table_entry_count:8;
309*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad4:5;
310*d83cc019SAndroid Build Coastguard Worker 		unsigned int single_program_flow:1;
311*d83cc019SAndroid Build Coastguard Worker 	} vs1;
312*d83cc019SAndroid Build Coastguard Worker 
313*d83cc019SAndroid Build Coastguard Worker 	struct {
314*d83cc019SAndroid Build Coastguard Worker 		unsigned int per_thread_scratch_space:4;
315*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:6;
316*d83cc019SAndroid Build Coastguard Worker 		unsigned int scratch_space_pointer:22;
317*d83cc019SAndroid Build Coastguard Worker 	} vs2;
318*d83cc019SAndroid Build Coastguard Worker 
319*d83cc019SAndroid Build Coastguard Worker 	struct {
320*d83cc019SAndroid Build Coastguard Worker 		unsigned int dispatch_grf_start_reg:4;
321*d83cc019SAndroid Build Coastguard Worker 		unsigned int urb_entry_read_offset:6;
322*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
323*d83cc019SAndroid Build Coastguard Worker 		unsigned int urb_entry_read_length:6;
324*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:1;
325*d83cc019SAndroid Build Coastguard Worker 		unsigned int const_urb_entry_read_offset:6;
326*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:1;
327*d83cc019SAndroid Build Coastguard Worker 		unsigned int const_urb_entry_read_length:6;
328*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad3:1;
329*d83cc019SAndroid Build Coastguard Worker 	} vs3;
330*d83cc019SAndroid Build Coastguard Worker 
331*d83cc019SAndroid Build Coastguard Worker 	struct {
332*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:10;
333*d83cc019SAndroid Build Coastguard Worker 		unsigned int stats_enable:1;
334*d83cc019SAndroid Build Coastguard Worker 		unsigned int nr_urb_entries:7;
335*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:1;
336*d83cc019SAndroid Build Coastguard Worker 		unsigned int urb_entry_allocation_size:5;
337*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:1;
338*d83cc019SAndroid Build Coastguard Worker 		unsigned int max_threads:6;
339*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad3:1;
340*d83cc019SAndroid Build Coastguard Worker 	} vs4;
341*d83cc019SAndroid Build Coastguard Worker 
342*d83cc019SAndroid Build Coastguard Worker 	struct {
343*d83cc019SAndroid Build Coastguard Worker 		unsigned int sampler_count:3;
344*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad:2;
345*d83cc019SAndroid Build Coastguard Worker 		unsigned int sampler_state_pointer:27;
346*d83cc019SAndroid Build Coastguard Worker 	} vs5;
347*d83cc019SAndroid Build Coastguard Worker 
348*d83cc019SAndroid Build Coastguard Worker 	struct {
349*d83cc019SAndroid Build Coastguard Worker 		unsigned int vs_enable:1;
350*d83cc019SAndroid Build Coastguard Worker 		unsigned int vert_cache_disable:1;
351*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad:30;
352*d83cc019SAndroid Build Coastguard Worker 	} vs6;
353*d83cc019SAndroid Build Coastguard Worker };
354*d83cc019SAndroid Build Coastguard Worker 
355*d83cc019SAndroid Build Coastguard Worker struct gen4_sf_state {
356*d83cc019SAndroid Build Coastguard Worker 	struct {
357*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
358*d83cc019SAndroid Build Coastguard Worker 		unsigned int grf_reg_count:3;
359*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:2;
360*d83cc019SAndroid Build Coastguard Worker 		unsigned int kernel_start_pointer:26;
361*d83cc019SAndroid Build Coastguard Worker 	} sf0;
362*d83cc019SAndroid Build Coastguard Worker 
363*d83cc019SAndroid Build Coastguard Worker 	struct {
364*d83cc019SAndroid Build Coastguard Worker 		unsigned int barycentric_interp:1; /* ilk */
365*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:6;
366*d83cc019SAndroid Build Coastguard Worker 		unsigned int sw_exception_enable:1;
367*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:3;
368*d83cc019SAndroid Build Coastguard Worker 		unsigned int mask_stack_exception_enable:1;
369*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:1;
370*d83cc019SAndroid Build Coastguard Worker 		unsigned int illegal_op_exception_enable:1;
371*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad3:2;
372*d83cc019SAndroid Build Coastguard Worker 		unsigned int floating_point_mode:1;
373*d83cc019SAndroid Build Coastguard Worker 		unsigned int thread_priority:1;
374*d83cc019SAndroid Build Coastguard Worker 		unsigned int binding_table_entry_count:8;
375*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad4:6;
376*d83cc019SAndroid Build Coastguard Worker 	} sf1;
377*d83cc019SAndroid Build Coastguard Worker 
378*d83cc019SAndroid Build Coastguard Worker 	struct {
379*d83cc019SAndroid Build Coastguard Worker 		unsigned int per_thread_scratch_space:4;
380*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:6;
381*d83cc019SAndroid Build Coastguard Worker 		unsigned int scratch_space_pointer:22;
382*d83cc019SAndroid Build Coastguard Worker 	} sf2;
383*d83cc019SAndroid Build Coastguard Worker 
384*d83cc019SAndroid Build Coastguard Worker 	struct {
385*d83cc019SAndroid Build Coastguard Worker 		unsigned int dispatch_grf_start_reg:4;
386*d83cc019SAndroid Build Coastguard Worker 		unsigned int urb_entry_read_offset:6;
387*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
388*d83cc019SAndroid Build Coastguard Worker 		unsigned int urb_entry_read_length:7;
389*d83cc019SAndroid Build Coastguard Worker 		unsigned int const_urb_entry_read_offset:6;
390*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:1;
391*d83cc019SAndroid Build Coastguard Worker 		unsigned int const_urb_entry_read_length:6;
392*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:1;
393*d83cc019SAndroid Build Coastguard Worker 	} sf3;
394*d83cc019SAndroid Build Coastguard Worker 
395*d83cc019SAndroid Build Coastguard Worker 	struct {
396*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:10;
397*d83cc019SAndroid Build Coastguard Worker 		unsigned int stats_enable:1;
398*d83cc019SAndroid Build Coastguard Worker 		unsigned int nr_urb_entries:8;
399*d83cc019SAndroid Build Coastguard Worker 		unsigned int urb_entry_allocation_size:6;
400*d83cc019SAndroid Build Coastguard Worker 		unsigned int max_threads:6;
401*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:1;
402*d83cc019SAndroid Build Coastguard Worker 	} sf4;
403*d83cc019SAndroid Build Coastguard Worker 
404*d83cc019SAndroid Build Coastguard Worker 	struct {
405*d83cc019SAndroid Build Coastguard Worker 		unsigned int front_winding:1;
406*d83cc019SAndroid Build Coastguard Worker 		unsigned int viewport_transform:1;
407*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad:3;
408*d83cc019SAndroid Build Coastguard Worker 		unsigned int sf_viewport_state_offset:27;
409*d83cc019SAndroid Build Coastguard Worker 	} sf5;
410*d83cc019SAndroid Build Coastguard Worker 
411*d83cc019SAndroid Build Coastguard Worker 	struct {
412*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad:9;
413*d83cc019SAndroid Build Coastguard Worker 		unsigned int dest_org_vbias:4;
414*d83cc019SAndroid Build Coastguard Worker 		unsigned int dest_org_hbias:4;
415*d83cc019SAndroid Build Coastguard Worker 		unsigned int scissor:1;
416*d83cc019SAndroid Build Coastguard Worker 		unsigned int disable_2x2_trifilter:1;
417*d83cc019SAndroid Build Coastguard Worker 		unsigned int disable_zero_trifilter:1;
418*d83cc019SAndroid Build Coastguard Worker 		unsigned int point_rast_rule:2;
419*d83cc019SAndroid Build Coastguard Worker 		unsigned int line_endcap_aa_region_width:2;
420*d83cc019SAndroid Build Coastguard Worker 		unsigned int line_width:4;
421*d83cc019SAndroid Build Coastguard Worker 		unsigned int fast_scissor_disable:1;
422*d83cc019SAndroid Build Coastguard Worker 		unsigned int cull_mode:2;
423*d83cc019SAndroid Build Coastguard Worker 		unsigned int aa_enable:1;
424*d83cc019SAndroid Build Coastguard Worker 	} sf6;
425*d83cc019SAndroid Build Coastguard Worker 
426*d83cc019SAndroid Build Coastguard Worker 	struct {
427*d83cc019SAndroid Build Coastguard Worker 		unsigned int point_size:11;
428*d83cc019SAndroid Build Coastguard Worker 		unsigned int use_point_size_state:1;
429*d83cc019SAndroid Build Coastguard Worker 		unsigned int subpixel_precision:1;
430*d83cc019SAndroid Build Coastguard Worker 		unsigned int sprite_point:1;
431*d83cc019SAndroid Build Coastguard Worker 		unsigned int aa_line_dist_mode:1;
432*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad:10;
433*d83cc019SAndroid Build Coastguard Worker 		unsigned int trifan_pv:2;
434*d83cc019SAndroid Build Coastguard Worker 		unsigned int linestrip_pv:2;
435*d83cc019SAndroid Build Coastguard Worker 		unsigned int tristrip_pv:2;
436*d83cc019SAndroid Build Coastguard Worker 		unsigned int line_last_pixel_enable:1;
437*d83cc019SAndroid Build Coastguard Worker 	} sf7;
438*d83cc019SAndroid Build Coastguard Worker };
439*d83cc019SAndroid Build Coastguard Worker 
440*d83cc019SAndroid Build Coastguard Worker struct gen4_wm_state {
441*d83cc019SAndroid Build Coastguard Worker 	struct {
442*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
443*d83cc019SAndroid Build Coastguard Worker 		unsigned int grf_reg_count:3;
444*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:2;
445*d83cc019SAndroid Build Coastguard Worker 		unsigned int kernel_start_pointer:26;
446*d83cc019SAndroid Build Coastguard Worker 	} wm0;
447*d83cc019SAndroid Build Coastguard Worker 
448*d83cc019SAndroid Build Coastguard Worker 	struct {
449*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
450*d83cc019SAndroid Build Coastguard Worker 		unsigned int sw_exception_enable:1;
451*d83cc019SAndroid Build Coastguard Worker 		unsigned int mask_stack_exception_enable:1;
452*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:1;
453*d83cc019SAndroid Build Coastguard Worker 		unsigned int illegal_op_exception_enable:1;
454*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad3:3;
455*d83cc019SAndroid Build Coastguard Worker 		unsigned int depth_coeff_urb_read_offset:6;
456*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad4:2;
457*d83cc019SAndroid Build Coastguard Worker 		unsigned int floating_point_mode:1;
458*d83cc019SAndroid Build Coastguard Worker 		unsigned int thread_priority:1;
459*d83cc019SAndroid Build Coastguard Worker 		unsigned int binding_table_entry_count:8;
460*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad5:5;
461*d83cc019SAndroid Build Coastguard Worker 		unsigned int single_program_flow:1;
462*d83cc019SAndroid Build Coastguard Worker 	} wm1;
463*d83cc019SAndroid Build Coastguard Worker 
464*d83cc019SAndroid Build Coastguard Worker 	struct {
465*d83cc019SAndroid Build Coastguard Worker 		unsigned int per_thread_scratch_space:4;
466*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:6;
467*d83cc019SAndroid Build Coastguard Worker 		unsigned int scratch_space_pointer:22;
468*d83cc019SAndroid Build Coastguard Worker 	} wm2;
469*d83cc019SAndroid Build Coastguard Worker 
470*d83cc019SAndroid Build Coastguard Worker 	struct {
471*d83cc019SAndroid Build Coastguard Worker 		unsigned int dispatch_grf_start_reg:4;
472*d83cc019SAndroid Build Coastguard Worker 		unsigned int urb_entry_read_offset:6;
473*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
474*d83cc019SAndroid Build Coastguard Worker 		unsigned int urb_entry_read_length:7;
475*d83cc019SAndroid Build Coastguard Worker 		unsigned int const_urb_entry_read_offset:6;
476*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:1;
477*d83cc019SAndroid Build Coastguard Worker 		unsigned int const_urb_entry_read_length:6;
478*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:1;
479*d83cc019SAndroid Build Coastguard Worker 	} wm3;
480*d83cc019SAndroid Build Coastguard Worker 
481*d83cc019SAndroid Build Coastguard Worker 	struct {
482*d83cc019SAndroid Build Coastguard Worker 		unsigned int stats_enable:1;
483*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
484*d83cc019SAndroid Build Coastguard Worker 		unsigned int sampler_count:3;
485*d83cc019SAndroid Build Coastguard Worker 		unsigned int sampler_state_pointer:27;
486*d83cc019SAndroid Build Coastguard Worker 	} wm4;
487*d83cc019SAndroid Build Coastguard Worker 
488*d83cc019SAndroid Build Coastguard Worker 	struct {
489*d83cc019SAndroid Build Coastguard Worker 		unsigned int enable_8_pix:1;
490*d83cc019SAndroid Build Coastguard Worker 		unsigned int enable_16_pix:1;
491*d83cc019SAndroid Build Coastguard Worker 		unsigned int enable_32_pix:1;
492*d83cc019SAndroid Build Coastguard Worker 		unsigned int enable_cont_32_pix:1; /* ctg+ */
493*d83cc019SAndroid Build Coastguard Worker 		unsigned int enable_cont_64_pix:1; /* ctg+ */
494*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
495*d83cc019SAndroid Build Coastguard Worker 		unsigned int fast_span_coverage:1; /* ilk */
496*d83cc019SAndroid Build Coastguard Worker 		unsigned int depth_clear:1; /* ilk */
497*d83cc019SAndroid Build Coastguard Worker 		unsigned int depth_resolve:1; /* ilk */
498*d83cc019SAndroid Build Coastguard Worker 		unsigned int hier_depth_resolve:1; /* ilk */
499*d83cc019SAndroid Build Coastguard Worker 		unsigned int legacy_global_depth_bias:1;
500*d83cc019SAndroid Build Coastguard Worker 		unsigned int line_stipple:1;
501*d83cc019SAndroid Build Coastguard Worker 		unsigned int depth_offset:1;
502*d83cc019SAndroid Build Coastguard Worker 		unsigned int polygon_stipple:1;
503*d83cc019SAndroid Build Coastguard Worker 		unsigned int line_aa_region_width:2;
504*d83cc019SAndroid Build Coastguard Worker 		unsigned int line_endcap_aa_region_width:2;
505*d83cc019SAndroid Build Coastguard Worker 		unsigned int early_depth_test:1;
506*d83cc019SAndroid Build Coastguard Worker 		unsigned int thread_dispatch_enable:1;
507*d83cc019SAndroid Build Coastguard Worker 		unsigned int program_uses_depth:1;
508*d83cc019SAndroid Build Coastguard Worker 		unsigned int program_computes_dpeth:1;
509*d83cc019SAndroid Build Coastguard Worker 		unsigned int program_uses_killpixel:1;
510*d83cc019SAndroid Build Coastguard Worker 		unsigned int legacy_line_rast:1;
511*d83cc019SAndroid Build Coastguard Worker 		unsigned int transposed_urb_read:1;
512*d83cc019SAndroid Build Coastguard Worker 		unsigned int max_threads:7;
513*d83cc019SAndroid Build Coastguard Worker 	} wm5;
514*d83cc019SAndroid Build Coastguard Worker 
515*d83cc019SAndroid Build Coastguard Worker 	struct {
516*d83cc019SAndroid Build Coastguard Worker 		float global_depth_offset_constant;
517*d83cc019SAndroid Build Coastguard Worker 	} wm6;
518*d83cc019SAndroid Build Coastguard Worker 
519*d83cc019SAndroid Build Coastguard Worker 	struct {
520*d83cc019SAndroid Build Coastguard Worker 		float global_depth_offset_scale;
521*d83cc019SAndroid Build Coastguard Worker 	} wm7;
522*d83cc019SAndroid Build Coastguard Worker 
523*d83cc019SAndroid Build Coastguard Worker 	/* ilk only from now on */
524*d83cc019SAndroid Build Coastguard Worker 	struct {
525*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
526*d83cc019SAndroid Build Coastguard Worker 		unsigned int grf_reg_count_1:3;
527*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:2;
528*d83cc019SAndroid Build Coastguard Worker 		unsigned int kernel_start_pointer_1:26;
529*d83cc019SAndroid Build Coastguard Worker 	} wm8;
530*d83cc019SAndroid Build Coastguard Worker 
531*d83cc019SAndroid Build Coastguard Worker 	struct {
532*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
533*d83cc019SAndroid Build Coastguard Worker 		unsigned int grf_reg_count_2:3;
534*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:2;
535*d83cc019SAndroid Build Coastguard Worker 		unsigned int kernel_start_pointer_2:26;
536*d83cc019SAndroid Build Coastguard Worker 	} wm9;
537*d83cc019SAndroid Build Coastguard Worker 
538*d83cc019SAndroid Build Coastguard Worker 	struct {
539*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:1;
540*d83cc019SAndroid Build Coastguard Worker 		unsigned int grf_reg_count_3:3;
541*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:2;
542*d83cc019SAndroid Build Coastguard Worker 		unsigned int kernel_start_pointer_3:26;
543*d83cc019SAndroid Build Coastguard Worker 	} wm10;
544*d83cc019SAndroid Build Coastguard Worker };
545*d83cc019SAndroid Build Coastguard Worker 
546*d83cc019SAndroid Build Coastguard Worker struct gen4_color_calc_state {
547*d83cc019SAndroid Build Coastguard Worker 	struct {
548*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:3;
549*d83cc019SAndroid Build Coastguard Worker 		unsigned int bf_stencil_pass_depth_pass_op:3;
550*d83cc019SAndroid Build Coastguard Worker 		unsigned int bf_stencil_pass_depth_fail_op:3;
551*d83cc019SAndroid Build Coastguard Worker 		unsigned int bf_stencil_fail_op:3;
552*d83cc019SAndroid Build Coastguard Worker 		unsigned int bf_stencil_func:3;
553*d83cc019SAndroid Build Coastguard Worker 		unsigned int bf_stencil_enable:1;
554*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:2;
555*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_write_enable:1;
556*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_pass_depth_pass_op:3;
557*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_pass_depth_fail_op:3;
558*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_fail_op:3;
559*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_func:3;
560*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_enable:1;
561*d83cc019SAndroid Build Coastguard Worker 	} cc0;
562*d83cc019SAndroid Build Coastguard Worker 
563*d83cc019SAndroid Build Coastguard Worker 	struct {
564*d83cc019SAndroid Build Coastguard Worker 		unsigned int bf_stencil_ref:8;
565*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_write_mask:8;
566*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_test_mask:8;
567*d83cc019SAndroid Build Coastguard Worker 		unsigned int stencil_ref:8;
568*d83cc019SAndroid Build Coastguard Worker 	} cc1;
569*d83cc019SAndroid Build Coastguard Worker 
570*d83cc019SAndroid Build Coastguard Worker 	struct {
571*d83cc019SAndroid Build Coastguard Worker 		unsigned int logicop_enable:1;
572*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:10;
573*d83cc019SAndroid Build Coastguard Worker 		unsigned int depth_write_enable:1;
574*d83cc019SAndroid Build Coastguard Worker 		unsigned int depth_test_function:3;
575*d83cc019SAndroid Build Coastguard Worker 		unsigned int depth_test:1;
576*d83cc019SAndroid Build Coastguard Worker 		unsigned int bf_stencil_write_mask:8;
577*d83cc019SAndroid Build Coastguard Worker 		unsigned int bf_stencil_test_mask:8;
578*d83cc019SAndroid Build Coastguard Worker 	} cc2;
579*d83cc019SAndroid Build Coastguard Worker 
580*d83cc019SAndroid Build Coastguard Worker 	struct {
581*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:8;
582*d83cc019SAndroid Build Coastguard Worker 		unsigned int alpha_test_func:3;
583*d83cc019SAndroid Build Coastguard Worker 		unsigned int alpha_test:1;
584*d83cc019SAndroid Build Coastguard Worker 		unsigned int blend_enable:1;
585*d83cc019SAndroid Build Coastguard Worker 		unsigned int ia_blend_enable:1;
586*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:1;
587*d83cc019SAndroid Build Coastguard Worker 		unsigned int alpha_test_format:1;
588*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad2:16;
589*d83cc019SAndroid Build Coastguard Worker 	} cc3;
590*d83cc019SAndroid Build Coastguard Worker 
591*d83cc019SAndroid Build Coastguard Worker 	struct {
592*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:5;
593*d83cc019SAndroid Build Coastguard Worker 		unsigned int cc_viewport_state_offset:27;
594*d83cc019SAndroid Build Coastguard Worker 	} cc4;
595*d83cc019SAndroid Build Coastguard Worker 
596*d83cc019SAndroid Build Coastguard Worker 	struct {
597*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:2;
598*d83cc019SAndroid Build Coastguard Worker 		unsigned int ia_dest_blend_factor:5;
599*d83cc019SAndroid Build Coastguard Worker 		unsigned int ia_src_blend_factor:5;
600*d83cc019SAndroid Build Coastguard Worker 		unsigned int ia_blend_function:3;
601*d83cc019SAndroid Build Coastguard Worker 		unsigned int stats_enable:1;
602*d83cc019SAndroid Build Coastguard Worker 		unsigned int logicop_func:4;
603*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad1:10;
604*d83cc019SAndroid Build Coastguard Worker 		unsigned int round_disable:1;
605*d83cc019SAndroid Build Coastguard Worker 		unsigned int dither_enable:1;
606*d83cc019SAndroid Build Coastguard Worker 	} cc5;
607*d83cc019SAndroid Build Coastguard Worker 
608*d83cc019SAndroid Build Coastguard Worker 	struct {
609*d83cc019SAndroid Build Coastguard Worker 		unsigned int clamp_post_alpha_blend:1;
610*d83cc019SAndroid Build Coastguard Worker 		unsigned int clamp_pre_alpha_blend:1;
611*d83cc019SAndroid Build Coastguard Worker 		unsigned int clamp_range:2;
612*d83cc019SAndroid Build Coastguard Worker 		unsigned int pad0:11;
613*d83cc019SAndroid Build Coastguard Worker 		unsigned int y_dither_offset:2;
614*d83cc019SAndroid Build Coastguard Worker 		unsigned int x_dither_offset:2;
615*d83cc019SAndroid Build Coastguard Worker 		unsigned int dest_blend_factor:5;
616*d83cc019SAndroid Build Coastguard Worker 		unsigned int src_blend_factor:5;
617*d83cc019SAndroid Build Coastguard Worker 		unsigned int blend_function:3;
618*d83cc019SAndroid Build Coastguard Worker 	} cc6;
619*d83cc019SAndroid Build Coastguard Worker 
620*d83cc019SAndroid Build Coastguard Worker 	struct {
621*d83cc019SAndroid Build Coastguard Worker 		union {
622*d83cc019SAndroid Build Coastguard Worker 			float f;
623*d83cc019SAndroid Build Coastguard Worker 			unsigned char ub[4];
624*d83cc019SAndroid Build Coastguard Worker 		} alpha_ref;
625*d83cc019SAndroid Build Coastguard Worker 	} cc7;
626*d83cc019SAndroid Build Coastguard Worker };
627*d83cc019SAndroid Build Coastguard Worker 
628*d83cc019SAndroid Build Coastguard Worker #endif
629