5aa150e70ba569b9bf66373e4c9e7727524d0922
[mesa.git] / src / gallium / drivers / ilo / ilo_gpe_gen7.h
1 /*
2 * Mesa 3-D graphics library
3 *
4 * Copyright (C) 2013 LunarG, Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included
14 * in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *
24 * Authors:
25 * Chia-I Wu <olv@lunarg.com>
26 */
27
28 #ifndef ILO_GPE_GEN7_H
29 #define ILO_GPE_GEN7_H
30
31 #include "ilo_common.h"
32 #include "ilo_gpe_gen6.h"
33
34 /**
35 * Commands that GEN7 GPE could emit.
36 */
37 enum ilo_gpe_gen7_command {
38 ILO_GPE_GEN7_STATE_BASE_ADDRESS, /* (0x0, 0x1, 0x01) */
39 ILO_GPE_GEN7_STATE_SIP, /* (0x0, 0x1, 0x02) */
40 ILO_GPE_GEN7_3DSTATE_VF_STATISTICS, /* (0x1, 0x0, 0x0b) */
41 ILO_GPE_GEN7_PIPELINE_SELECT, /* (0x1, 0x1, 0x04) */
42 ILO_GPE_GEN7_MEDIA_VFE_STATE, /* (0x2, 0x0, 0x00) */
43 ILO_GPE_GEN7_MEDIA_CURBE_LOAD, /* (0x2, 0x0, 0x01) */
44 ILO_GPE_GEN7_MEDIA_INTERFACE_DESCRIPTOR_LOAD, /* (0x2, 0x0, 0x02) */
45 ILO_GPE_GEN7_MEDIA_STATE_FLUSH, /* (0x2, 0x0, 0x04) */
46 ILO_GPE_GEN7_GPGPU_WALKER, /* (0x2, 0x1, 0x05) */
47 ILO_GPE_GEN7_3DSTATE_CLEAR_PARAMS, /* (0x3, 0x0, 0x04) */
48 ILO_GPE_GEN7_3DSTATE_DEPTH_BUFFER, /* (0x3, 0x0, 0x05) */
49 ILO_GPE_GEN7_3DSTATE_STENCIL_BUFFER, /* (0x3, 0x0, 0x06) */
50 ILO_GPE_GEN7_3DSTATE_HIER_DEPTH_BUFFER, /* (0x3, 0x0, 0x07) */
51 ILO_GPE_GEN7_3DSTATE_VERTEX_BUFFERS, /* (0x3, 0x0, 0x08) */
52 ILO_GPE_GEN7_3DSTATE_VERTEX_ELEMENTS, /* (0x3, 0x0, 0x09) */
53 ILO_GPE_GEN7_3DSTATE_INDEX_BUFFER, /* (0x3, 0x0, 0x0a) */
54 ILO_GPE_GEN7_3DSTATE_CC_STATE_POINTERS, /* (0x3, 0x0, 0x0e) */
55 ILO_GPE_GEN7_3DSTATE_SCISSOR_STATE_POINTERS, /* (0x3, 0x0, 0x0f) */
56 ILO_GPE_GEN7_3DSTATE_VS, /* (0x3, 0x0, 0x10) */
57 ILO_GPE_GEN7_3DSTATE_GS, /* (0x3, 0x0, 0x11) */
58 ILO_GPE_GEN7_3DSTATE_CLIP, /* (0x3, 0x0, 0x12) */
59 ILO_GPE_GEN7_3DSTATE_SF, /* (0x3, 0x0, 0x13) */
60 ILO_GPE_GEN7_3DSTATE_WM, /* (0x3, 0x0, 0x14) */
61 ILO_GPE_GEN7_3DSTATE_CONSTANT_VS, /* (0x3, 0x0, 0x15) */
62 ILO_GPE_GEN7_3DSTATE_CONSTANT_GS, /* (0x3, 0x0, 0x16) */
63 ILO_GPE_GEN7_3DSTATE_CONSTANT_PS, /* (0x3, 0x0, 0x17) */
64 ILO_GPE_GEN7_3DSTATE_SAMPLE_MASK, /* (0x3, 0x0, 0x18) */
65 ILO_GPE_GEN7_3DSTATE_CONSTANT_HS, /* (0x3, 0x0, 0x19) */
66 ILO_GPE_GEN7_3DSTATE_CONSTANT_DS, /* (0x3, 0x0, 0x1a) */
67 ILO_GPE_GEN7_3DSTATE_HS, /* (0x3, 0x0, 0x1b) */
68 ILO_GPE_GEN7_3DSTATE_TE, /* (0x3, 0x0, 0x1c) */
69 ILO_GPE_GEN7_3DSTATE_DS, /* (0x3, 0x0, 0x1d) */
70 ILO_GPE_GEN7_3DSTATE_STREAMOUT, /* (0x3, 0x0, 0x1e) */
71 ILO_GPE_GEN7_3DSTATE_SBE, /* (0x3, 0x0, 0x1f) */
72 ILO_GPE_GEN7_3DSTATE_PS, /* (0x3, 0x0, 0x20) */
73 ILO_GPE_GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP, /* (0x3, 0x0, 0x21) */
74 ILO_GPE_GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC, /* (0x3, 0x0, 0x23) */
75 ILO_GPE_GEN7_3DSTATE_BLEND_STATE_POINTERS, /* (0x3, 0x0, 0x24) */
76 ILO_GPE_GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS, /* (0x3, 0x0, 0x25) */
77 ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS, /* (0x3, 0x0, 0x26) */
78 ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS, /* (0x3, 0x0, 0x27) */
79 ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS, /* (0x3, 0x0, 0x28) */
80 ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS, /* (0x3, 0x0, 0x29) */
81 ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS, /* (0x3, 0x0, 0x2a) */
82 ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS, /* (0x3, 0x0, 0x2b) */
83 ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_HS, /* (0x3, 0x0, 0x2c) */
84 ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_DS, /* (0x3, 0x0, 0x2d) */
85 ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS, /* (0x3, 0x0, 0x2e) */
86 ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS, /* (0x3, 0x0, 0x2f) */
87 ILO_GPE_GEN7_3DSTATE_URB_VS, /* (0x3, 0x0, 0x30) */
88 ILO_GPE_GEN7_3DSTATE_URB_HS, /* (0x3, 0x0, 0x31) */
89 ILO_GPE_GEN7_3DSTATE_URB_DS, /* (0x3, 0x0, 0x32) */
90 ILO_GPE_GEN7_3DSTATE_URB_GS, /* (0x3, 0x0, 0x33) */
91 ILO_GPE_GEN7_3DSTATE_DRAWING_RECTANGLE, /* (0x3, 0x1, 0x00) */
92 ILO_GPE_GEN7_3DSTATE_POLY_STIPPLE_OFFSET, /* (0x3, 0x1, 0x06) */
93 ILO_GPE_GEN7_3DSTATE_POLY_STIPPLE_PATTERN, /* (0x3, 0x1, 0x07) */
94 ILO_GPE_GEN7_3DSTATE_LINE_STIPPLE, /* (0x3, 0x1, 0x08) */
95 ILO_GPE_GEN7_3DSTATE_AA_LINE_PARAMETERS, /* (0x3, 0x1, 0x0a) */
96 ILO_GPE_GEN7_3DSTATE_MULTISAMPLE, /* (0x3, 0x1, 0x0d) */
97 ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS, /* (0x3, 0x1, 0x12) */
98 ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_HS, /* (0x3, 0x1, 0x13) */
99 ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_DS, /* (0x3, 0x1, 0x14) */
100 ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_GS, /* (0x3, 0x1, 0x15) */
101 ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS, /* (0x3, 0x1, 0x16) */
102 ILO_GPE_GEN7_3DSTATE_SO_DECL_LIST, /* (0x3, 0x1, 0x17) */
103 ILO_GPE_GEN7_3DSTATE_SO_BUFFER, /* (0x3, 0x1, 0x18) */
104 ILO_GPE_GEN7_PIPE_CONTROL, /* (0x3, 0x2, 0x00) */
105 ILO_GPE_GEN7_3DPRIMITIVE, /* (0x3, 0x3, 0x00) */
106
107 ILO_GPE_GEN7_COMMAND_COUNT,
108 };
109
110 /**
111 * Indirect states that GEN7 GPE could emit.
112 */
113 enum ilo_gpe_gen7_state {
114 ILO_GPE_GEN7_INTERFACE_DESCRIPTOR_DATA,
115 ILO_GPE_GEN7_SF_CLIP_VIEWPORT,
116 ILO_GPE_GEN7_CC_VIEWPORT,
117 ILO_GPE_GEN7_COLOR_CALC_STATE,
118 ILO_GPE_GEN7_BLEND_STATE,
119 ILO_GPE_GEN7_DEPTH_STENCIL_STATE,
120 ILO_GPE_GEN7_SCISSOR_RECT,
121 ILO_GPE_GEN7_BINDING_TABLE_STATE,
122 ILO_GPE_GEN7_SURFACE_STATE,
123 ILO_GPE_GEN7_SAMPLER_STATE,
124 ILO_GPE_GEN7_SAMPLER_BORDER_COLOR_STATE,
125 ILO_GPE_GEN7_PUSH_CONSTANT_BUFFER,
126
127 ILO_GPE_GEN7_STATE_COUNT,
128 };
129
130 typedef ilo_gpe_gen6_STATE_BASE_ADDRESS ilo_gpe_gen7_STATE_BASE_ADDRESS;
131 typedef ilo_gpe_gen6_STATE_SIP ilo_gpe_gen7_STATE_SIP;
132 typedef ilo_gpe_gen6_3DSTATE_VF_STATISTICS ilo_gpe_gen7_3DSTATE_VF_STATISTICS;
133 typedef ilo_gpe_gen6_PIPELINE_SELECT ilo_gpe_gen7_PIPELINE_SELECT;
134 typedef ilo_gpe_gen6_MEDIA_VFE_STATE ilo_gpe_gen7_MEDIA_VFE_STATE;
135 typedef ilo_gpe_gen6_MEDIA_CURBE_LOAD ilo_gpe_gen7_MEDIA_CURBE_LOAD;
136 typedef ilo_gpe_gen6_MEDIA_INTERFACE_DESCRIPTOR_LOAD ilo_gpe_gen7_MEDIA_INTERFACE_DESCRIPTOR_LOAD;
137 typedef ilo_gpe_gen6_MEDIA_STATE_FLUSH ilo_gpe_gen7_MEDIA_STATE_FLUSH;
138
139 typedef void
140 (*ilo_gpe_gen7_GPGPU_WALKER)(const struct ilo_gpe *gpe,
141 struct ilo_cp *cp);
142
143 typedef ilo_gpe_gen6_3DSTATE_CLEAR_PARAMS ilo_gpe_gen7_3DSTATE_CLEAR_PARAMS;
144
145 typedef void
146 (*ilo_gpe_gen7_3DSTATE_DEPTH_BUFFER)(const struct ilo_gpe *gpe,
147 const struct pipe_surface *surface,
148 const struct pipe_depth_stencil_alpha_state *dsa,
149 bool hiz,
150 struct ilo_cp *cp);
151
152 typedef ilo_gpe_gen6_3DSTATE_STENCIL_BUFFER ilo_gpe_gen7_3DSTATE_STENCIL_BUFFER;
153 typedef ilo_gpe_gen6_3DSTATE_HIER_DEPTH_BUFFER ilo_gpe_gen7_3DSTATE_HIER_DEPTH_BUFFER;
154 typedef ilo_gpe_gen6_3DSTATE_VERTEX_BUFFERS ilo_gpe_gen7_3DSTATE_VERTEX_BUFFERS;
155 typedef ilo_gpe_gen6_3DSTATE_VERTEX_ELEMENTS ilo_gpe_gen7_3DSTATE_VERTEX_ELEMENTS;
156 typedef ilo_gpe_gen6_3DSTATE_INDEX_BUFFER ilo_gpe_gen7_3DSTATE_INDEX_BUFFER;
157
158 typedef void
159 (*ilo_gpe_gen7_3DSTATE_CC_STATE_POINTERS)(const struct ilo_gpe *gpe,
160 uint32_t color_calc_state,
161 struct ilo_cp *cp);
162
163 typedef ilo_gpe_gen6_3DSTATE_SCISSOR_STATE_POINTERS ilo_gpe_gen7_3DSTATE_SCISSOR_STATE_POINTERS;
164 typedef ilo_gpe_gen6_3DSTATE_VS ilo_gpe_gen7_3DSTATE_VS;
165
166 typedef void
167 (*ilo_gpe_gen7_3DSTATE_GS)(const struct ilo_gpe *gpe,
168 const struct ilo_shader *gs,
169 int max_threads, int num_samplers,
170 struct ilo_cp *cp);
171
172 typedef ilo_gpe_gen6_3DSTATE_CLIP ilo_gpe_gen7_3DSTATE_CLIP;
173
174 typedef void
175 (*ilo_gpe_gen7_3DSTATE_SF)(const struct ilo_gpe *gpe,
176 const struct pipe_rasterizer_state *rasterizer,
177 const struct pipe_surface *zs_surf,
178 struct ilo_cp *cp);
179
180 typedef void
181 (*ilo_gpe_gen7_3DSTATE_WM)(const struct ilo_gpe *gpe,
182 const struct ilo_shader *fs,
183 const struct pipe_rasterizer_state *rasterizer,
184 bool cc_may_kill,
185 struct ilo_cp *cp);
186
187 typedef ilo_gpe_gen6_3DSTATE_CONSTANT_VS ilo_gpe_gen7_3DSTATE_CONSTANT_VS;
188 typedef ilo_gpe_gen6_3DSTATE_CONSTANT_GS ilo_gpe_gen7_3DSTATE_CONSTANT_GS;
189 typedef ilo_gpe_gen6_3DSTATE_CONSTANT_PS ilo_gpe_gen7_3DSTATE_CONSTANT_PS;
190
191 typedef void
192 (*ilo_gpe_gen7_3DSTATE_SAMPLE_MASK)(const struct ilo_gpe *gpe,
193 unsigned sample_mask,
194 int num_samples,
195 struct ilo_cp *cp);
196
197 typedef void
198 (*ilo_gpe_gen7_3DSTATE_CONSTANT_HS)(const struct ilo_gpe *gpe,
199 const uint32_t *bufs, const int *sizes,
200 int num_bufs,
201 struct ilo_cp *cp);
202
203 typedef void
204 (*ilo_gpe_gen7_3DSTATE_CONSTANT_DS)(const struct ilo_gpe *gpe,
205 const uint32_t *bufs, const int *sizes,
206 int num_bufs,
207 struct ilo_cp *cp);
208
209 typedef void
210 (*ilo_gpe_gen7_3DSTATE_HS)(const struct ilo_gpe *gpe,
211 const struct ilo_shader *hs,
212 int max_threads, int num_samplers,
213 struct ilo_cp *cp);
214
215 typedef void
216 (*ilo_gpe_gen7_3DSTATE_TE)(const struct ilo_gpe *gpe,
217 struct ilo_cp *cp);
218
219 typedef void
220 (*ilo_gpe_gen7_3DSTATE_DS)(const struct ilo_gpe *gpe,
221 const struct ilo_shader *ds,
222 int max_threads, int num_samplers,
223 struct ilo_cp *cp);
224
225 typedef void
226 (*ilo_gpe_gen7_3DSTATE_STREAMOUT)(const struct ilo_gpe *gpe,
227 bool enable,
228 bool rasterizer_discard,
229 bool flatshade_first,
230 struct ilo_cp *cp);
231
232 typedef void
233 (*ilo_gpe_gen7_3DSTATE_SBE)(const struct ilo_gpe *gpe,
234 const struct pipe_rasterizer_state *rasterizer,
235 const struct ilo_shader *fs,
236 const struct ilo_shader *last_sh,
237 struct ilo_cp *cp);
238
239 typedef void
240 (*ilo_gpe_gen7_3DSTATE_PS)(const struct ilo_gpe *gpe,
241 const struct ilo_shader *fs,
242 int max_threads, int num_samplers,
243 bool dual_blend,
244 struct ilo_cp *cp);
245
246 typedef void
247 (*ilo_gpe_gen7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP)(const struct ilo_gpe *gpe,
248 uint32_t viewport,
249 struct ilo_cp *cp);
250
251 typedef void
252 (*ilo_gpe_gen7_3DSTATE_VIEWPORT_STATE_POINTERS_CC)(const struct ilo_gpe *gpe,
253 uint32_t viewport,
254 struct ilo_cp *cp);
255
256 typedef void
257 (*ilo_gpe_gen7_3DSTATE_BLEND_STATE_POINTERS)(const struct ilo_gpe *gpe,
258 uint32_t blend,
259 struct ilo_cp *cp);
260
261 typedef void
262 (*ilo_gpe_gen7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS)(const struct ilo_gpe *gpe,
263 uint32_t depth_stencil,
264 struct ilo_cp *cp);
265
266 typedef void
267 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_VS)(const struct ilo_gpe *gpe,
268 uint32_t binding_table,
269 struct ilo_cp *cp);
270
271 typedef void
272 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_HS)(const struct ilo_gpe *gpe,
273 uint32_t binding_table,
274 struct ilo_cp *cp);
275
276 typedef void
277 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_DS)(const struct ilo_gpe *gpe,
278 uint32_t binding_table,
279 struct ilo_cp *cp);
280
281 typedef void
282 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_GS)(const struct ilo_gpe *gpe,
283 uint32_t binding_table,
284 struct ilo_cp *cp);
285
286 typedef void
287 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_PS)(const struct ilo_gpe *gpe,
288 uint32_t binding_table,
289 struct ilo_cp *cp);
290
291 typedef void
292 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_VS)(const struct ilo_gpe *gpe,
293 uint32_t sampler_state,
294 struct ilo_cp *cp);
295
296 typedef void
297 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_HS)(const struct ilo_gpe *gpe,
298 uint32_t sampler_state,
299 struct ilo_cp *cp);
300
301 typedef void
302 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_DS)(const struct ilo_gpe *gpe,
303 uint32_t sampler_state,
304 struct ilo_cp *cp);
305
306 typedef void
307 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_GS)(const struct ilo_gpe *gpe,
308 uint32_t sampler_state,
309 struct ilo_cp *cp);
310
311 typedef void
312 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_PS)(const struct ilo_gpe *gpe,
313 uint32_t sampler_state,
314 struct ilo_cp *cp);
315
316 typedef void
317 (*ilo_gpe_gen7_3DSTATE_URB_VS)(const struct ilo_gpe *gpe,
318 int offset, int size, int entry_size,
319 struct ilo_cp *cp);
320
321 typedef void
322 (*ilo_gpe_gen7_3DSTATE_URB_HS)(const struct ilo_gpe *gpe,
323 int offset, int size, int entry_size,
324 struct ilo_cp *cp);
325
326 typedef void
327 (*ilo_gpe_gen7_3DSTATE_URB_DS)(const struct ilo_gpe *gpe,
328 int offset, int size, int entry_size,
329 struct ilo_cp *cp);
330
331 typedef void
332 (*ilo_gpe_gen7_3DSTATE_URB_GS)(const struct ilo_gpe *gpe,
333 int offset, int size, int entry_size,
334 struct ilo_cp *cp);
335
336 typedef ilo_gpe_gen6_3DSTATE_DRAWING_RECTANGLE ilo_gpe_gen7_3DSTATE_DRAWING_RECTANGLE;
337 typedef ilo_gpe_gen6_3DSTATE_POLY_STIPPLE_OFFSET ilo_gpe_gen7_3DSTATE_POLY_STIPPLE_OFFSET;
338 typedef ilo_gpe_gen6_3DSTATE_POLY_STIPPLE_PATTERN ilo_gpe_gen7_3DSTATE_POLY_STIPPLE_PATTERN;
339 typedef ilo_gpe_gen6_3DSTATE_LINE_STIPPLE ilo_gpe_gen7_3DSTATE_LINE_STIPPLE;
340 typedef ilo_gpe_gen6_3DSTATE_AA_LINE_PARAMETERS ilo_gpe_gen7_3DSTATE_AA_LINE_PARAMETERS;
341 typedef ilo_gpe_gen6_3DSTATE_MULTISAMPLE ilo_gpe_gen7_3DSTATE_MULTISAMPLE;
342
343 typedef void
344 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_VS)(const struct ilo_gpe *gpe,
345 int offset, int size,
346 struct ilo_cp *cp);
347
348 typedef void
349 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_HS)(const struct ilo_gpe *gpe,
350 int offset, int size,
351 struct ilo_cp *cp);
352
353 typedef void
354 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_DS)(const struct ilo_gpe *gpe,
355 int offset, int size,
356 struct ilo_cp *cp);
357
358 typedef void
359 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_GS)(const struct ilo_gpe *gpe,
360 int offset, int size,
361 struct ilo_cp *cp);
362
363 typedef void
364 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_PS)(const struct ilo_gpe *gpe,
365 int offset, int size,
366 struct ilo_cp *cp);
367
368 typedef void
369 (*ilo_gpe_gen7_3DSTATE_SO_DECL_LIST)(const struct ilo_gpe *gpe,
370 struct ilo_cp *cp);
371
372 typedef void
373 (*ilo_gpe_gen7_3DSTATE_SO_BUFFER)(const struct ilo_gpe *gpe,
374 int index,
375 bool enable,
376 struct ilo_cp *cp);
377
378 typedef ilo_gpe_gen6_PIPE_CONTROL ilo_gpe_gen7_PIPE_CONTROL;
379 typedef ilo_gpe_gen6_3DPRIMITIVE ilo_gpe_gen7_3DPRIMITIVE;
380 typedef ilo_gpe_gen6_INTERFACE_DESCRIPTOR_DATA ilo_gpe_gen7_INTERFACE_DESCRIPTOR_DATA;
381
382 typedef uint32_t
383 (*ilo_gpe_gen7_SF_CLIP_VIEWPORT)(const struct ilo_gpe *gpe,
384 const struct pipe_viewport_state *viewports,
385 int num_viewports,
386 struct ilo_cp *cp);
387
388 typedef ilo_gpe_gen6_CC_VIEWPORT ilo_gpe_gen7_CC_VIEWPORT;
389 typedef ilo_gpe_gen6_COLOR_CALC_STATE ilo_gpe_gen7_COLOR_CALC_STATE;
390 typedef ilo_gpe_gen6_BLEND_STATE ilo_gpe_gen7_BLEND_STATE;
391 typedef ilo_gpe_gen6_DEPTH_STENCIL_STATE ilo_gpe_gen7_DEPTH_STENCIL_STATE;
392 typedef ilo_gpe_gen6_SCISSOR_RECT ilo_gpe_gen7_SCISSOR_RECT;
393 typedef ilo_gpe_gen6_BINDING_TABLE_STATE ilo_gpe_gen7_BINDING_TABLE_STATE;
394 typedef ilo_gpe_gen6_surf_SURFACE_STATE ilo_gpe_gen7_surf_SURFACE_STATE;
395 typedef ilo_gpe_gen6_view_SURFACE_STATE ilo_gpe_gen7_view_SURFACE_STATE;
396 typedef ilo_gpe_gen6_cbuf_SURFACE_STATE ilo_gpe_gen7_cbuf_SURFACE_STATE;
397 typedef ilo_gpe_gen6_SAMPLER_STATE ilo_gpe_gen7_SAMPLER_STATE;
398 typedef ilo_gpe_gen6_SAMPLER_BORDER_COLOR_STATE ilo_gpe_gen7_SAMPLER_BORDER_COLOR_STATE;
399 typedef ilo_gpe_gen6_push_constant_buffer ilo_gpe_gen7_push_constant_buffer;
400
401 /**
402 * GEN7 graphics processing engine
403 *
404 * \see ilo_gpe_gen6
405 */
406 struct ilo_gpe_gen7 {
407 int (*estimate_command_size)(const struct ilo_gpe *gpe,
408 enum ilo_gpe_gen7_command cmd,
409 int arg);
410
411 int (*estimate_state_size)(const struct ilo_gpe *gpe,
412 enum ilo_gpe_gen7_state state,
413 int arg);
414
415 #define GEN7_EMIT(name) ilo_gpe_gen7_ ## name emit_ ## name
416 GEN7_EMIT(STATE_BASE_ADDRESS);
417 GEN7_EMIT(STATE_SIP);
418 GEN7_EMIT(3DSTATE_VF_STATISTICS);
419 GEN7_EMIT(PIPELINE_SELECT);
420 GEN7_EMIT(MEDIA_VFE_STATE);
421 GEN7_EMIT(MEDIA_CURBE_LOAD);
422 GEN7_EMIT(MEDIA_INTERFACE_DESCRIPTOR_LOAD);
423 GEN7_EMIT(MEDIA_STATE_FLUSH);
424 GEN7_EMIT(GPGPU_WALKER);
425 GEN7_EMIT(3DSTATE_CLEAR_PARAMS);
426 GEN7_EMIT(3DSTATE_DEPTH_BUFFER);
427 GEN7_EMIT(3DSTATE_STENCIL_BUFFER);
428 GEN7_EMIT(3DSTATE_HIER_DEPTH_BUFFER);
429 GEN7_EMIT(3DSTATE_VERTEX_BUFFERS);
430 GEN7_EMIT(3DSTATE_VERTEX_ELEMENTS);
431 GEN7_EMIT(3DSTATE_INDEX_BUFFER);
432 GEN7_EMIT(3DSTATE_CC_STATE_POINTERS);
433 GEN7_EMIT(3DSTATE_SCISSOR_STATE_POINTERS);
434 GEN7_EMIT(3DSTATE_VS);
435 GEN7_EMIT(3DSTATE_GS);
436 GEN7_EMIT(3DSTATE_CLIP);
437 GEN7_EMIT(3DSTATE_SF);
438 GEN7_EMIT(3DSTATE_WM);
439 GEN7_EMIT(3DSTATE_CONSTANT_VS);
440 GEN7_EMIT(3DSTATE_CONSTANT_GS);
441 GEN7_EMIT(3DSTATE_CONSTANT_PS);
442 GEN7_EMIT(3DSTATE_SAMPLE_MASK);
443 GEN7_EMIT(3DSTATE_CONSTANT_HS);
444 GEN7_EMIT(3DSTATE_CONSTANT_DS);
445 GEN7_EMIT(3DSTATE_HS);
446 GEN7_EMIT(3DSTATE_TE);
447 GEN7_EMIT(3DSTATE_DS);
448 GEN7_EMIT(3DSTATE_STREAMOUT);
449 GEN7_EMIT(3DSTATE_SBE);
450 GEN7_EMIT(3DSTATE_PS);
451 GEN7_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP);
452 GEN7_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS_CC);
453 GEN7_EMIT(3DSTATE_BLEND_STATE_POINTERS);
454 GEN7_EMIT(3DSTATE_DEPTH_STENCIL_STATE_POINTERS);
455 GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_VS);
456 GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_HS);
457 GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_DS);
458 GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_GS);
459 GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_PS);
460 GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_VS);
461 GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_HS);
462 GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_DS);
463 GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_GS);
464 GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_PS);
465 GEN7_EMIT(3DSTATE_URB_VS);
466 GEN7_EMIT(3DSTATE_URB_HS);
467 GEN7_EMIT(3DSTATE_URB_DS);
468 GEN7_EMIT(3DSTATE_URB_GS);
469 GEN7_EMIT(3DSTATE_DRAWING_RECTANGLE);
470 GEN7_EMIT(3DSTATE_POLY_STIPPLE_OFFSET);
471 GEN7_EMIT(3DSTATE_POLY_STIPPLE_PATTERN);
472 GEN7_EMIT(3DSTATE_LINE_STIPPLE);
473 GEN7_EMIT(3DSTATE_AA_LINE_PARAMETERS);
474 GEN7_EMIT(3DSTATE_MULTISAMPLE);
475 GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_VS);
476 GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_HS);
477 GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_DS);
478 GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_GS);
479 GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_PS);
480 GEN7_EMIT(3DSTATE_SO_DECL_LIST);
481 GEN7_EMIT(3DSTATE_SO_BUFFER);
482 GEN7_EMIT(PIPE_CONTROL);
483 GEN7_EMIT(3DPRIMITIVE);
484 GEN7_EMIT(INTERFACE_DESCRIPTOR_DATA);
485 GEN7_EMIT(SF_CLIP_VIEWPORT);
486 GEN7_EMIT(CC_VIEWPORT);
487 GEN7_EMIT(COLOR_CALC_STATE);
488 GEN7_EMIT(BLEND_STATE);
489 GEN7_EMIT(DEPTH_STENCIL_STATE);
490 GEN7_EMIT(SCISSOR_RECT);
491 GEN7_EMIT(BINDING_TABLE_STATE);
492 GEN7_EMIT(surf_SURFACE_STATE);
493 GEN7_EMIT(view_SURFACE_STATE);
494 GEN7_EMIT(cbuf_SURFACE_STATE);
495 GEN7_EMIT(SAMPLER_STATE);
496 GEN7_EMIT(SAMPLER_BORDER_COLOR_STATE);
497 GEN7_EMIT(push_constant_buffer);
498 #undef GEN7_EMIT
499 };
500
501 const struct ilo_gpe_gen7 *
502 ilo_gpe_gen7_get(void);
503
504 #endif /* ILO_GPE_GEN7_H */