Subversion Repositories Kolibri OS

Rev

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

  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. typedef ilo_gpe_gen6_3DSTATE_DEPTH_BUFFER ilo_gpe_gen7_3DSTATE_DEPTH_BUFFER;
  145. typedef ilo_gpe_gen6_3DSTATE_STENCIL_BUFFER ilo_gpe_gen7_3DSTATE_STENCIL_BUFFER;
  146. typedef ilo_gpe_gen6_3DSTATE_HIER_DEPTH_BUFFER ilo_gpe_gen7_3DSTATE_HIER_DEPTH_BUFFER;
  147. typedef ilo_gpe_gen6_3DSTATE_VERTEX_BUFFERS ilo_gpe_gen7_3DSTATE_VERTEX_BUFFERS;
  148. typedef ilo_gpe_gen6_3DSTATE_VERTEX_ELEMENTS ilo_gpe_gen7_3DSTATE_VERTEX_ELEMENTS;
  149. typedef ilo_gpe_gen6_3DSTATE_INDEX_BUFFER ilo_gpe_gen7_3DSTATE_INDEX_BUFFER;
  150.  
  151. typedef void
  152. (*ilo_gpe_gen7_3DSTATE_CC_STATE_POINTERS)(const struct ilo_dev_info *dev,
  153.                                           uint32_t color_calc_state,
  154.                                           struct ilo_cp *cp);
  155.  
  156. typedef ilo_gpe_gen6_3DSTATE_SCISSOR_STATE_POINTERS ilo_gpe_gen7_3DSTATE_SCISSOR_STATE_POINTERS;
  157. typedef ilo_gpe_gen6_3DSTATE_VS ilo_gpe_gen7_3DSTATE_VS;
  158.  
  159. typedef void
  160. (*ilo_gpe_gen7_3DSTATE_GS)(const struct ilo_dev_info *dev,
  161.                            const struct ilo_shader_state *gs,
  162.                            int num_samplers,
  163.                            struct ilo_cp *cp);
  164.  
  165. typedef ilo_gpe_gen6_3DSTATE_CLIP ilo_gpe_gen7_3DSTATE_CLIP;
  166.  
  167. typedef void
  168. (*ilo_gpe_gen7_3DSTATE_SF)(const struct ilo_dev_info *dev,
  169.                            const struct ilo_rasterizer_state *rasterizer,
  170.                            const struct pipe_surface *zs_surf,
  171.                            struct ilo_cp *cp);
  172.  
  173. typedef void
  174. (*ilo_gpe_gen7_3DSTATE_WM)(const struct ilo_dev_info *dev,
  175.                            const struct ilo_shader_state *fs,
  176.                            const struct ilo_rasterizer_state *rasterizer,
  177.                            bool cc_may_kill,
  178.                            struct ilo_cp *cp);
  179.  
  180. typedef ilo_gpe_gen6_3DSTATE_CONSTANT_VS ilo_gpe_gen7_3DSTATE_CONSTANT_VS;
  181. typedef ilo_gpe_gen6_3DSTATE_CONSTANT_GS ilo_gpe_gen7_3DSTATE_CONSTANT_GS;
  182. typedef ilo_gpe_gen6_3DSTATE_CONSTANT_PS ilo_gpe_gen7_3DSTATE_CONSTANT_PS;
  183.  
  184. typedef void
  185. (*ilo_gpe_gen7_3DSTATE_SAMPLE_MASK)(const struct ilo_dev_info *dev,
  186.                                     unsigned sample_mask,
  187.                                     int num_samples,
  188.                                     struct ilo_cp *cp);
  189.  
  190. typedef void
  191. (*ilo_gpe_gen7_3DSTATE_CONSTANT_HS)(const struct ilo_dev_info *dev,
  192.                                     const uint32_t *bufs, const int *sizes,
  193.                                     int num_bufs,
  194.                                     struct ilo_cp *cp);
  195.  
  196. typedef void
  197. (*ilo_gpe_gen7_3DSTATE_CONSTANT_DS)(const struct ilo_dev_info *dev,
  198.                                     const uint32_t *bufs, const int *sizes,
  199.                                     int num_bufs,
  200.                                     struct ilo_cp *cp);
  201.  
  202. typedef void
  203. (*ilo_gpe_gen7_3DSTATE_HS)(const struct ilo_dev_info *dev,
  204.                            const struct ilo_shader_state *hs,
  205.                            int num_samplers,
  206.                            struct ilo_cp *cp);
  207.  
  208. typedef void
  209. (*ilo_gpe_gen7_3DSTATE_TE)(const struct ilo_dev_info *dev,
  210.                            struct ilo_cp *cp);
  211.  
  212. typedef void
  213. (*ilo_gpe_gen7_3DSTATE_DS)(const struct ilo_dev_info *dev,
  214.                            const struct ilo_shader_state *ds,
  215.                            int num_samplers,
  216.                            struct ilo_cp *cp);
  217.  
  218. typedef void
  219. (*ilo_gpe_gen7_3DSTATE_STREAMOUT)(const struct ilo_dev_info *dev,
  220.                                   unsigned buffer_mask,
  221.                                   int vertex_attrib_count,
  222.                                   bool rasterizer_discard,
  223.                                   struct ilo_cp *cp);
  224.  
  225. typedef void
  226. (*ilo_gpe_gen7_3DSTATE_SBE)(const struct ilo_dev_info *dev,
  227.                             const struct ilo_rasterizer_state *rasterizer,
  228.                             const struct ilo_shader_state *fs,
  229.                             const struct ilo_shader_state *last_sh,
  230.                             struct ilo_cp *cp);
  231.  
  232. typedef void
  233. (*ilo_gpe_gen7_3DSTATE_PS)(const struct ilo_dev_info *dev,
  234.                            const struct ilo_shader_state *fs,
  235.                            int num_samplers, bool dual_blend,
  236.                            struct ilo_cp *cp);
  237.  
  238. typedef void
  239. (*ilo_gpe_gen7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP)(const struct ilo_dev_info *dev,
  240.                                                         uint32_t viewport,
  241.                                                         struct ilo_cp *cp);
  242.  
  243. typedef void
  244. (*ilo_gpe_gen7_3DSTATE_VIEWPORT_STATE_POINTERS_CC)(const struct ilo_dev_info *dev,
  245.                                                    uint32_t viewport,
  246.                                                    struct ilo_cp *cp);
  247.  
  248. typedef void
  249. (*ilo_gpe_gen7_3DSTATE_BLEND_STATE_POINTERS)(const struct ilo_dev_info *dev,
  250.                                              uint32_t blend,
  251.                                              struct ilo_cp *cp);
  252.  
  253. typedef void
  254. (*ilo_gpe_gen7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS)(const struct ilo_dev_info *dev,
  255.                                                      uint32_t depth_stencil,
  256.                                                      struct ilo_cp *cp);
  257.  
  258. typedef void
  259. (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_VS)(const struct ilo_dev_info *dev,
  260.                                                   uint32_t binding_table,
  261.                                                   struct ilo_cp *cp);
  262.  
  263. typedef void
  264. (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_HS)(const struct ilo_dev_info *dev,
  265.                                                   uint32_t binding_table,
  266.                                                   struct ilo_cp *cp);
  267.  
  268. typedef void
  269. (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_DS)(const struct ilo_dev_info *dev,
  270.                                                   uint32_t binding_table,
  271.                                                   struct ilo_cp *cp);
  272.  
  273. typedef void
  274. (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_GS)(const struct ilo_dev_info *dev,
  275.                                                   uint32_t binding_table,
  276.                                                   struct ilo_cp *cp);
  277.  
  278. typedef void
  279. (*ilo_gpe_gen7_3DSTATE_BINDING_TABLE_POINTERS_PS)(const struct ilo_dev_info *dev,
  280.                                                   uint32_t binding_table,
  281.                                                   struct ilo_cp *cp);
  282.  
  283. typedef void
  284. (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_VS)(const struct ilo_dev_info *dev,
  285.                                                   uint32_t sampler_state,
  286.                                                   struct ilo_cp *cp);
  287.  
  288. typedef void
  289. (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_HS)(const struct ilo_dev_info *dev,
  290.                                                   uint32_t sampler_state,
  291.                                                   struct ilo_cp *cp);
  292.  
  293. typedef void
  294. (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_DS)(const struct ilo_dev_info *dev,
  295.                                                   uint32_t sampler_state,
  296.                                                   struct ilo_cp *cp);
  297.  
  298. typedef void
  299. (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_GS)(const struct ilo_dev_info *dev,
  300.                                                   uint32_t sampler_state,
  301.                                                   struct ilo_cp *cp);
  302.  
  303. typedef void
  304. (*ilo_gpe_gen7_3DSTATE_SAMPLER_STATE_POINTERS_PS)(const struct ilo_dev_info *dev,
  305.                                                   uint32_t sampler_state,
  306.                                                   struct ilo_cp *cp);
  307.  
  308. typedef void
  309. (*ilo_gpe_gen7_3DSTATE_URB_VS)(const struct ilo_dev_info *dev,
  310.                                int offset, int size, int entry_size,
  311.                                struct ilo_cp *cp);
  312.  
  313. typedef void
  314. (*ilo_gpe_gen7_3DSTATE_URB_HS)(const struct ilo_dev_info *dev,
  315.                                int offset, int size, int entry_size,
  316.                                struct ilo_cp *cp);
  317.  
  318. typedef void
  319. (*ilo_gpe_gen7_3DSTATE_URB_DS)(const struct ilo_dev_info *dev,
  320.                                int offset, int size, int entry_size,
  321.                                struct ilo_cp *cp);
  322.  
  323. typedef void
  324. (*ilo_gpe_gen7_3DSTATE_URB_GS)(const struct ilo_dev_info *dev,
  325.                                int offset, int size, int entry_size,
  326.                                struct ilo_cp *cp);
  327.  
  328. typedef ilo_gpe_gen6_3DSTATE_DRAWING_RECTANGLE ilo_gpe_gen7_3DSTATE_DRAWING_RECTANGLE;
  329. typedef ilo_gpe_gen6_3DSTATE_POLY_STIPPLE_OFFSET ilo_gpe_gen7_3DSTATE_POLY_STIPPLE_OFFSET;
  330. typedef ilo_gpe_gen6_3DSTATE_POLY_STIPPLE_PATTERN ilo_gpe_gen7_3DSTATE_POLY_STIPPLE_PATTERN;
  331. typedef ilo_gpe_gen6_3DSTATE_LINE_STIPPLE ilo_gpe_gen7_3DSTATE_LINE_STIPPLE;
  332. typedef ilo_gpe_gen6_3DSTATE_AA_LINE_PARAMETERS ilo_gpe_gen7_3DSTATE_AA_LINE_PARAMETERS;
  333. typedef ilo_gpe_gen6_3DSTATE_MULTISAMPLE ilo_gpe_gen7_3DSTATE_MULTISAMPLE;
  334.  
  335. typedef void
  336. (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_VS)(const struct ilo_dev_info *dev,
  337.                                                int offset, int size,
  338.                                                struct ilo_cp *cp);
  339.  
  340. typedef void
  341. (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_HS)(const struct ilo_dev_info *dev,
  342.                                                int offset, int size,
  343.                                                struct ilo_cp *cp);
  344.  
  345. typedef void
  346. (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_DS)(const struct ilo_dev_info *dev,
  347.                                                int offset, int size,
  348.                                                struct ilo_cp *cp);
  349.  
  350. typedef void
  351. (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_GS)(const struct ilo_dev_info *dev,
  352.                                                int offset, int size,
  353.                                                struct ilo_cp *cp);
  354.  
  355. typedef void
  356. (*ilo_gpe_gen7_3DSTATE_PUSH_CONSTANT_ALLOC_PS)(const struct ilo_dev_info *dev,
  357.                                                int offset, int size,
  358.                                                struct ilo_cp *cp);
  359.  
  360. typedef void
  361. (*ilo_gpe_gen7_3DSTATE_SO_DECL_LIST)(const struct ilo_dev_info *dev,
  362.                                      const struct pipe_stream_output_info *so_info,
  363.                                      struct ilo_cp *cp);
  364.  
  365. typedef void
  366. (*ilo_gpe_gen7_3DSTATE_SO_BUFFER)(const struct ilo_dev_info *dev,
  367.                                   int index, int base, int stride,
  368.                                   const struct pipe_stream_output_target *so_target,
  369.                                   struct ilo_cp *cp);
  370.  
  371. typedef ilo_gpe_gen6_PIPE_CONTROL ilo_gpe_gen7_PIPE_CONTROL;
  372. typedef ilo_gpe_gen6_3DPRIMITIVE ilo_gpe_gen7_3DPRIMITIVE;
  373. typedef ilo_gpe_gen6_INTERFACE_DESCRIPTOR_DATA ilo_gpe_gen7_INTERFACE_DESCRIPTOR_DATA;
  374.  
  375. typedef uint32_t
  376. (*ilo_gpe_gen7_SF_CLIP_VIEWPORT)(const struct ilo_dev_info *dev,
  377.                                  const struct ilo_viewport_cso *viewports,
  378.                                  unsigned num_viewports,
  379.                                  struct ilo_cp *cp);
  380.  
  381. typedef ilo_gpe_gen6_CC_VIEWPORT ilo_gpe_gen7_CC_VIEWPORT;
  382. typedef ilo_gpe_gen6_COLOR_CALC_STATE ilo_gpe_gen7_COLOR_CALC_STATE;
  383. typedef ilo_gpe_gen6_BLEND_STATE ilo_gpe_gen7_BLEND_STATE;
  384. typedef ilo_gpe_gen6_DEPTH_STENCIL_STATE ilo_gpe_gen7_DEPTH_STENCIL_STATE;
  385. typedef ilo_gpe_gen6_SCISSOR_RECT ilo_gpe_gen7_SCISSOR_RECT;
  386. typedef ilo_gpe_gen6_BINDING_TABLE_STATE ilo_gpe_gen7_BINDING_TABLE_STATE;
  387. typedef ilo_gpe_gen6_SURFACE_STATE ilo_gpe_gen7_SURFACE_STATE;
  388. typedef ilo_gpe_gen6_SAMPLER_STATE ilo_gpe_gen7_SAMPLER_STATE;
  389. typedef ilo_gpe_gen6_SAMPLER_BORDER_COLOR_STATE ilo_gpe_gen7_SAMPLER_BORDER_COLOR_STATE;
  390. typedef ilo_gpe_gen6_push_constant_buffer ilo_gpe_gen7_push_constant_buffer;
  391.  
  392. /**
  393.  * GEN7 graphics processing engine
  394.  *
  395.  * \see ilo_gpe_gen6
  396.  */
  397. struct ilo_gpe_gen7 {
  398.    int (*estimate_command_size)(const struct ilo_dev_info *dev,
  399.                                 enum ilo_gpe_gen7_command cmd,
  400.                                 int arg);
  401.  
  402.    int (*estimate_state_size)(const struct ilo_dev_info *dev,
  403.                               enum ilo_gpe_gen7_state state,
  404.                               int arg);
  405.  
  406. #define GEN7_EMIT(name) ilo_gpe_gen7_ ## name emit_ ## name
  407.    GEN7_EMIT(STATE_BASE_ADDRESS);
  408.    GEN7_EMIT(STATE_SIP);
  409.    GEN7_EMIT(3DSTATE_VF_STATISTICS);
  410.    GEN7_EMIT(PIPELINE_SELECT);
  411.    GEN7_EMIT(MEDIA_VFE_STATE);
  412.    GEN7_EMIT(MEDIA_CURBE_LOAD);
  413.    GEN7_EMIT(MEDIA_INTERFACE_DESCRIPTOR_LOAD);
  414.    GEN7_EMIT(MEDIA_STATE_FLUSH);
  415.    GEN7_EMIT(GPGPU_WALKER);
  416.    GEN7_EMIT(3DSTATE_CLEAR_PARAMS);
  417.    GEN7_EMIT(3DSTATE_DEPTH_BUFFER);
  418.    GEN7_EMIT(3DSTATE_STENCIL_BUFFER);
  419.    GEN7_EMIT(3DSTATE_HIER_DEPTH_BUFFER);
  420.    GEN7_EMIT(3DSTATE_VERTEX_BUFFERS);
  421.    GEN7_EMIT(3DSTATE_VERTEX_ELEMENTS);
  422.    GEN7_EMIT(3DSTATE_INDEX_BUFFER);
  423.    GEN7_EMIT(3DSTATE_CC_STATE_POINTERS);
  424.    GEN7_EMIT(3DSTATE_SCISSOR_STATE_POINTERS);
  425.    GEN7_EMIT(3DSTATE_VS);
  426.    GEN7_EMIT(3DSTATE_GS);
  427.    GEN7_EMIT(3DSTATE_CLIP);
  428.    GEN7_EMIT(3DSTATE_SF);
  429.    GEN7_EMIT(3DSTATE_WM);
  430.    GEN7_EMIT(3DSTATE_CONSTANT_VS);
  431.    GEN7_EMIT(3DSTATE_CONSTANT_GS);
  432.    GEN7_EMIT(3DSTATE_CONSTANT_PS);
  433.    GEN7_EMIT(3DSTATE_SAMPLE_MASK);
  434.    GEN7_EMIT(3DSTATE_CONSTANT_HS);
  435.    GEN7_EMIT(3DSTATE_CONSTANT_DS);
  436.    GEN7_EMIT(3DSTATE_HS);
  437.    GEN7_EMIT(3DSTATE_TE);
  438.    GEN7_EMIT(3DSTATE_DS);
  439.    GEN7_EMIT(3DSTATE_STREAMOUT);
  440.    GEN7_EMIT(3DSTATE_SBE);
  441.    GEN7_EMIT(3DSTATE_PS);
  442.    GEN7_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP);
  443.    GEN7_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS_CC);
  444.    GEN7_EMIT(3DSTATE_BLEND_STATE_POINTERS);
  445.    GEN7_EMIT(3DSTATE_DEPTH_STENCIL_STATE_POINTERS);
  446.    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_VS);
  447.    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_HS);
  448.    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_DS);
  449.    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_GS);
  450.    GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_PS);
  451.    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_VS);
  452.    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_HS);
  453.    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_DS);
  454.    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_GS);
  455.    GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_PS);
  456.    GEN7_EMIT(3DSTATE_URB_VS);
  457.    GEN7_EMIT(3DSTATE_URB_HS);
  458.    GEN7_EMIT(3DSTATE_URB_DS);
  459.    GEN7_EMIT(3DSTATE_URB_GS);
  460.    GEN7_EMIT(3DSTATE_DRAWING_RECTANGLE);
  461.    GEN7_EMIT(3DSTATE_POLY_STIPPLE_OFFSET);
  462.    GEN7_EMIT(3DSTATE_POLY_STIPPLE_PATTERN);
  463.    GEN7_EMIT(3DSTATE_LINE_STIPPLE);
  464.    GEN7_EMIT(3DSTATE_AA_LINE_PARAMETERS);
  465.    GEN7_EMIT(3DSTATE_MULTISAMPLE);
  466.    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_VS);
  467.    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_HS);
  468.    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_DS);
  469.    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_GS);
  470.    GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_PS);
  471.    GEN7_EMIT(3DSTATE_SO_DECL_LIST);
  472.    GEN7_EMIT(3DSTATE_SO_BUFFER);
  473.    GEN7_EMIT(PIPE_CONTROL);
  474.    GEN7_EMIT(3DPRIMITIVE);
  475.    GEN7_EMIT(INTERFACE_DESCRIPTOR_DATA);
  476.    GEN7_EMIT(SF_CLIP_VIEWPORT);
  477.    GEN7_EMIT(CC_VIEWPORT);
  478.    GEN7_EMIT(COLOR_CALC_STATE);
  479.    GEN7_EMIT(BLEND_STATE);
  480.    GEN7_EMIT(DEPTH_STENCIL_STATE);
  481.    GEN7_EMIT(SCISSOR_RECT);
  482.    GEN7_EMIT(BINDING_TABLE_STATE);
  483.    GEN7_EMIT(SURFACE_STATE);
  484.    GEN7_EMIT(SAMPLER_STATE);
  485.    GEN7_EMIT(SAMPLER_BORDER_COLOR_STATE);
  486.    GEN7_EMIT(push_constant_buffer);
  487. #undef GEN7_EMIT
  488. };
  489.  
  490. const struct ilo_gpe_gen7 *
  491. ilo_gpe_gen7_get(void);
  492.  
  493. #endif /* ILO_GPE_GEN7_H */
  494.