OSDN Git Service

d270ea677d62c9ae221fd4f1d808a015c32b2c85
[android-x86/external-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_dev_info *dev,
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_dev_info *dev,
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_dev_info *dev,
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_dev_info *dev,
168                            const struct ilo_shader *gs,
169                            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_dev_info *dev,
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_dev_info *dev,
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_dev_info *dev,
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_dev_info *dev,
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_dev_info *dev,
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_dev_info *dev,
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_dev_info *dev,
217                            struct ilo_cp *cp);
218
219 typedef void
220 (*ilo_gpe_gen7_3DSTATE_DS)(const struct ilo_dev_info *dev,
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_dev_info *dev,
227                                   unsigned buffer_mask,
228                                   int vertex_attrib_count,
229                                   bool rasterizer_discard,
230                                   struct ilo_cp *cp);
231
232 typedef void
233 (*ilo_gpe_gen7_3DSTATE_SBE)(const struct ilo_dev_info *dev,
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_dev_info *dev,
241                            const struct ilo_shader *fs,
242                            int num_samplers, bool dual_blend,
243                            struct ilo_cp *cp);
244
245 typedef void
246 (*ilo_gpe_gen7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP)(const struct ilo_dev_info *dev,
247                                                         uint32_t viewport,
248                                                         struct ilo_cp *cp);
249
250 typedef void
251 (*ilo_gpe_gen7_3DSTATE_VIEWPORT_STATE_POINTERS_CC)(const struct ilo_dev_info *dev,
252                                                    uint32_t viewport,
253                                                    struct ilo_cp *cp);
254
255 typedef void
256 (*ilo_gpe_gen7_3DSTATE_BLEND_STATE_POINTERS)(const struct ilo_dev_info *dev,
257                                              uint32_t blend,
258                                              struct ilo_cp *cp);
259
260 typedef void
261 (*ilo_gpe_gen7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS)(const struct ilo_dev_info *dev,
262                                                      uint32_t depth_stencil,
263                                                      struct ilo_cp *cp);
264
265 typedef void
266 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_VS)(const struct ilo_dev_info *dev,
267                                                   uint32_t binding_table,
268                                                   struct ilo_cp *cp);
269
270 typedef void
271 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_HS)(const struct ilo_dev_info *dev,
272                                                   uint32_t binding_table,
273                                                   struct ilo_cp *cp);
274
275 typedef void
276 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_DS)(const struct ilo_dev_info *dev,
277                                                   uint32_t binding_table,
278                                                   struct ilo_cp *cp);
279
280 typedef void
281 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_GS)(const struct ilo_dev_info *dev,
282                                                   uint32_t binding_table,
283                                                   struct ilo_cp *cp);
284
285 typedef void
286 (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_PS)(const struct ilo_dev_info *dev,
287                                                   uint32_t binding_table,
288                                                   struct ilo_cp *cp);
289
290 typedef void
291 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_VS)(const struct ilo_dev_info *dev,
292                                                   uint32_t sampler_state,
293                                                   struct ilo_cp *cp);
294
295 typedef void
296 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_HS)(const struct ilo_dev_info *dev,
297                                                   uint32_t sampler_state,
298                                                   struct ilo_cp *cp);
299
300 typedef void
301 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_DS)(const struct ilo_dev_info *dev,
302                                                   uint32_t sampler_state,
303                                                   struct ilo_cp *cp);
304
305 typedef void
306 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_GS)(const struct ilo_dev_info *dev,
307                                                   uint32_t sampler_state,
308                                                   struct ilo_cp *cp);
309
310 typedef void
311 (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_PS)(const struct ilo_dev_info *dev,
312                                                   uint32_t sampler_state,
313                                                   struct ilo_cp *cp);
314
315 typedef void
316 (*ilo_gpe_gen7_3DSTATE_URB_VS)(const struct ilo_dev_info *dev,
317                                int offset, int size, int entry_size,
318                                struct ilo_cp *cp);
319
320 typedef void
321 (*ilo_gpe_gen7_3DSTATE_URB_HS)(const struct ilo_dev_info *dev,
322                                int offset, int size, int entry_size,
323                                struct ilo_cp *cp);
324
325 typedef void
326 (*ilo_gpe_gen7_3DSTATE_URB_DS)(const struct ilo_dev_info *dev,
327                                int offset, int size, int entry_size,
328                                struct ilo_cp *cp);
329
330 typedef void
331 (*ilo_gpe_gen7_3DSTATE_URB_GS)(const struct ilo_dev_info *dev,
332                                int offset, int size, int entry_size,
333                                struct ilo_cp *cp);
334
335 typedef ilo_gpe_gen6_3DSTATE_DRAWING_RECTANGLE ilo_gpe_gen7_3DSTATE_DRAWING_RECTANGLE;
336 typedef ilo_gpe_gen6_3DSTATE_POLY_STIPPLE_OFFSET ilo_gpe_gen7_3DSTATE_POLY_STIPPLE_OFFSET;
337 typedef ilo_gpe_gen6_3DSTATE_POLY_STIPPLE_PATTERN ilo_gpe_gen7_3DSTATE_POLY_STIPPLE_PATTERN;
338 typedef ilo_gpe_gen6_3DSTATE_LINE_STIPPLE ilo_gpe_gen7_3DSTATE_LINE_STIPPLE;
339 typedef ilo_gpe_gen6_3DSTATE_AA_LINE_PARAMETERS ilo_gpe_gen7_3DSTATE_AA_LINE_PARAMETERS;
340 typedef ilo_gpe_gen6_3DSTATE_MULTISAMPLE ilo_gpe_gen7_3DSTATE_MULTISAMPLE;
341
342 typedef void
343 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_VS)(const struct ilo_dev_info *dev,
344                                                int offset, int size,
345                                                struct ilo_cp *cp);
346
347 typedef void
348 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_HS)(const struct ilo_dev_info *dev,
349                                                int offset, int size,
350                                                struct ilo_cp *cp);
351
352 typedef void
353 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_DS)(const struct ilo_dev_info *dev,
354                                                int offset, int size,
355                                                struct ilo_cp *cp);
356
357 typedef void
358 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_GS)(const struct ilo_dev_info *dev,
359                                                int offset, int size,
360                                                struct ilo_cp *cp);
361
362 typedef void
363 (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_PS)(const struct ilo_dev_info *dev,
364                                                int offset, int size,
365                                                struct ilo_cp *cp);
366
367 typedef void
368 (*ilo_gpe_gen7_3DSTATE_SO_DECL_LIST)(const struct ilo_dev_info *dev,
369                                      const struct pipe_stream_output_info *so_info,
370                                      const struct ilo_shader *sh,
371                                      struct ilo_cp *cp);
372
373 typedef void
374 (*ilo_gpe_gen7_3DSTATE_SO_BUFFER)(const struct ilo_dev_info *dev,
375                                   int index, int base, int stride,
376                                   const struct pipe_stream_output_target *so_target,
377                                   struct ilo_cp *cp);
378
379 typedef ilo_gpe_gen6_PIPE_CONTROL ilo_gpe_gen7_PIPE_CONTROL;
380 typedef ilo_gpe_gen6_3DPRIMITIVE ilo_gpe_gen7_3DPRIMITIVE;
381 typedef ilo_gpe_gen6_INTERFACE_DESCRIPTOR_DATA ilo_gpe_gen7_INTERFACE_DESCRIPTOR_DATA;
382
383 typedef uint32_t
384 (*ilo_gpe_gen7_SF_CLIP_VIEWPORT)(const struct ilo_dev_info *dev,
385                                  const struct ilo_viewport_cso *viewports,
386                                  unsigned num_viewports,
387                                  struct ilo_cp *cp);
388
389 typedef ilo_gpe_gen6_CC_VIEWPORT ilo_gpe_gen7_CC_VIEWPORT;
390 typedef ilo_gpe_gen6_COLOR_CALC_STATE ilo_gpe_gen7_COLOR_CALC_STATE;
391 typedef ilo_gpe_gen6_BLEND_STATE ilo_gpe_gen7_BLEND_STATE;
392 typedef ilo_gpe_gen6_DEPTH_STENCIL_STATE ilo_gpe_gen7_DEPTH_STENCIL_STATE;
393 typedef ilo_gpe_gen6_SCISSOR_RECT ilo_gpe_gen7_SCISSOR_RECT;
394 typedef ilo_gpe_gen6_BINDING_TABLE_STATE ilo_gpe_gen7_BINDING_TABLE_STATE;
395 typedef ilo_gpe_gen6_surf_SURFACE_STATE ilo_gpe_gen7_surf_SURFACE_STATE;
396 typedef ilo_gpe_gen6_view_SURFACE_STATE ilo_gpe_gen7_view_SURFACE_STATE;
397 typedef ilo_gpe_gen6_cbuf_SURFACE_STATE ilo_gpe_gen7_cbuf_SURFACE_STATE;
398 typedef ilo_gpe_gen6_SAMPLER_STATE ilo_gpe_gen7_SAMPLER_STATE;
399 typedef ilo_gpe_gen6_SAMPLER_BORDER_COLOR_STATE ilo_gpe_gen7_SAMPLER_BORDER_COLOR_STATE;
400 typedef ilo_gpe_gen6_push_constant_buffer ilo_gpe_gen7_push_constant_buffer;
401
402 /**
403  * GEN7 graphics processing engine
404  *
405  * \see ilo_gpe_gen6
406  */
407 struct ilo_gpe_gen7 {
408    int (*estimate_command_size)(const struct ilo_dev_info *dev,
409                                 enum ilo_gpe_gen7_command cmd,
410                                 int arg);
411
412    int (*estimate_state_size)(const struct ilo_dev_info *dev,
413                               enum ilo_gpe_gen7_state state,
414                               int arg);
415
416 #define GEN7_EMIT(name) ilo_gpe_gen7_ ## name emit_ ## name
417    GEN7_EMIT(STATE_BASE_ADDRESS);
418    GEN7_EMIT(STATE_SIP);
419    GEN7_EMIT(3DSTATE_VF_STATISTICS);
420    GEN7_EMIT(PIPELINE_SELECT);
421    GEN7_EMIT(MEDIA_VFE_STATE);
422    GEN7_EMIT(MEDIA_CURBE_LOAD);
423    GEN7_EMIT(MEDIA_INTERFACE_DESCRIPTOR_LOAD);
424    GEN7_EMIT(MEDIA_STATE_FLUSH);
425    GEN7_EMIT(GPGPU_WALKER);
426    GEN7_EMIT(3DSTATE_CLEAR_PARAMS);
427    GEN7_EMIT(3DSTATE_DEPTH_BUFFER);
428    GEN7_EMIT(3DSTATE_STENCIL_BUFFER);
429    GEN7_EMIT(3DSTATE_HIER_DEPTH_BUFFER);
430    GEN7_EMIT(3DSTATE_VERTEX_BUFFERS);
431    GEN7_EMIT(3DSTATE_VERTEX_ELEMENTS);
432    GEN7_EMIT(3DSTATE_INDEX_BUFFER);
433    GEN7_EMIT(3DSTATE_CC_STATE_POINTERS);
434    GEN7_EMIT(3DSTATE_SCISSOR_STATE_POINTERS);
435    GEN7_EMIT(3DSTATE_VS);
436    GEN7_EMIT(3DSTATE_GS);
437    GEN7_EMIT(3DSTATE_CLIP);
438    GEN7_EMIT(3DSTATE_SF);
439    GEN7_EMIT(3DSTATE_WM);
440    GEN7_EMIT(3DSTATE_CONSTANT_VS);
441    GEN7_EMIT(3DSTATE_CONSTANT_GS);
442    GEN7_EMIT(3DSTATE_CONSTANT_PS);
443    GEN7_EMIT(3DSTATE_SAMPLE_MASK);
444    GEN7_EMIT(3DSTATE_CONSTANT_HS);
445    GEN7_EMIT(3DSTATE_CONSTANT_DS);
446    GEN7_EMIT(3DSTATE_HS);
447    GEN7_EMIT(3DSTATE_TE);
448    GEN7_EMIT(3DSTATE_DS);
449    GEN7_EMIT(3DSTATE_STREAMOUT);
450    GEN7_EMIT(3DSTATE_SBE);
451    GEN7_EMIT(3DSTATE_PS);
452    GEN7_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP);
453    GEN7_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS_CC);
454    GEN7_EMIT(3DSTATE_BLEND_STATE_POINTERS);
455    GEN7_EMIT(3DSTATE_DEPTH_STENCIL_STATE_POINTERS);
456    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_VS);
457    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_HS);
458    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_DS);
459    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_GS);
460    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_PS);
461    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_VS);
462    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_HS);
463    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_DS);
464    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_GS);
465    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_PS);
466    GEN7_EMIT(3DSTATE_URB_VS);
467    GEN7_EMIT(3DSTATE_URB_HS);
468    GEN7_EMIT(3DSTATE_URB_DS);
469    GEN7_EMIT(3DSTATE_URB_GS);
470    GEN7_EMIT(3DSTATE_DRAWING_RECTANGLE);
471    GEN7_EMIT(3DSTATE_POLY_STIPPLE_OFFSET);
472    GEN7_EMIT(3DSTATE_POLY_STIPPLE_PATTERN);
473    GEN7_EMIT(3DSTATE_LINE_STIPPLE);
474    GEN7_EMIT(3DSTATE_AA_LINE_PARAMETERS);
475    GEN7_EMIT(3DSTATE_MULTISAMPLE);
476    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_VS);
477    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_HS);
478    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_DS);
479    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_GS);
480    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_PS);
481    GEN7_EMIT(3DSTATE_SO_DECL_LIST);
482    GEN7_EMIT(3DSTATE_SO_BUFFER);
483    GEN7_EMIT(PIPE_CONTROL);
484    GEN7_EMIT(3DPRIMITIVE);
485    GEN7_EMIT(INTERFACE_DESCRIPTOR_DATA);
486    GEN7_EMIT(SF_CLIP_VIEWPORT);
487    GEN7_EMIT(CC_VIEWPORT);
488    GEN7_EMIT(COLOR_CALC_STATE);
489    GEN7_EMIT(BLEND_STATE);
490    GEN7_EMIT(DEPTH_STENCIL_STATE);
491    GEN7_EMIT(SCISSOR_RECT);
492    GEN7_EMIT(BINDING_TABLE_STATE);
493    GEN7_EMIT(surf_SURFACE_STATE);
494    GEN7_EMIT(view_SURFACE_STATE);
495    GEN7_EMIT(cbuf_SURFACE_STATE);
496    GEN7_EMIT(SAMPLER_STATE);
497    GEN7_EMIT(SAMPLER_BORDER_COLOR_STATE);
498    GEN7_EMIT(push_constant_buffer);
499 #undef GEN7_EMIT
500 };
501
502 const struct ilo_gpe_gen7 *
503 ilo_gpe_gen7_get(void);
504
505 #endif /* ILO_GPE_GEN7_H */