gen8_pack.h revision 10e230b6
110e230b6Smaya/*
210e230b6Smaya * Copyright (C) 2016 Intel Corporation
310e230b6Smaya *
410e230b6Smaya * Permission is hereby granted, free of charge, to any person obtaining a
510e230b6Smaya * copy of this software and associated documentation files (the "Software"),
610e230b6Smaya * to deal in the Software without restriction, including without limitation
710e230b6Smaya * the rights to use, copy, modify, merge, publish, distribute, sublicense,
810e230b6Smaya * and/or sell copies of the Software, and to permit persons to whom the
910e230b6Smaya * Software is furnished to do so, subject to the following conditions:
1010e230b6Smaya *
1110e230b6Smaya * The above copyright notice and this permission notice (including the next
1210e230b6Smaya * paragraph) shall be included in all copies or substantial portions of the
1310e230b6Smaya * Software.
1410e230b6Smaya *
1510e230b6Smaya * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1610e230b6Smaya * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1710e230b6Smaya * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1810e230b6Smaya * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1910e230b6Smaya * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
2010e230b6Smaya * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
2110e230b6Smaya * IN THE SOFTWARE.
2210e230b6Smaya */
2310e230b6Smaya
2410e230b6Smaya
2510e230b6Smaya/* Instructions, enums and structures for BDW.
2610e230b6Smaya *
2710e230b6Smaya * This file has been generated, do not hand edit.
2810e230b6Smaya */
2910e230b6Smaya
3010e230b6Smaya#ifndef GEN8_PACK_H
3110e230b6Smaya#define GEN8_PACK_H
3210e230b6Smaya
3310e230b6Smaya#include <stdio.h>
3410e230b6Smaya#include <stdint.h>
3510e230b6Smaya#include <stdbool.h>
3610e230b6Smaya#include <assert.h>
3710e230b6Smaya#include <math.h>
3810e230b6Smaya
3910e230b6Smaya#ifndef __gen_validate_value
4010e230b6Smaya#define __gen_validate_value(x)
4110e230b6Smaya#endif
4210e230b6Smaya
4310e230b6Smaya#ifndef __gen_field_functions
4410e230b6Smaya#define __gen_field_functions
4510e230b6Smaya
4610e230b6Smaya#ifdef NDEBUG
4710e230b6Smaya#define NDEBUG_UNUSED __attribute__((unused))
4810e230b6Smaya#else
4910e230b6Smaya#define NDEBUG_UNUSED
5010e230b6Smaya#endif
5110e230b6Smaya
5210e230b6Smayaunion __gen_value {
5310e230b6Smaya   float f;
5410e230b6Smaya   uint32_t dw;
5510e230b6Smaya};
5610e230b6Smaya
5710e230b6Smayastatic inline uint64_t
5810e230b6Smaya__gen_mbo(uint32_t start, uint32_t end)
5910e230b6Smaya{
6010e230b6Smaya   return (~0ull >> (64 - (end - start + 1))) << start;
6110e230b6Smaya}
6210e230b6Smaya
6310e230b6Smayastatic inline uint64_t
6410e230b6Smaya__gen_uint(uint64_t v, uint32_t start, NDEBUG_UNUSED uint32_t end)
6510e230b6Smaya{
6610e230b6Smaya   __gen_validate_value(v);
6710e230b6Smaya
6810e230b6Smaya#ifndef NDEBUG
6910e230b6Smaya   const int width = end - start + 1;
7010e230b6Smaya   if (width < 64) {
7110e230b6Smaya      const uint64_t max = (1ull << width) - 1;
7210e230b6Smaya      assert(v <= max);
7310e230b6Smaya   }
7410e230b6Smaya#endif
7510e230b6Smaya
7610e230b6Smaya   return v << start;
7710e230b6Smaya}
7810e230b6Smaya
7910e230b6Smayastatic inline uint64_t
8010e230b6Smaya__gen_sint(int64_t v, uint32_t start, uint32_t end)
8110e230b6Smaya{
8210e230b6Smaya   const int width = end - start + 1;
8310e230b6Smaya
8410e230b6Smaya   __gen_validate_value(v);
8510e230b6Smaya
8610e230b6Smaya#ifndef NDEBUG
8710e230b6Smaya   if (width < 64) {
8810e230b6Smaya      const int64_t max = (1ll << (width - 1)) - 1;
8910e230b6Smaya      const int64_t min = -(1ll << (width - 1));
9010e230b6Smaya      assert(min <= v && v <= max);
9110e230b6Smaya   }
9210e230b6Smaya#endif
9310e230b6Smaya
9410e230b6Smaya   const uint64_t mask = ~0ull >> (64 - width);
9510e230b6Smaya
9610e230b6Smaya   return (v & mask) << start;
9710e230b6Smaya}
9810e230b6Smaya
9910e230b6Smayastatic inline uint64_t
10010e230b6Smaya__gen_offset(uint64_t v, NDEBUG_UNUSED uint32_t start, NDEBUG_UNUSED uint32_t end)
10110e230b6Smaya{
10210e230b6Smaya   __gen_validate_value(v);
10310e230b6Smaya#ifndef NDEBUG
10410e230b6Smaya   uint64_t mask = (~0ull >> (64 - (end - start + 1))) << start;
10510e230b6Smaya
10610e230b6Smaya   assert((v & ~mask) == 0);
10710e230b6Smaya#endif
10810e230b6Smaya
10910e230b6Smaya   return v;
11010e230b6Smaya}
11110e230b6Smaya
11210e230b6Smayastatic inline uint32_t
11310e230b6Smaya__gen_float(float v)
11410e230b6Smaya{
11510e230b6Smaya   __gen_validate_value(v);
11610e230b6Smaya   return ((union __gen_value) { .f = (v) }).dw;
11710e230b6Smaya}
11810e230b6Smaya
11910e230b6Smayastatic inline uint64_t
12010e230b6Smaya__gen_sfixed(float v, uint32_t start, uint32_t end, uint32_t fract_bits)
12110e230b6Smaya{
12210e230b6Smaya   __gen_validate_value(v);
12310e230b6Smaya
12410e230b6Smaya   const float factor = (1 << fract_bits);
12510e230b6Smaya
12610e230b6Smaya#ifndef NDEBUG
12710e230b6Smaya   const float max = ((1 << (end - start)) - 1) / factor;
12810e230b6Smaya   const float min = -(1 << (end - start)) / factor;
12910e230b6Smaya   assert(min <= v && v <= max);
13010e230b6Smaya#endif
13110e230b6Smaya
13210e230b6Smaya   const int64_t int_val = llroundf(v * factor);
13310e230b6Smaya   const uint64_t mask = ~0ull >> (64 - (end - start + 1));
13410e230b6Smaya
13510e230b6Smaya   return (int_val & mask) << start;
13610e230b6Smaya}
13710e230b6Smaya
13810e230b6Smayastatic inline uint64_t
13910e230b6Smaya__gen_ufixed(float v, uint32_t start, NDEBUG_UNUSED uint32_t end, uint32_t fract_bits)
14010e230b6Smaya{
14110e230b6Smaya   __gen_validate_value(v);
14210e230b6Smaya
14310e230b6Smaya   const float factor = (1 << fract_bits);
14410e230b6Smaya
14510e230b6Smaya#ifndef NDEBUG
14610e230b6Smaya   const float max = ((1 << (end - start + 1)) - 1) / factor;
14710e230b6Smaya   const float min = 0.0f;
14810e230b6Smaya   assert(min <= v && v <= max);
14910e230b6Smaya#endif
15010e230b6Smaya
15110e230b6Smaya   const uint64_t uint_val = llroundf(v * factor);
15210e230b6Smaya
15310e230b6Smaya   return uint_val << start;
15410e230b6Smaya}
15510e230b6Smaya
15610e230b6Smaya#ifndef __gen_address_type
15710e230b6Smaya#error #define __gen_address_type before including this file
15810e230b6Smaya#endif
15910e230b6Smaya
16010e230b6Smaya#ifndef __gen_user_data
16110e230b6Smaya#error #define __gen_combine_address before including this file
16210e230b6Smaya#endif
16310e230b6Smaya
16410e230b6Smaya#undef NDEBUG_UNUSED
16510e230b6Smaya
16610e230b6Smaya#endif
16710e230b6Smaya
16810e230b6Smaya
16910e230b6Smayaenum GEN8_3D_Color_Buffer_Blend_Factor {
17010e230b6Smaya   BLENDFACTOR_ONE                      =      1,
17110e230b6Smaya   BLENDFACTOR_SRC_COLOR                =      2,
17210e230b6Smaya   BLENDFACTOR_SRC_ALPHA                =      3,
17310e230b6Smaya   BLENDFACTOR_DST_ALPHA                =      4,
17410e230b6Smaya   BLENDFACTOR_DST_COLOR                =      5,
17510e230b6Smaya   BLENDFACTOR_SRC_ALPHA_SATURATE       =      6,
17610e230b6Smaya   BLENDFACTOR_CONST_COLOR              =      7,
17710e230b6Smaya   BLENDFACTOR_CONST_ALPHA              =      8,
17810e230b6Smaya   BLENDFACTOR_SRC1_COLOR               =      9,
17910e230b6Smaya   BLENDFACTOR_SRC1_ALPHA               =     10,
18010e230b6Smaya   BLENDFACTOR_ZERO                     =     17,
18110e230b6Smaya   BLENDFACTOR_INV_SRC_COLOR            =     18,
18210e230b6Smaya   BLENDFACTOR_INV_SRC_ALPHA            =     19,
18310e230b6Smaya   BLENDFACTOR_INV_DST_ALPHA            =     20,
18410e230b6Smaya   BLENDFACTOR_INV_DST_COLOR            =     21,
18510e230b6Smaya   BLENDFACTOR_INV_CONST_COLOR          =     23,
18610e230b6Smaya   BLENDFACTOR_INV_CONST_ALPHA          =     24,
18710e230b6Smaya   BLENDFACTOR_INV_SRC1_COLOR           =     25,
18810e230b6Smaya   BLENDFACTOR_INV_SRC1_ALPHA           =     26,
18910e230b6Smaya};
19010e230b6Smaya
19110e230b6Smayaenum GEN8_3D_Color_Buffer_Blend_Function {
19210e230b6Smaya   BLENDFUNCTION_ADD                    =      0,
19310e230b6Smaya   BLENDFUNCTION_SUBTRACT               =      1,
19410e230b6Smaya   BLENDFUNCTION_REVERSE_SUBTRACT       =      2,
19510e230b6Smaya   BLENDFUNCTION_MIN                    =      3,
19610e230b6Smaya   BLENDFUNCTION_MAX                    =      4,
19710e230b6Smaya};
19810e230b6Smaya
19910e230b6Smayaenum GEN8_3D_Compare_Function {
20010e230b6Smaya   COMPAREFUNCTION_ALWAYS               =      0,
20110e230b6Smaya   COMPAREFUNCTION_NEVER                =      1,
20210e230b6Smaya   COMPAREFUNCTION_LESS                 =      2,
20310e230b6Smaya   COMPAREFUNCTION_EQUAL                =      3,
20410e230b6Smaya   COMPAREFUNCTION_LEQUAL               =      4,
20510e230b6Smaya   COMPAREFUNCTION_GREATER              =      5,
20610e230b6Smaya   COMPAREFUNCTION_NOTEQUAL             =      6,
20710e230b6Smaya   COMPAREFUNCTION_GEQUAL               =      7,
20810e230b6Smaya};
20910e230b6Smaya
21010e230b6Smayaenum GEN8_3D_Logic_Op_Function {
21110e230b6Smaya   LOGICOP_CLEAR                        =      0,
21210e230b6Smaya   LOGICOP_NOR                          =      1,
21310e230b6Smaya   LOGICOP_AND_INVERTED                 =      2,
21410e230b6Smaya   LOGICOP_COPY_INVERTED                =      3,
21510e230b6Smaya   LOGICOP_AND_REVERSE                  =      4,
21610e230b6Smaya   LOGICOP_INVERT                       =      5,
21710e230b6Smaya   LOGICOP_XOR                          =      6,
21810e230b6Smaya   LOGICOP_NAND                         =      7,
21910e230b6Smaya   LOGICOP_AND                          =      8,
22010e230b6Smaya   LOGICOP_EQUIV                        =      9,
22110e230b6Smaya   LOGICOP_NOOP                         =     10,
22210e230b6Smaya   LOGICOP_OR_INVERTED                  =     11,
22310e230b6Smaya   LOGICOP_COPY                         =     12,
22410e230b6Smaya   LOGICOP_OR_REVERSE                   =     13,
22510e230b6Smaya   LOGICOP_OR                           =     14,
22610e230b6Smaya   LOGICOP_SET                          =     15,
22710e230b6Smaya};
22810e230b6Smaya
22910e230b6Smayaenum GEN8_3D_Prim_Topo_Type {
23010e230b6Smaya   _3DPRIM_POINTLIST                    =      1,
23110e230b6Smaya   _3DPRIM_LINELIST                     =      2,
23210e230b6Smaya   _3DPRIM_LINESTRIP                    =      3,
23310e230b6Smaya   _3DPRIM_TRILIST                      =      4,
23410e230b6Smaya   _3DPRIM_TRISTRIP                     =      5,
23510e230b6Smaya   _3DPRIM_TRIFAN                       =      6,
23610e230b6Smaya   _3DPRIM_QUADLIST                     =      7,
23710e230b6Smaya   _3DPRIM_QUADSTRIP                    =      8,
23810e230b6Smaya   _3DPRIM_LINELIST_ADJ                 =      9,
23910e230b6Smaya   _3DPRIM_LINESTRIP_ADJ                =     10,
24010e230b6Smaya   _3DPRIM_TRILIST_ADJ                  =     11,
24110e230b6Smaya   _3DPRIM_TRISTRIP_ADJ                 =     12,
24210e230b6Smaya   _3DPRIM_TRISTRIP_REVERSE             =     13,
24310e230b6Smaya   _3DPRIM_POLYGON                      =     14,
24410e230b6Smaya   _3DPRIM_RECTLIST                     =     15,
24510e230b6Smaya   _3DPRIM_LINELOOP                     =     16,
24610e230b6Smaya   _3DPRIM_POINTLIST_BF                 =     17,
24710e230b6Smaya   _3DPRIM_LINESTRIP_CONT               =     18,
24810e230b6Smaya   _3DPRIM_LINESTRIP_BF                 =     19,
24910e230b6Smaya   _3DPRIM_LINESTRIP_CONT_BF            =     20,
25010e230b6Smaya   _3DPRIM_TRIFAN_NOSTIPPLE             =     22,
25110e230b6Smaya   _3DPRIM_PATCHLIST_1                  =     32,
25210e230b6Smaya   _3DPRIM_PATCHLIST_2                  =     33,
25310e230b6Smaya   _3DPRIM_PATCHLIST_3                  =     34,
25410e230b6Smaya   _3DPRIM_PATCHLIST_4                  =     35,
25510e230b6Smaya   _3DPRIM_PATCHLIST_5                  =     36,
25610e230b6Smaya   _3DPRIM_PATCHLIST_6                  =     37,
25710e230b6Smaya   _3DPRIM_PATCHLIST_7                  =     38,
25810e230b6Smaya   _3DPRIM_PATCHLIST_8                  =     39,
25910e230b6Smaya   _3DPRIM_PATCHLIST_9                  =     40,
26010e230b6Smaya   _3DPRIM_PATCHLIST_10                 =     41,
26110e230b6Smaya   _3DPRIM_PATCHLIST_11                 =     42,
26210e230b6Smaya   _3DPRIM_PATCHLIST_12                 =     43,
26310e230b6Smaya   _3DPRIM_PATCHLIST_13                 =     44,
26410e230b6Smaya   _3DPRIM_PATCHLIST_14                 =     45,
26510e230b6Smaya   _3DPRIM_PATCHLIST_15                 =     46,
26610e230b6Smaya   _3DPRIM_PATCHLIST_16                 =     47,
26710e230b6Smaya   _3DPRIM_PATCHLIST_17                 =     48,
26810e230b6Smaya   _3DPRIM_PATCHLIST_18                 =     49,
26910e230b6Smaya   _3DPRIM_PATCHLIST_19                 =     50,
27010e230b6Smaya   _3DPRIM_PATCHLIST_20                 =     51,
27110e230b6Smaya   _3DPRIM_PATCHLIST_21                 =     52,
27210e230b6Smaya   _3DPRIM_PATCHLIST_22                 =     53,
27310e230b6Smaya   _3DPRIM_PATCHLIST_23                 =     54,
27410e230b6Smaya   _3DPRIM_PATCHLIST_24                 =     55,
27510e230b6Smaya   _3DPRIM_PATCHLIST_25                 =     56,
27610e230b6Smaya   _3DPRIM_PATCHLIST_26                 =     57,
27710e230b6Smaya   _3DPRIM_PATCHLIST_27                 =     58,
27810e230b6Smaya   _3DPRIM_PATCHLIST_28                 =     59,
27910e230b6Smaya   _3DPRIM_PATCHLIST_29                 =     60,
28010e230b6Smaya   _3DPRIM_PATCHLIST_30                 =     61,
28110e230b6Smaya   _3DPRIM_PATCHLIST_31                 =     62,
28210e230b6Smaya   _3DPRIM_PATCHLIST_32                 =     63,
28310e230b6Smaya};
28410e230b6Smaya
28510e230b6Smayaenum GEN8_3D_Stencil_Operation {
28610e230b6Smaya   STENCILOP_KEEP                       =      0,
28710e230b6Smaya   STENCILOP_ZERO                       =      1,
28810e230b6Smaya   STENCILOP_REPLACE                    =      2,
28910e230b6Smaya   STENCILOP_INCRSAT                    =      3,
29010e230b6Smaya   STENCILOP_DECRSAT                    =      4,
29110e230b6Smaya   STENCILOP_INCR                       =      5,
29210e230b6Smaya   STENCILOP_DECR                       =      6,
29310e230b6Smaya   STENCILOP_INVERT                     =      7,
29410e230b6Smaya};
29510e230b6Smaya
29610e230b6Smayaenum GEN8_3D_Vertex_Component_Control {
29710e230b6Smaya   VFCOMP_NOSTORE                       =      0,
29810e230b6Smaya   VFCOMP_STORE_SRC                     =      1,
29910e230b6Smaya   VFCOMP_STORE_0                       =      2,
30010e230b6Smaya   VFCOMP_STORE_1_FP                    =      3,
30110e230b6Smaya   VFCOMP_STORE_1_INT                   =      4,
30210e230b6Smaya   VFCOMP_STORE_PID                     =      7,
30310e230b6Smaya};
30410e230b6Smaya
30510e230b6Smayaenum GEN8_ClearColor {
30610e230b6Smaya   CC_ZERO                              =      0,
30710e230b6Smaya   CC_ONE                               =      1,
30810e230b6Smaya};
30910e230b6Smaya
31010e230b6Smayaenum GEN8_ShaderChannelSelect {
31110e230b6Smaya   SCS_ZERO                             =      0,
31210e230b6Smaya   SCS_ONE                              =      1,
31310e230b6Smaya   SCS_RED                              =      4,
31410e230b6Smaya   SCS_GREEN                            =      5,
31510e230b6Smaya   SCS_BLUE                             =      6,
31610e230b6Smaya   SCS_ALPHA                            =      7,
31710e230b6Smaya};
31810e230b6Smaya
31910e230b6Smayaenum GEN8_TextureCoordinateMode {
32010e230b6Smaya   TCM_WRAP                             =      0,
32110e230b6Smaya   TCM_MIRROR                           =      1,
32210e230b6Smaya   TCM_CLAMP                            =      2,
32310e230b6Smaya   TCM_CUBE                             =      3,
32410e230b6Smaya   TCM_CLAMP_BORDER                     =      4,
32510e230b6Smaya   TCM_MIRROR_ONCE                      =      5,
32610e230b6Smaya   TCM_HALF_BORDER                      =      6,
32710e230b6Smaya};
32810e230b6Smaya
32910e230b6Smayaenum GEN8_WRAP_SHORTEST_ENABLE {
33010e230b6Smaya   WSE_X                                =      1,
33110e230b6Smaya   WSE_Y                                =      2,
33210e230b6Smaya   WSE_XY                               =      3,
33310e230b6Smaya   WSE_Z                                =      4,
33410e230b6Smaya   WSE_XZ                               =      5,
33510e230b6Smaya   WSE_YZ                               =      6,
33610e230b6Smaya   WSE_XYZ                              =      7,
33710e230b6Smaya   WSE_W                                =      8,
33810e230b6Smaya   WSE_XW                               =      9,
33910e230b6Smaya   WSE_YW                               =     10,
34010e230b6Smaya   WSE_XYW                              =     11,
34110e230b6Smaya   WSE_ZW                               =     12,
34210e230b6Smaya   WSE_XZW                              =     13,
34310e230b6Smaya   WSE_YZW                              =     14,
34410e230b6Smaya   WSE_XYZW                             =     15,
34510e230b6Smaya};
34610e230b6Smaya
34710e230b6Smaya#define GEN8_3DSTATE_CONSTANT_BODY_length     10
34810e230b6Smayastruct GEN8_3DSTATE_CONSTANT_BODY {
34910e230b6Smaya   uint32_t                             ReadLength[4];
35010e230b6Smaya   __gen_address_type                   Buffer[4];
35110e230b6Smaya};
35210e230b6Smaya
35310e230b6Smayastatic inline void
35410e230b6SmayaGEN8_3DSTATE_CONSTANT_BODY_pack(__attribute__((unused)) __gen_user_data *data,
35510e230b6Smaya                                __attribute__((unused)) void * restrict dst,
35610e230b6Smaya                                __attribute__((unused)) const struct GEN8_3DSTATE_CONSTANT_BODY * restrict values)
35710e230b6Smaya{
35810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
35910e230b6Smaya
36010e230b6Smaya   dw[0] =
36110e230b6Smaya      __gen_uint(values->ReadLength[0], 0, 15) |
36210e230b6Smaya      __gen_uint(values->ReadLength[1], 16, 31);
36310e230b6Smaya
36410e230b6Smaya   dw[1] =
36510e230b6Smaya      __gen_uint(values->ReadLength[2], 0, 15) |
36610e230b6Smaya      __gen_uint(values->ReadLength[3], 16, 31);
36710e230b6Smaya
36810e230b6Smaya   const uint64_t v2_address =
36910e230b6Smaya      __gen_combine_address(data, &dw[2], values->Buffer[0], 0);
37010e230b6Smaya   dw[2] = v2_address;
37110e230b6Smaya   dw[3] = v2_address >> 32;
37210e230b6Smaya
37310e230b6Smaya   const uint64_t v4_address =
37410e230b6Smaya      __gen_combine_address(data, &dw[4], values->Buffer[1], 0);
37510e230b6Smaya   dw[4] = v4_address;
37610e230b6Smaya   dw[5] = v4_address >> 32;
37710e230b6Smaya
37810e230b6Smaya   const uint64_t v6_address =
37910e230b6Smaya      __gen_combine_address(data, &dw[6], values->Buffer[2], 0);
38010e230b6Smaya   dw[6] = v6_address;
38110e230b6Smaya   dw[7] = v6_address >> 32;
38210e230b6Smaya
38310e230b6Smaya   const uint64_t v8_address =
38410e230b6Smaya      __gen_combine_address(data, &dw[8], values->Buffer[3], 0);
38510e230b6Smaya   dw[8] = v8_address;
38610e230b6Smaya   dw[9] = v8_address >> 32;
38710e230b6Smaya}
38810e230b6Smaya
38910e230b6Smaya#define GEN8_BINDING_TABLE_EDIT_ENTRY_length      1
39010e230b6Smayastruct GEN8_BINDING_TABLE_EDIT_ENTRY {
39110e230b6Smaya   uint64_t                             SurfaceStatePointer;
39210e230b6Smaya   uint32_t                             BindingTableIndex;
39310e230b6Smaya};
39410e230b6Smaya
39510e230b6Smayastatic inline void
39610e230b6SmayaGEN8_BINDING_TABLE_EDIT_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
39710e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
39810e230b6Smaya                                   __attribute__((unused)) const struct GEN8_BINDING_TABLE_EDIT_ENTRY * restrict values)
39910e230b6Smaya{
40010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
40110e230b6Smaya
40210e230b6Smaya   dw[0] =
40310e230b6Smaya      __gen_offset(values->SurfaceStatePointer, 0, 15) |
40410e230b6Smaya      __gen_uint(values->BindingTableIndex, 16, 23);
40510e230b6Smaya}
40610e230b6Smaya
40710e230b6Smaya#define GEN8_BINDING_TABLE_STATE_length        1
40810e230b6Smayastruct GEN8_BINDING_TABLE_STATE {
40910e230b6Smaya   uint64_t                             SurfaceStatePointer;
41010e230b6Smaya};
41110e230b6Smaya
41210e230b6Smayastatic inline void
41310e230b6SmayaGEN8_BINDING_TABLE_STATE_pack(__attribute__((unused)) __gen_user_data *data,
41410e230b6Smaya                              __attribute__((unused)) void * restrict dst,
41510e230b6Smaya                              __attribute__((unused)) const struct GEN8_BINDING_TABLE_STATE * restrict values)
41610e230b6Smaya{
41710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
41810e230b6Smaya
41910e230b6Smaya   dw[0] =
42010e230b6Smaya      __gen_offset(values->SurfaceStatePointer, 6, 31);
42110e230b6Smaya}
42210e230b6Smaya
42310e230b6Smaya#define GEN8_BLEND_STATE_ENTRY_length          2
42410e230b6Smayastruct GEN8_BLEND_STATE_ENTRY {
42510e230b6Smaya   bool                                 WriteDisableBlue;
42610e230b6Smaya   bool                                 WriteDisableGreen;
42710e230b6Smaya   bool                                 WriteDisableRed;
42810e230b6Smaya   bool                                 WriteDisableAlpha;
42910e230b6Smaya   enum GEN8_3D_Color_Buffer_Blend_Function AlphaBlendFunction;
43010e230b6Smaya   enum GEN8_3D_Color_Buffer_Blend_Factor DestinationAlphaBlendFactor;
43110e230b6Smaya   enum GEN8_3D_Color_Buffer_Blend_Factor SourceAlphaBlendFactor;
43210e230b6Smaya   enum GEN8_3D_Color_Buffer_Blend_Function ColorBlendFunction;
43310e230b6Smaya   enum GEN8_3D_Color_Buffer_Blend_Factor DestinationBlendFactor;
43410e230b6Smaya   enum GEN8_3D_Color_Buffer_Blend_Factor SourceBlendFactor;
43510e230b6Smaya   bool                                 ColorBufferBlendEnable;
43610e230b6Smaya   bool                                 PostBlendColorClampEnable;
43710e230b6Smaya   bool                                 PreBlendColorClampEnable;
43810e230b6Smaya   uint32_t                             ColorClampRange;
43910e230b6Smaya#define COLORCLAMP_UNORM                         0
44010e230b6Smaya#define COLORCLAMP_SNORM                         1
44110e230b6Smaya#define COLORCLAMP_RTFORMAT                      2
44210e230b6Smaya   bool                                 PreBlendSourceOnlyClampEnable;
44310e230b6Smaya   enum GEN8_3D_Logic_Op_Function       LogicOpFunction;
44410e230b6Smaya   bool                                 LogicOpEnable;
44510e230b6Smaya};
44610e230b6Smaya
44710e230b6Smayastatic inline void
44810e230b6SmayaGEN8_BLEND_STATE_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
44910e230b6Smaya                            __attribute__((unused)) void * restrict dst,
45010e230b6Smaya                            __attribute__((unused)) const struct GEN8_BLEND_STATE_ENTRY * restrict values)
45110e230b6Smaya{
45210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
45310e230b6Smaya
45410e230b6Smaya   dw[0] =
45510e230b6Smaya      __gen_uint(values->WriteDisableBlue, 0, 0) |
45610e230b6Smaya      __gen_uint(values->WriteDisableGreen, 1, 1) |
45710e230b6Smaya      __gen_uint(values->WriteDisableRed, 2, 2) |
45810e230b6Smaya      __gen_uint(values->WriteDisableAlpha, 3, 3) |
45910e230b6Smaya      __gen_uint(values->AlphaBlendFunction, 5, 7) |
46010e230b6Smaya      __gen_uint(values->DestinationAlphaBlendFactor, 8, 12) |
46110e230b6Smaya      __gen_uint(values->SourceAlphaBlendFactor, 13, 17) |
46210e230b6Smaya      __gen_uint(values->ColorBlendFunction, 18, 20) |
46310e230b6Smaya      __gen_uint(values->DestinationBlendFactor, 21, 25) |
46410e230b6Smaya      __gen_uint(values->SourceBlendFactor, 26, 30) |
46510e230b6Smaya      __gen_uint(values->ColorBufferBlendEnable, 31, 31);
46610e230b6Smaya
46710e230b6Smaya   dw[1] =
46810e230b6Smaya      __gen_uint(values->PostBlendColorClampEnable, 0, 0) |
46910e230b6Smaya      __gen_uint(values->PreBlendColorClampEnable, 1, 1) |
47010e230b6Smaya      __gen_uint(values->ColorClampRange, 2, 3) |
47110e230b6Smaya      __gen_uint(values->PreBlendSourceOnlyClampEnable, 4, 4) |
47210e230b6Smaya      __gen_uint(values->LogicOpFunction, 27, 30) |
47310e230b6Smaya      __gen_uint(values->LogicOpEnable, 31, 31);
47410e230b6Smaya}
47510e230b6Smaya
47610e230b6Smaya#define GEN8_BLEND_STATE_length                1
47710e230b6Smayastruct GEN8_BLEND_STATE {
47810e230b6Smaya   uint32_t                             YDitherOffset;
47910e230b6Smaya   uint32_t                             XDitherOffset;
48010e230b6Smaya   bool                                 ColorDitherEnable;
48110e230b6Smaya   enum GEN8_3D_Compare_Function        AlphaTestFunction;
48210e230b6Smaya   bool                                 AlphaTestEnable;
48310e230b6Smaya   bool                                 AlphaToCoverageDitherEnable;
48410e230b6Smaya   bool                                 AlphaToOneEnable;
48510e230b6Smaya   bool                                 IndependentAlphaBlendEnable;
48610e230b6Smaya   bool                                 AlphaToCoverageEnable;
48710e230b6Smaya   /* variable length fields follow */
48810e230b6Smaya};
48910e230b6Smaya
49010e230b6Smayastatic inline void
49110e230b6SmayaGEN8_BLEND_STATE_pack(__attribute__((unused)) __gen_user_data *data,
49210e230b6Smaya                      __attribute__((unused)) void * restrict dst,
49310e230b6Smaya                      __attribute__((unused)) const struct GEN8_BLEND_STATE * restrict values)
49410e230b6Smaya{
49510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
49610e230b6Smaya
49710e230b6Smaya   dw[0] =
49810e230b6Smaya      __gen_uint(values->YDitherOffset, 19, 20) |
49910e230b6Smaya      __gen_uint(values->XDitherOffset, 21, 22) |
50010e230b6Smaya      __gen_uint(values->ColorDitherEnable, 23, 23) |
50110e230b6Smaya      __gen_uint(values->AlphaTestFunction, 24, 26) |
50210e230b6Smaya      __gen_uint(values->AlphaTestEnable, 27, 27) |
50310e230b6Smaya      __gen_uint(values->AlphaToCoverageDitherEnable, 28, 28) |
50410e230b6Smaya      __gen_uint(values->AlphaToOneEnable, 29, 29) |
50510e230b6Smaya      __gen_uint(values->IndependentAlphaBlendEnable, 30, 30) |
50610e230b6Smaya      __gen_uint(values->AlphaToCoverageEnable, 31, 31);
50710e230b6Smaya}
50810e230b6Smaya
50910e230b6Smaya#define GEN8_CC_VIEWPORT_length                2
51010e230b6Smayastruct GEN8_CC_VIEWPORT {
51110e230b6Smaya   float                                MinimumDepth;
51210e230b6Smaya   float                                MaximumDepth;
51310e230b6Smaya};
51410e230b6Smaya
51510e230b6Smayastatic inline void
51610e230b6SmayaGEN8_CC_VIEWPORT_pack(__attribute__((unused)) __gen_user_data *data,
51710e230b6Smaya                      __attribute__((unused)) void * restrict dst,
51810e230b6Smaya                      __attribute__((unused)) const struct GEN8_CC_VIEWPORT * restrict values)
51910e230b6Smaya{
52010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
52110e230b6Smaya
52210e230b6Smaya   dw[0] =
52310e230b6Smaya      __gen_float(values->MinimumDepth);
52410e230b6Smaya
52510e230b6Smaya   dw[1] =
52610e230b6Smaya      __gen_float(values->MaximumDepth);
52710e230b6Smaya}
52810e230b6Smaya
52910e230b6Smaya#define GEN8_COLOR_CALC_STATE_length           6
53010e230b6Smayastruct GEN8_COLOR_CALC_STATE {
53110e230b6Smaya   uint32_t                             AlphaTestFormat;
53210e230b6Smaya#define ALPHATEST_UNORM8                         0
53310e230b6Smaya#define ALPHATEST_FLOAT32                        1
53410e230b6Smaya   bool                                 RoundDisableFunctionDisable;
53510e230b6Smaya   uint32_t                             BackfaceStencilReferenceValue;
53610e230b6Smaya   uint32_t                             StencilReferenceValue;
53710e230b6Smaya   uint32_t                             AlphaReferenceValueAsUNORM8;
53810e230b6Smaya   float                                AlphaReferenceValueAsFLOAT32;
53910e230b6Smaya   float                                BlendConstantColorRed;
54010e230b6Smaya   float                                BlendConstantColorGreen;
54110e230b6Smaya   float                                BlendConstantColorBlue;
54210e230b6Smaya   float                                BlendConstantColorAlpha;
54310e230b6Smaya};
54410e230b6Smaya
54510e230b6Smayastatic inline void
54610e230b6SmayaGEN8_COLOR_CALC_STATE_pack(__attribute__((unused)) __gen_user_data *data,
54710e230b6Smaya                           __attribute__((unused)) void * restrict dst,
54810e230b6Smaya                           __attribute__((unused)) const struct GEN8_COLOR_CALC_STATE * restrict values)
54910e230b6Smaya{
55010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
55110e230b6Smaya
55210e230b6Smaya   dw[0] =
55310e230b6Smaya      __gen_uint(values->AlphaTestFormat, 0, 0) |
55410e230b6Smaya      __gen_uint(values->RoundDisableFunctionDisable, 15, 15) |
55510e230b6Smaya      __gen_uint(values->BackfaceStencilReferenceValue, 16, 23) |
55610e230b6Smaya      __gen_uint(values->StencilReferenceValue, 24, 31);
55710e230b6Smaya
55810e230b6Smaya   dw[1] =
55910e230b6Smaya      __gen_uint(values->AlphaReferenceValueAsUNORM8, 0, 31) |
56010e230b6Smaya      __gen_float(values->AlphaReferenceValueAsFLOAT32);
56110e230b6Smaya
56210e230b6Smaya   dw[2] =
56310e230b6Smaya      __gen_float(values->BlendConstantColorRed);
56410e230b6Smaya
56510e230b6Smaya   dw[3] =
56610e230b6Smaya      __gen_float(values->BlendConstantColorGreen);
56710e230b6Smaya
56810e230b6Smaya   dw[4] =
56910e230b6Smaya      __gen_float(values->BlendConstantColorBlue);
57010e230b6Smaya
57110e230b6Smaya   dw[5] =
57210e230b6Smaya      __gen_float(values->BlendConstantColorAlpha);
57310e230b6Smaya}
57410e230b6Smaya
57510e230b6Smaya#define GEN8_FILTER_COEFFICIENT_length         1
57610e230b6Smayastruct GEN8_FILTER_COEFFICIENT {
57710e230b6Smaya   float                                FilterCoefficient;
57810e230b6Smaya};
57910e230b6Smaya
58010e230b6Smayastatic inline void
58110e230b6SmayaGEN8_FILTER_COEFFICIENT_pack(__attribute__((unused)) __gen_user_data *data,
58210e230b6Smaya                             __attribute__((unused)) void * restrict dst,
58310e230b6Smaya                             __attribute__((unused)) const struct GEN8_FILTER_COEFFICIENT * restrict values)
58410e230b6Smaya{
58510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
58610e230b6Smaya
58710e230b6Smaya   dw[0] =
58810e230b6Smaya      __gen_sfixed(values->FilterCoefficient, 0, 7, 6);
58910e230b6Smaya}
59010e230b6Smaya
59110e230b6Smaya#define GEN8_GATHER_CONSTANT_ENTRY_length      1
59210e230b6Smayastruct GEN8_GATHER_CONSTANT_ENTRY {
59310e230b6Smaya   uint32_t                             BindingTableIndexOffset;
59410e230b6Smaya   uint32_t                             ChannelMask;
59510e230b6Smaya   uint64_t                             ConstantBufferOffset;
59610e230b6Smaya};
59710e230b6Smaya
59810e230b6Smayastatic inline void
59910e230b6SmayaGEN8_GATHER_CONSTANT_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
60010e230b6Smaya                                __attribute__((unused)) void * restrict dst,
60110e230b6Smaya                                __attribute__((unused)) const struct GEN8_GATHER_CONSTANT_ENTRY * restrict values)
60210e230b6Smaya{
60310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
60410e230b6Smaya
60510e230b6Smaya   dw[0] =
60610e230b6Smaya      __gen_uint(values->BindingTableIndexOffset, 0, 3) |
60710e230b6Smaya      __gen_uint(values->ChannelMask, 4, 7) |
60810e230b6Smaya      __gen_offset(values->ConstantBufferOffset, 8, 15);
60910e230b6Smaya}
61010e230b6Smaya
61110e230b6Smaya#define GEN8_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT_length      3
61210e230b6Smayastruct GEN8_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT {
61310e230b6Smaya   bool                                 MBErrorConcealmentPSliceWeightPredictionDisable;
61410e230b6Smaya   bool                                 MBErrorConcealmentPSliceMotionVectorsOverrideDisable;
61510e230b6Smaya   bool                                 MBErrorConcealmentBSpatialWeightPredictionDisable;
61610e230b6Smaya   bool                                 MBErrorConcealmentBSpatialMotionVectorsOverrideDisable;
61710e230b6Smaya   uint32_t                             MBErrorConcealmentBSpatialPredictionMode;
61810e230b6Smaya   bool                                 MBHeaderErrorHandling;
61910e230b6Smaya   bool                                 EntropyErrorHandling;
62010e230b6Smaya   bool                                 MPRErrorHandling;
62110e230b6Smaya   bool                                 BSDPrematureCompleteErrorHandling;
62210e230b6Smaya   uint32_t                             ConcealmentPictureID;
62310e230b6Smaya   bool                                 MBErrorConcealmentBTemporalWeightPredictionDisable;
62410e230b6Smaya   bool                                 MBErrorConcealmentBTemporalMotionVectorsOverrideEnable;
62510e230b6Smaya   uint32_t                             MBErrorConcealmentBTemporalPredictionMode;
62610e230b6Smaya   bool                                 IntraPredMode4x48x8LumaErrorControl;
62710e230b6Smaya   bool                                 InitCurrentMBNumber;
62810e230b6Smaya   uint32_t                             ConcealmentMethod;
62910e230b6Smaya   uint32_t                             FirstMBBitOffset;
63010e230b6Smaya   bool                                 LastSlice;
63110e230b6Smaya   bool                                 EmulationPreventionBytePresent;
63210e230b6Smaya   bool                                 FixPrevMBSkipped;
63310e230b6Smaya   uint32_t                             FirstMBByteOffsetofSliceDataorSliceHeader;
63410e230b6Smaya   bool                                 IntraPredictionErrorControl;
63510e230b6Smaya   bool                                 Intra8x84x4PredictionErrorConcealmentControl;
63610e230b6Smaya   uint32_t                             BSliceTemporalInterConcealmentMode;
63710e230b6Smaya   uint32_t                             BSliceSpatialInterConcealmentMode;
63810e230b6Smaya   uint32_t                             BSliceInterDirectTypeConcealmentMode;
63910e230b6Smaya   uint32_t                             BSliceConcealmentMode;
64010e230b6Smaya#define IntraConcealment                         1
64110e230b6Smaya#define InterConcealment                         0
64210e230b6Smaya   uint32_t                             PSliceInterConcealmentMode;
64310e230b6Smaya   uint32_t                             PSliceConcealmentMode;
64410e230b6Smaya#define IntraConcealment                         1
64510e230b6Smaya#define InterConcealment                         0
64610e230b6Smaya   uint32_t                             ConcealmentReferencePictureFieldBit;
64710e230b6Smaya   uint32_t                             ISliceConcealmentMode;
64810e230b6Smaya#define IntraConcealment                         1
64910e230b6Smaya#define InterConcealment                         0
65010e230b6Smaya};
65110e230b6Smaya
65210e230b6Smayastatic inline void
65310e230b6SmayaGEN8_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT_pack(__attribute__((unused)) __gen_user_data *data,
65410e230b6Smaya                                                         __attribute__((unused)) void * restrict dst,
65510e230b6Smaya                                                         __attribute__((unused)) const struct GEN8_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT * restrict values)
65610e230b6Smaya{
65710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
65810e230b6Smaya
65910e230b6Smaya   dw[0] =
66010e230b6Smaya      __gen_uint(values->MBErrorConcealmentPSliceWeightPredictionDisable, 0, 0) |
66110e230b6Smaya      __gen_uint(values->MBErrorConcealmentPSliceMotionVectorsOverrideDisable, 1, 1) |
66210e230b6Smaya      __gen_uint(values->MBErrorConcealmentBSpatialWeightPredictionDisable, 3, 3) |
66310e230b6Smaya      __gen_uint(values->MBErrorConcealmentBSpatialMotionVectorsOverrideDisable, 4, 4) |
66410e230b6Smaya      __gen_uint(values->MBErrorConcealmentBSpatialPredictionMode, 6, 7) |
66510e230b6Smaya      __gen_uint(values->MBHeaderErrorHandling, 8, 8) |
66610e230b6Smaya      __gen_uint(values->EntropyErrorHandling, 10, 10) |
66710e230b6Smaya      __gen_uint(values->MPRErrorHandling, 12, 12) |
66810e230b6Smaya      __gen_uint(values->BSDPrematureCompleteErrorHandling, 14, 14) |
66910e230b6Smaya      __gen_uint(values->ConcealmentPictureID, 16, 21) |
67010e230b6Smaya      __gen_uint(values->MBErrorConcealmentBTemporalWeightPredictionDisable, 24, 24) |
67110e230b6Smaya      __gen_uint(values->MBErrorConcealmentBTemporalMotionVectorsOverrideEnable, 25, 25) |
67210e230b6Smaya      __gen_uint(values->MBErrorConcealmentBTemporalPredictionMode, 27, 28) |
67310e230b6Smaya      __gen_uint(values->IntraPredMode4x48x8LumaErrorControl, 29, 29) |
67410e230b6Smaya      __gen_uint(values->InitCurrentMBNumber, 30, 30) |
67510e230b6Smaya      __gen_uint(values->ConcealmentMethod, 31, 31);
67610e230b6Smaya
67710e230b6Smaya   dw[1] =
67810e230b6Smaya      __gen_uint(values->FirstMBBitOffset, 0, 2) |
67910e230b6Smaya      __gen_uint(values->LastSlice, 3, 3) |
68010e230b6Smaya      __gen_uint(values->EmulationPreventionBytePresent, 4, 4) |
68110e230b6Smaya      __gen_uint(values->FixPrevMBSkipped, 7, 7) |
68210e230b6Smaya      __gen_uint(values->FirstMBByteOffsetofSliceDataorSliceHeader, 16, 31);
68310e230b6Smaya
68410e230b6Smaya   dw[2] =
68510e230b6Smaya      __gen_uint(values->IntraPredictionErrorControl, 0, 0) |
68610e230b6Smaya      __gen_uint(values->Intra8x84x4PredictionErrorConcealmentControl, 1, 1) |
68710e230b6Smaya      __gen_uint(values->BSliceTemporalInterConcealmentMode, 4, 6) |
68810e230b6Smaya      __gen_uint(values->BSliceSpatialInterConcealmentMode, 8, 10) |
68910e230b6Smaya      __gen_uint(values->BSliceInterDirectTypeConcealmentMode, 12, 13) |
69010e230b6Smaya      __gen_uint(values->BSliceConcealmentMode, 15, 15) |
69110e230b6Smaya      __gen_uint(values->PSliceInterConcealmentMode, 16, 18) |
69210e230b6Smaya      __gen_uint(values->PSliceConcealmentMode, 23, 23) |
69310e230b6Smaya      __gen_uint(values->ConcealmentReferencePictureFieldBit, 24, 29) |
69410e230b6Smaya      __gen_uint(values->ISliceConcealmentMode, 31, 31);
69510e230b6Smaya}
69610e230b6Smaya
69710e230b6Smaya#define GEN8_INTERFACE_DESCRIPTOR_DATA_length      8
69810e230b6Smayastruct GEN8_INTERFACE_DESCRIPTOR_DATA {
69910e230b6Smaya   uint64_t                             KernelStartPointer;
70010e230b6Smaya   bool                                 SoftwareExceptionEnable;
70110e230b6Smaya   bool                                 MaskStackExceptionEnable;
70210e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
70310e230b6Smaya   uint32_t                             FloatingPointMode;
70410e230b6Smaya#define IEEE754                                  0
70510e230b6Smaya#define Alternate                                1
70610e230b6Smaya   uint32_t                             ThreadPriority;
70710e230b6Smaya#define NormalPriority                           0
70810e230b6Smaya#define HighPriority                             1
70910e230b6Smaya   bool                                 SingleProgramFlow;
71010e230b6Smaya   uint32_t                             DenormMode;
71110e230b6Smaya#define Ftz                                      0
71210e230b6Smaya#define SetByKernel                              1
71310e230b6Smaya   uint32_t                             SamplerCount;
71410e230b6Smaya#define Nosamplersused                           0
71510e230b6Smaya#define Between1and4samplersused                 1
71610e230b6Smaya#define Between5and8samplersused                 2
71710e230b6Smaya#define Between9and12samplersused                3
71810e230b6Smaya#define Between13and16samplersused               4
71910e230b6Smaya   uint64_t                             SamplerStatePointer;
72010e230b6Smaya   uint32_t                             BindingTableEntryCount;
72110e230b6Smaya   uint64_t                             BindingTablePointer;
72210e230b6Smaya   uint32_t                             ConstantURBEntryReadOffset;
72310e230b6Smaya   uint32_t                             ConstantURBEntryReadLength;
72410e230b6Smaya   uint32_t                             NumberofThreadsinGPGPUThreadGroup;
72510e230b6Smaya   uint32_t                             SharedLocalMemorySize;
72610e230b6Smaya#define Encodes0k                                0
72710e230b6Smaya#define Encodes4k                                1
72810e230b6Smaya#define Encodes8k                                2
72910e230b6Smaya#define Encodes16k                               4
73010e230b6Smaya#define Encodes32k                               8
73110e230b6Smaya#define Encodes64k                               16
73210e230b6Smaya   bool                                 BarrierEnable;
73310e230b6Smaya   uint32_t                             RoundingMode;
73410e230b6Smaya#define RTNE                                     0
73510e230b6Smaya#define RU                                       1
73610e230b6Smaya#define RD                                       2
73710e230b6Smaya#define RTZ                                      3
73810e230b6Smaya   uint32_t                             CrossThreadConstantDataReadLength;
73910e230b6Smaya};
74010e230b6Smaya
74110e230b6Smayastatic inline void
74210e230b6SmayaGEN8_INTERFACE_DESCRIPTOR_DATA_pack(__attribute__((unused)) __gen_user_data *data,
74310e230b6Smaya                                    __attribute__((unused)) void * restrict dst,
74410e230b6Smaya                                    __attribute__((unused)) const struct GEN8_INTERFACE_DESCRIPTOR_DATA * restrict values)
74510e230b6Smaya{
74610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
74710e230b6Smaya
74810e230b6Smaya   const uint64_t v0 =
74910e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 47);
75010e230b6Smaya   dw[0] = v0;
75110e230b6Smaya   dw[1] = v0 >> 32;
75210e230b6Smaya
75310e230b6Smaya   dw[2] =
75410e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
75510e230b6Smaya      __gen_uint(values->MaskStackExceptionEnable, 11, 11) |
75610e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
75710e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
75810e230b6Smaya      __gen_uint(values->ThreadPriority, 17, 17) |
75910e230b6Smaya      __gen_uint(values->SingleProgramFlow, 18, 18) |
76010e230b6Smaya      __gen_uint(values->DenormMode, 19, 19);
76110e230b6Smaya
76210e230b6Smaya   dw[3] =
76310e230b6Smaya      __gen_uint(values->SamplerCount, 2, 4) |
76410e230b6Smaya      __gen_offset(values->SamplerStatePointer, 5, 31);
76510e230b6Smaya
76610e230b6Smaya   dw[4] =
76710e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 0, 4) |
76810e230b6Smaya      __gen_offset(values->BindingTablePointer, 5, 15);
76910e230b6Smaya
77010e230b6Smaya   dw[5] =
77110e230b6Smaya      __gen_uint(values->ConstantURBEntryReadOffset, 0, 15) |
77210e230b6Smaya      __gen_uint(values->ConstantURBEntryReadLength, 16, 31);
77310e230b6Smaya
77410e230b6Smaya   dw[6] =
77510e230b6Smaya      __gen_uint(values->NumberofThreadsinGPGPUThreadGroup, 0, 9) |
77610e230b6Smaya      __gen_uint(values->SharedLocalMemorySize, 16, 20) |
77710e230b6Smaya      __gen_uint(values->BarrierEnable, 21, 21) |
77810e230b6Smaya      __gen_uint(values->RoundingMode, 22, 23);
77910e230b6Smaya
78010e230b6Smaya   dw[7] =
78110e230b6Smaya      __gen_uint(values->CrossThreadConstantDataReadLength, 0, 7);
78210e230b6Smaya}
78310e230b6Smaya
78410e230b6Smaya#define GEN8_MEMORYADDRESSATTRIBUTES_length      1
78510e230b6Smayastruct GEN8_MEMORYADDRESSATTRIBUTES {
78610e230b6Smaya   uint32_t                             AgeforQUADLRU;
78710e230b6Smaya   uint32_t                             TargetCache;
78810e230b6Smaya#define eLLCOnly                                 0
78910e230b6Smaya#define LLCOnly                                  1
79010e230b6Smaya#define LLCeLLC                                  2
79110e230b6Smaya#define L3LLCeLLC                                3
79210e230b6Smaya   uint32_t                             ArbitrationPriorityControl;
79310e230b6Smaya};
79410e230b6Smaya
79510e230b6Smayastatic inline void
79610e230b6SmayaGEN8_MEMORYADDRESSATTRIBUTES_pack(__attribute__((unused)) __gen_user_data *data,
79710e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
79810e230b6Smaya                                  __attribute__((unused)) const struct GEN8_MEMORYADDRESSATTRIBUTES * restrict values)
79910e230b6Smaya{
80010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
80110e230b6Smaya
80210e230b6Smaya   dw[0] =
80310e230b6Smaya      __gen_uint(values->AgeforQUADLRU, 0, 1) |
80410e230b6Smaya      __gen_uint(values->TargetCache, 3, 4) |
80510e230b6Smaya      __gen_uint(values->ArbitrationPriorityControl, 7, 8);
80610e230b6Smaya}
80710e230b6Smaya
80810e230b6Smaya#define GEN8_MEMORY_OBJECT_CONTROL_STATE_length      1
80910e230b6Smayastruct GEN8_MEMORY_OBJECT_CONTROL_STATE {
81010e230b6Smaya   uint32_t                             AgeforQUADLRU;
81110e230b6Smaya   uint32_t                             TargetCache;
81210e230b6Smaya#define eLLCOnlywheneDRAMispresentelsegetsallocatedinLLC 0
81310e230b6Smaya#define LLCOnly                                  1
81410e230b6Smaya#define LLCeLLCAllowed                           2
81510e230b6Smaya#define L3DefertoPATforLLCeLLCselection          3
81610e230b6Smaya   uint32_t                             MemoryTypeLLCeLLCCacheabilityControl;
81710e230b6Smaya#define UCwithFenceifcoherentcycle               0
81810e230b6Smaya#define UCUncacheable                            1
81910e230b6Smaya#define WT                                       2
82010e230b6Smaya#define WB                                       3
82110e230b6Smaya};
82210e230b6Smaya
82310e230b6Smayastatic inline void
82410e230b6SmayaGEN8_MEMORY_OBJECT_CONTROL_STATE_pack(__attribute__((unused)) __gen_user_data *data,
82510e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
82610e230b6Smaya                                      __attribute__((unused)) const struct GEN8_MEMORY_OBJECT_CONTROL_STATE * restrict values)
82710e230b6Smaya{
82810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
82910e230b6Smaya
83010e230b6Smaya   dw[0] =
83110e230b6Smaya      __gen_uint(values->AgeforQUADLRU, 0, 1) |
83210e230b6Smaya      __gen_uint(values->TargetCache, 3, 4) |
83310e230b6Smaya      __gen_uint(values->MemoryTypeLLCeLLCCacheabilityControl, 5, 6);
83410e230b6Smaya}
83510e230b6Smaya
83610e230b6Smaya#define GEN8_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION_length      2
83710e230b6Smayastruct GEN8_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION {
83810e230b6Smaya   uint32_t                             FirstMBBitOffset;
83910e230b6Smaya   bool                                 LastMB;
84010e230b6Smaya   bool                                 LastPicSlice;
84110e230b6Smaya   uint32_t                             SliceConcealmentType;
84210e230b6Smaya   uint32_t                             SliceConcealmentOverride;
84310e230b6Smaya   uint32_t                             MBCount;
84410e230b6Smaya   uint32_t                             SliceVerticalPosition;
84510e230b6Smaya   uint32_t                             SliceHorizontalPosition;
84610e230b6Smaya   uint32_t                             NextSliceHorizontalPosition;
84710e230b6Smaya   uint32_t                             NextSliceVerticalPosition;
84810e230b6Smaya   uint32_t                             QuantizerScaleCode;
84910e230b6Smaya};
85010e230b6Smaya
85110e230b6Smayastatic inline void
85210e230b6SmayaGEN8_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION_pack(__attribute__((unused)) __gen_user_data *data,
85310e230b6Smaya                                                       __attribute__((unused)) void * restrict dst,
85410e230b6Smaya                                                       __attribute__((unused)) const struct GEN8_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION * restrict values)
85510e230b6Smaya{
85610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
85710e230b6Smaya
85810e230b6Smaya   dw[0] =
85910e230b6Smaya      __gen_uint(values->FirstMBBitOffset, 0, 2) |
86010e230b6Smaya      __gen_uint(values->LastMB, 3, 3) |
86110e230b6Smaya      __gen_uint(values->LastPicSlice, 5, 5) |
86210e230b6Smaya      __gen_uint(values->SliceConcealmentType, 6, 6) |
86310e230b6Smaya      __gen_uint(values->SliceConcealmentOverride, 7, 7) |
86410e230b6Smaya      __gen_uint(values->MBCount, 8, 15) |
86510e230b6Smaya      __gen_uint(values->SliceVerticalPosition, 16, 23) |
86610e230b6Smaya      __gen_uint(values->SliceHorizontalPosition, 24, 31);
86710e230b6Smaya
86810e230b6Smaya   dw[1] =
86910e230b6Smaya      __gen_uint(values->NextSliceHorizontalPosition, 0, 7) |
87010e230b6Smaya      __gen_uint(values->NextSliceVerticalPosition, 8, 16) |
87110e230b6Smaya      __gen_uint(values->QuantizerScaleCode, 24, 28);
87210e230b6Smaya}
87310e230b6Smaya
87410e230b6Smaya#define GEN8_MI_MATH_ALU_INSTRUCTION_length      1
87510e230b6Smayastruct GEN8_MI_MATH_ALU_INSTRUCTION {
87610e230b6Smaya   uint32_t                             Operand2;
87710e230b6Smaya#define MI_ALU_REG0                              0
87810e230b6Smaya#define MI_ALU_REG1                              1
87910e230b6Smaya#define MI_ALU_REG2                              2
88010e230b6Smaya#define MI_ALU_REG3                              3
88110e230b6Smaya#define MI_ALU_REG4                              4
88210e230b6Smaya#define MI_ALU_REG5                              5
88310e230b6Smaya#define MI_ALU_REG6                              6
88410e230b6Smaya#define MI_ALU_REG7                              7
88510e230b6Smaya#define MI_ALU_REG8                              8
88610e230b6Smaya#define MI_ALU_REG9                              9
88710e230b6Smaya#define MI_ALU_REG10                             10
88810e230b6Smaya#define MI_ALU_REG11                             11
88910e230b6Smaya#define MI_ALU_REG12                             12
89010e230b6Smaya#define MI_ALU_REG13                             13
89110e230b6Smaya#define MI_ALU_REG14                             14
89210e230b6Smaya#define MI_ALU_REG15                             15
89310e230b6Smaya#define MI_ALU_SRCA                              32
89410e230b6Smaya#define MI_ALU_SRCB                              33
89510e230b6Smaya#define MI_ALU_ACCU                              49
89610e230b6Smaya#define MI_ALU_ZF                                50
89710e230b6Smaya#define MI_ALU_CF                                51
89810e230b6Smaya   uint32_t                             Operand1;
89910e230b6Smaya#define MI_ALU_REG0                              0
90010e230b6Smaya#define MI_ALU_REG1                              1
90110e230b6Smaya#define MI_ALU_REG2                              2
90210e230b6Smaya#define MI_ALU_REG3                              3
90310e230b6Smaya#define MI_ALU_REG4                              4
90410e230b6Smaya#define MI_ALU_REG5                              5
90510e230b6Smaya#define MI_ALU_REG6                              6
90610e230b6Smaya#define MI_ALU_REG7                              7
90710e230b6Smaya#define MI_ALU_REG8                              8
90810e230b6Smaya#define MI_ALU_REG9                              9
90910e230b6Smaya#define MI_ALU_REG10                             10
91010e230b6Smaya#define MI_ALU_REG11                             11
91110e230b6Smaya#define MI_ALU_REG12                             12
91210e230b6Smaya#define MI_ALU_REG13                             13
91310e230b6Smaya#define MI_ALU_REG14                             14
91410e230b6Smaya#define MI_ALU_REG15                             15
91510e230b6Smaya#define MI_ALU_SRCA                              32
91610e230b6Smaya#define MI_ALU_SRCB                              33
91710e230b6Smaya#define MI_ALU_ACCU                              49
91810e230b6Smaya#define MI_ALU_ZF                                50
91910e230b6Smaya#define MI_ALU_CF                                51
92010e230b6Smaya   uint32_t                             ALUOpcode;
92110e230b6Smaya#define MI_ALU_NOOP                              0
92210e230b6Smaya#define MI_ALU_LOAD                              128
92310e230b6Smaya#define MI_ALU_LOADINV                           1152
92410e230b6Smaya#define MI_ALU_LOAD0                             129
92510e230b6Smaya#define MI_ALU_LOAD1                             1153
92610e230b6Smaya#define MI_ALU_ADD                               256
92710e230b6Smaya#define MI_ALU_SUB                               257
92810e230b6Smaya#define MI_ALU_AND                               258
92910e230b6Smaya#define MI_ALU_OR                                259
93010e230b6Smaya#define MI_ALU_XOR                               260
93110e230b6Smaya#define MI_ALU_STORE                             384
93210e230b6Smaya#define MI_ALU_STOREINV                          1408
93310e230b6Smaya};
93410e230b6Smaya
93510e230b6Smayastatic inline void
93610e230b6SmayaGEN8_MI_MATH_ALU_INSTRUCTION_pack(__attribute__((unused)) __gen_user_data *data,
93710e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
93810e230b6Smaya                                  __attribute__((unused)) const struct GEN8_MI_MATH_ALU_INSTRUCTION * restrict values)
93910e230b6Smaya{
94010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
94110e230b6Smaya
94210e230b6Smaya   dw[0] =
94310e230b6Smaya      __gen_uint(values->Operand2, 0, 9) |
94410e230b6Smaya      __gen_uint(values->Operand1, 10, 19) |
94510e230b6Smaya      __gen_uint(values->ALUOpcode, 20, 31);
94610e230b6Smaya}
94710e230b6Smaya
94810e230b6Smaya#define GEN8_PALETTE_ENTRY_length              1
94910e230b6Smayastruct GEN8_PALETTE_ENTRY {
95010e230b6Smaya   uint32_t                             Blue;
95110e230b6Smaya   uint32_t                             Green;
95210e230b6Smaya   uint32_t                             Red;
95310e230b6Smaya   uint32_t                             Alpha;
95410e230b6Smaya};
95510e230b6Smaya
95610e230b6Smayastatic inline void
95710e230b6SmayaGEN8_PALETTE_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
95810e230b6Smaya                        __attribute__((unused)) void * restrict dst,
95910e230b6Smaya                        __attribute__((unused)) const struct GEN8_PALETTE_ENTRY * restrict values)
96010e230b6Smaya{
96110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
96210e230b6Smaya
96310e230b6Smaya   dw[0] =
96410e230b6Smaya      __gen_uint(values->Blue, 0, 7) |
96510e230b6Smaya      __gen_uint(values->Green, 8, 15) |
96610e230b6Smaya      __gen_uint(values->Red, 16, 23) |
96710e230b6Smaya      __gen_uint(values->Alpha, 24, 31);
96810e230b6Smaya}
96910e230b6Smaya
97010e230b6Smaya#define GEN8_RENDER_SURFACE_STATE_length      16
97110e230b6Smayastruct GEN8_RENDER_SURFACE_STATE {
97210e230b6Smaya   bool                                 CubeFaceEnablePositiveZ;
97310e230b6Smaya   bool                                 CubeFaceEnableNegativeZ;
97410e230b6Smaya   bool                                 CubeFaceEnablePositiveY;
97510e230b6Smaya   bool                                 CubeFaceEnableNegativeY;
97610e230b6Smaya   bool                                 CubeFaceEnablePositiveX;
97710e230b6Smaya   bool                                 CubeFaceEnableNegativeX;
97810e230b6Smaya   uint32_t                             MediaBoundaryPixelMode;
97910e230b6Smaya#define NORMAL_MODE                              0
98010e230b6Smaya#define PROGRESSIVE_FRAME                        2
98110e230b6Smaya#define INTERLACED_FRAME                         3
98210e230b6Smaya   uint32_t                             RenderCacheReadWriteMode;
98310e230b6Smaya#define WriteOnlyCache                           0
98410e230b6Smaya#define ReadWriteCache                           1
98510e230b6Smaya   bool                                 SamplerL2BypassModeDisable;
98610e230b6Smaya   uint32_t                             VerticalLineStrideOffset;
98710e230b6Smaya   uint32_t                             VerticalLineStride;
98810e230b6Smaya   uint32_t                             TileMode;
98910e230b6Smaya#define LINEAR                                   0
99010e230b6Smaya#define WMAJOR                                   1
99110e230b6Smaya#define XMAJOR                                   2
99210e230b6Smaya#define YMAJOR                                   3
99310e230b6Smaya   uint32_t                             SurfaceHorizontalAlignment;
99410e230b6Smaya#define HALIGN4                                  1
99510e230b6Smaya#define HALIGN8                                  2
99610e230b6Smaya#define HALIGN16                                 3
99710e230b6Smaya   uint32_t                             SurfaceVerticalAlignment;
99810e230b6Smaya#define VALIGN4                                  1
99910e230b6Smaya#define VALIGN8                                  2
100010e230b6Smaya#define VALIGN16                                 3
100110e230b6Smaya   uint32_t                             SurfaceFormat;
100210e230b6Smaya   bool                                 SurfaceArray;
100310e230b6Smaya   uint32_t                             SurfaceType;
100410e230b6Smaya#define SURFTYPE_1D                              0
100510e230b6Smaya#define SURFTYPE_2D                              1
100610e230b6Smaya#define SURFTYPE_3D                              2
100710e230b6Smaya#define SURFTYPE_CUBE                            3
100810e230b6Smaya#define SURFTYPE_BUFFER                          4
100910e230b6Smaya#define SURFTYPE_STRBUF                          5
101010e230b6Smaya#define SURFTYPE_NULL                            7
101110e230b6Smaya   uint32_t                             SurfaceQPitch;
101210e230b6Smaya   float                                BaseMipLevel;
101310e230b6Smaya   uint32_t                             MOCS;
101410e230b6Smaya   uint32_t                             Width;
101510e230b6Smaya   uint32_t                             Height;
101610e230b6Smaya   uint32_t                             SurfacePitch;
101710e230b6Smaya   uint32_t                             Depth;
101810e230b6Smaya   uint32_t                             MultisamplePositionPaletteIndex;
101910e230b6Smaya   uint32_t                             NumberofMultisamples;
102010e230b6Smaya#define MULTISAMPLECOUNT_1                       0
102110e230b6Smaya#define MULTISAMPLECOUNT_2                       1
102210e230b6Smaya#define MULTISAMPLECOUNT_4                       2
102310e230b6Smaya#define MULTISAMPLECOUNT_8                       3
102410e230b6Smaya   uint32_t                             MultisampledSurfaceStorageFormat;
102510e230b6Smaya#define MSFMT_MSS                                0
102610e230b6Smaya#define MSFMT_DEPTH_STENCIL                      1
102710e230b6Smaya   uint32_t                             RenderTargetViewExtent;
102810e230b6Smaya   uint32_t                             MinimumArrayElement;
102910e230b6Smaya   uint32_t                             RenderTargetAndSampleUnormRotation;
103010e230b6Smaya#define _0DEG                                    0
103110e230b6Smaya#define _90DEG                                   1
103210e230b6Smaya#define _270DEG                                  3
103310e230b6Smaya   uint32_t                             MIPCountLOD;
103410e230b6Smaya   uint32_t                             SurfaceMinLOD;
103510e230b6Smaya   uint32_t                             CoherencyType;
103610e230b6Smaya#define GPUcoherent                              0
103710e230b6Smaya#define IAcoherent                               1
103810e230b6Smaya   bool                                 EWADisableForCube;
103910e230b6Smaya   uint32_t                             YOffset;
104010e230b6Smaya   uint32_t                             XOffset;
104110e230b6Smaya   uint32_t                             AuxiliarySurfaceMode;
104210e230b6Smaya#define AUX_NONE                                 0
104310e230b6Smaya#define AUX_MCS                                  1
104410e230b6Smaya#define AUX_APPEND                               2
104510e230b6Smaya#define AUX_HIZ                                  3
104610e230b6Smaya   uint32_t                             YOffsetforUorUVPlane;
104710e230b6Smaya   uint32_t                             AuxiliarySurfacePitch;
104810e230b6Smaya   uint32_t                             AuxiliarySurfaceQPitch;
104910e230b6Smaya   uint32_t                             XOffsetforUorUVPlane;
105010e230b6Smaya   bool                                 SeparateUVPlaneEnable;
105110e230b6Smaya   float                                ResourceMinLOD;
105210e230b6Smaya   enum GEN8_ShaderChannelSelect        ShaderChannelSelectAlpha;
105310e230b6Smaya   enum GEN8_ShaderChannelSelect        ShaderChannelSelectBlue;
105410e230b6Smaya   enum GEN8_ShaderChannelSelect        ShaderChannelSelectGreen;
105510e230b6Smaya   enum GEN8_ShaderChannelSelect        ShaderChannelSelectRed;
105610e230b6Smaya   enum GEN8_ClearColor                 AlphaClearColor;
105710e230b6Smaya   enum GEN8_ClearColor                 BlueClearColor;
105810e230b6Smaya   enum GEN8_ClearColor                 GreenClearColor;
105910e230b6Smaya   enum GEN8_ClearColor                 RedClearColor;
106010e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
106110e230b6Smaya   __gen_address_type                   AuxiliarySurfaceBaseAddress;
106210e230b6Smaya   uint32_t                             AuxiliaryTableIndexforMediaCompressedSurface;
106310e230b6Smaya   uint32_t                             YOffsetforVPlane;
106410e230b6Smaya   uint32_t                             XOffsetforVPlane;
106510e230b6Smaya};
106610e230b6Smaya
106710e230b6Smayastatic inline void
106810e230b6SmayaGEN8_RENDER_SURFACE_STATE_pack(__attribute__((unused)) __gen_user_data *data,
106910e230b6Smaya                               __attribute__((unused)) void * restrict dst,
107010e230b6Smaya                               __attribute__((unused)) const struct GEN8_RENDER_SURFACE_STATE * restrict values)
107110e230b6Smaya{
107210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
107310e230b6Smaya
107410e230b6Smaya   dw[0] =
107510e230b6Smaya      __gen_uint(values->CubeFaceEnablePositiveZ, 0, 0) |
107610e230b6Smaya      __gen_uint(values->CubeFaceEnableNegativeZ, 1, 1) |
107710e230b6Smaya      __gen_uint(values->CubeFaceEnablePositiveY, 2, 2) |
107810e230b6Smaya      __gen_uint(values->CubeFaceEnableNegativeY, 3, 3) |
107910e230b6Smaya      __gen_uint(values->CubeFaceEnablePositiveX, 4, 4) |
108010e230b6Smaya      __gen_uint(values->CubeFaceEnableNegativeX, 5, 5) |
108110e230b6Smaya      __gen_uint(values->MediaBoundaryPixelMode, 6, 7) |
108210e230b6Smaya      __gen_uint(values->RenderCacheReadWriteMode, 8, 8) |
108310e230b6Smaya      __gen_uint(values->SamplerL2BypassModeDisable, 9, 9) |
108410e230b6Smaya      __gen_uint(values->VerticalLineStrideOffset, 10, 10) |
108510e230b6Smaya      __gen_uint(values->VerticalLineStride, 11, 11) |
108610e230b6Smaya      __gen_uint(values->TileMode, 12, 13) |
108710e230b6Smaya      __gen_uint(values->SurfaceHorizontalAlignment, 14, 15) |
108810e230b6Smaya      __gen_uint(values->SurfaceVerticalAlignment, 16, 17) |
108910e230b6Smaya      __gen_uint(values->SurfaceFormat, 18, 26) |
109010e230b6Smaya      __gen_uint(values->SurfaceArray, 28, 28) |
109110e230b6Smaya      __gen_uint(values->SurfaceType, 29, 31);
109210e230b6Smaya
109310e230b6Smaya   dw[1] =
109410e230b6Smaya      __gen_uint(values->SurfaceQPitch, 0, 14) |
109510e230b6Smaya      __gen_ufixed(values->BaseMipLevel, 19, 23, 1) |
109610e230b6Smaya      __gen_uint(values->MOCS, 24, 30);
109710e230b6Smaya
109810e230b6Smaya   dw[2] =
109910e230b6Smaya      __gen_uint(values->Width, 0, 13) |
110010e230b6Smaya      __gen_uint(values->Height, 16, 29);
110110e230b6Smaya
110210e230b6Smaya   dw[3] =
110310e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 17) |
110410e230b6Smaya      __gen_uint(values->Depth, 21, 31);
110510e230b6Smaya
110610e230b6Smaya   dw[4] =
110710e230b6Smaya      __gen_uint(values->MultisamplePositionPaletteIndex, 0, 2) |
110810e230b6Smaya      __gen_uint(values->NumberofMultisamples, 3, 5) |
110910e230b6Smaya      __gen_uint(values->MultisampledSurfaceStorageFormat, 6, 6) |
111010e230b6Smaya      __gen_uint(values->RenderTargetViewExtent, 7, 17) |
111110e230b6Smaya      __gen_uint(values->MinimumArrayElement, 18, 28) |
111210e230b6Smaya      __gen_uint(values->RenderTargetAndSampleUnormRotation, 29, 30);
111310e230b6Smaya
111410e230b6Smaya   dw[5] =
111510e230b6Smaya      __gen_uint(values->MIPCountLOD, 0, 3) |
111610e230b6Smaya      __gen_uint(values->SurfaceMinLOD, 4, 7) |
111710e230b6Smaya      __gen_uint(values->CoherencyType, 14, 14) |
111810e230b6Smaya      __gen_uint(values->EWADisableForCube, 20, 20) |
111910e230b6Smaya      __gen_uint(values->YOffset, 21, 23) |
112010e230b6Smaya      __gen_uint(values->XOffset, 25, 31);
112110e230b6Smaya
112210e230b6Smaya   dw[6] =
112310e230b6Smaya      __gen_uint(values->AuxiliarySurfaceMode, 0, 2) |
112410e230b6Smaya      __gen_uint(values->YOffsetforUorUVPlane, 0, 13) |
112510e230b6Smaya      __gen_uint(values->AuxiliarySurfacePitch, 3, 11) |
112610e230b6Smaya      __gen_uint(values->AuxiliarySurfaceQPitch, 16, 30) |
112710e230b6Smaya      __gen_uint(values->XOffsetforUorUVPlane, 16, 29) |
112810e230b6Smaya      __gen_uint(values->SeparateUVPlaneEnable, 31, 31);
112910e230b6Smaya
113010e230b6Smaya   dw[7] =
113110e230b6Smaya      __gen_ufixed(values->ResourceMinLOD, 0, 11, 8) |
113210e230b6Smaya      __gen_uint(values->ShaderChannelSelectAlpha, 16, 18) |
113310e230b6Smaya      __gen_uint(values->ShaderChannelSelectBlue, 19, 21) |
113410e230b6Smaya      __gen_uint(values->ShaderChannelSelectGreen, 22, 24) |
113510e230b6Smaya      __gen_uint(values->ShaderChannelSelectRed, 25, 27) |
113610e230b6Smaya      __gen_uint(values->AlphaClearColor, 28, 28) |
113710e230b6Smaya      __gen_uint(values->BlueClearColor, 29, 29) |
113810e230b6Smaya      __gen_uint(values->GreenClearColor, 30, 30) |
113910e230b6Smaya      __gen_uint(values->RedClearColor, 31, 31);
114010e230b6Smaya
114110e230b6Smaya   const uint64_t v8_address =
114210e230b6Smaya      __gen_combine_address(data, &dw[8], values->SurfaceBaseAddress, 0);
114310e230b6Smaya   dw[8] = v8_address;
114410e230b6Smaya   dw[9] = v8_address >> 32;
114510e230b6Smaya
114610e230b6Smaya   const uint64_t v10 =
114710e230b6Smaya      __gen_uint(values->AuxiliaryTableIndexforMediaCompressedSurface, 21, 31) |
114810e230b6Smaya      __gen_uint(values->YOffsetforVPlane, 32, 45) |
114910e230b6Smaya      __gen_uint(values->XOffsetforVPlane, 48, 61);
115010e230b6Smaya   const uint64_t v10_address =
115110e230b6Smaya      __gen_combine_address(data, &dw[10], values->AuxiliarySurfaceBaseAddress, v10);
115210e230b6Smaya   dw[10] = v10_address;
115310e230b6Smaya   dw[11] = (v10_address >> 32) | (v10 >> 32);
115410e230b6Smaya
115510e230b6Smaya   dw[12] = 0;
115610e230b6Smaya
115710e230b6Smaya   dw[13] = 0;
115810e230b6Smaya
115910e230b6Smaya   dw[14] = 0;
116010e230b6Smaya
116110e230b6Smaya   dw[15] = 0;
116210e230b6Smaya}
116310e230b6Smaya
116410e230b6Smaya#define GEN8_SAMPLER_BORDER_COLOR_STATE_length      4
116510e230b6Smayastruct GEN8_SAMPLER_BORDER_COLOR_STATE {
116610e230b6Smaya   float                                BorderColorFloatRed;
116710e230b6Smaya   uint32_t                             BorderColor32bitRed;
116810e230b6Smaya   float                                BorderColorFloatGreen;
116910e230b6Smaya   uint32_t                             BorderColor32bitGreen;
117010e230b6Smaya   float                                BorderColorFloatBlue;
117110e230b6Smaya   uint32_t                             BorderColor32bitBlue;
117210e230b6Smaya   float                                BorderColorFloatAlpha;
117310e230b6Smaya   uint32_t                             BorderColor32bitAlpha;
117410e230b6Smaya};
117510e230b6Smaya
117610e230b6Smayastatic inline void
117710e230b6SmayaGEN8_SAMPLER_BORDER_COLOR_STATE_pack(__attribute__((unused)) __gen_user_data *data,
117810e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
117910e230b6Smaya                                     __attribute__((unused)) const struct GEN8_SAMPLER_BORDER_COLOR_STATE * restrict values)
118010e230b6Smaya{
118110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
118210e230b6Smaya
118310e230b6Smaya   dw[0] =
118410e230b6Smaya      __gen_float(values->BorderColorFloatRed) |
118510e230b6Smaya      __gen_uint(values->BorderColor32bitRed, 0, 31);
118610e230b6Smaya
118710e230b6Smaya   dw[1] =
118810e230b6Smaya      __gen_float(values->BorderColorFloatGreen) |
118910e230b6Smaya      __gen_uint(values->BorderColor32bitGreen, 0, 31);
119010e230b6Smaya
119110e230b6Smaya   dw[2] =
119210e230b6Smaya      __gen_float(values->BorderColorFloatBlue) |
119310e230b6Smaya      __gen_uint(values->BorderColor32bitBlue, 0, 31);
119410e230b6Smaya
119510e230b6Smaya   dw[3] =
119610e230b6Smaya      __gen_float(values->BorderColorFloatAlpha) |
119710e230b6Smaya      __gen_uint(values->BorderColor32bitAlpha, 0, 31);
119810e230b6Smaya}
119910e230b6Smaya
120010e230b6Smaya#define GEN8_SAMPLER_STATE_length              4
120110e230b6Smayastruct GEN8_SAMPLER_STATE {
120210e230b6Smaya   uint32_t                             AnisotropicAlgorithm;
120310e230b6Smaya#define LEGACY                                   0
120410e230b6Smaya#define EWAApproximation                         1
120510e230b6Smaya   float                                TextureLODBias;
120610e230b6Smaya   uint32_t                             MinModeFilter;
120710e230b6Smaya#define MAPFILTER_NEAREST                        0
120810e230b6Smaya#define MAPFILTER_LINEAR                         1
120910e230b6Smaya#define MAPFILTER_ANISOTROPIC                    2
121010e230b6Smaya#define MAPFILTER_MONO                           6
121110e230b6Smaya   uint32_t                             MagModeFilter;
121210e230b6Smaya#define MAPFILTER_NEAREST                        0
121310e230b6Smaya#define MAPFILTER_LINEAR                         1
121410e230b6Smaya#define MAPFILTER_ANISOTROPIC                    2
121510e230b6Smaya#define MAPFILTER_MONO                           6
121610e230b6Smaya   uint32_t                             MipModeFilter;
121710e230b6Smaya#define MIPFILTER_NONE                           0
121810e230b6Smaya#define MIPFILTER_NEAREST                        1
121910e230b6Smaya#define MIPFILTER_LINEAR                         3
122010e230b6Smaya   float                                BaseMipLevel;
122110e230b6Smaya   uint32_t                             LODPreClampMode;
122210e230b6Smaya#define CLAMP_MODE_NONE                          0
122310e230b6Smaya#define CLAMP_MODE_OGL                           2
122410e230b6Smaya   uint32_t                             TextureBorderColorMode;
122510e230b6Smaya#define DX10OGL                                  0
122610e230b6Smaya#define DX9                                      1
122710e230b6Smaya   bool                                 SamplerDisable;
122810e230b6Smaya   uint32_t                             CubeSurfaceControlMode;
122910e230b6Smaya#define PROGRAMMED                               0
123010e230b6Smaya#define OVERRIDE                                 1
123110e230b6Smaya   uint32_t                             ShadowFunction;
123210e230b6Smaya#define PREFILTEROPALWAYS                        0
123310e230b6Smaya#define PREFILTEROPNEVER                         1
123410e230b6Smaya#define PREFILTEROPLESS                          2
123510e230b6Smaya#define PREFILTEROPEQUAL                         3
123610e230b6Smaya#define PREFILTEROPLEQUAL                        4
123710e230b6Smaya#define PREFILTEROPGREATER                       5
123810e230b6Smaya#define PREFILTEROPNOTEQUAL                      6
123910e230b6Smaya#define PREFILTEROPGEQUAL                        7
124010e230b6Smaya   uint32_t                             ChromaKeyMode;
124110e230b6Smaya#define KEYFILTER_KILL_ON_ANY_MATCH              0
124210e230b6Smaya#define KEYFILTER_REPLACE_BLACK                  1
124310e230b6Smaya   uint32_t                             ChromaKeyIndex;
124410e230b6Smaya   bool                                 ChromaKeyEnable;
124510e230b6Smaya   float                                MaxLOD;
124610e230b6Smaya   float                                MinLOD;
124710e230b6Smaya   uint32_t                             LODClampMagnificationMode;
124810e230b6Smaya#define MIPNONE                                  0
124910e230b6Smaya#define MIPFILTER                                1
125010e230b6Smaya   uint64_t                             BorderColorPointer;
125110e230b6Smaya   enum GEN8_TextureCoordinateMode      TCZAddressControlMode;
125210e230b6Smaya   enum GEN8_TextureCoordinateMode      TCYAddressControlMode;
125310e230b6Smaya   enum GEN8_TextureCoordinateMode      TCXAddressControlMode;
125410e230b6Smaya   bool                                 NonnormalizedCoordinateEnable;
125510e230b6Smaya   uint32_t                             TrilinearFilterQuality;
125610e230b6Smaya#define FULL                                     0
125710e230b6Smaya#define HIGH                                     1
125810e230b6Smaya#define MED                                      2
125910e230b6Smaya#define LOW                                      3
126010e230b6Smaya   bool                                 RAddressMinFilterRoundingEnable;
126110e230b6Smaya   bool                                 RAddressMagFilterRoundingEnable;
126210e230b6Smaya   bool                                 VAddressMinFilterRoundingEnable;
126310e230b6Smaya   bool                                 VAddressMagFilterRoundingEnable;
126410e230b6Smaya   bool                                 UAddressMinFilterRoundingEnable;
126510e230b6Smaya   bool                                 UAddressMagFilterRoundingEnable;
126610e230b6Smaya   uint32_t                             MaximumAnisotropy;
126710e230b6Smaya#define RATIO21                                  0
126810e230b6Smaya#define RATIO41                                  1
126910e230b6Smaya#define RATIO61                                  2
127010e230b6Smaya#define RATIO81                                  3
127110e230b6Smaya#define RATIO101                                 4
127210e230b6Smaya#define RATIO121                                 5
127310e230b6Smaya#define RATIO141                                 6
127410e230b6Smaya#define RATIO161                                 7
127510e230b6Smaya};
127610e230b6Smaya
127710e230b6Smayastatic inline void
127810e230b6SmayaGEN8_SAMPLER_STATE_pack(__attribute__((unused)) __gen_user_data *data,
127910e230b6Smaya                        __attribute__((unused)) void * restrict dst,
128010e230b6Smaya                        __attribute__((unused)) const struct GEN8_SAMPLER_STATE * restrict values)
128110e230b6Smaya{
128210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
128310e230b6Smaya
128410e230b6Smaya   dw[0] =
128510e230b6Smaya      __gen_uint(values->AnisotropicAlgorithm, 0, 0) |
128610e230b6Smaya      __gen_sfixed(values->TextureLODBias, 1, 13, 8) |
128710e230b6Smaya      __gen_uint(values->MinModeFilter, 14, 16) |
128810e230b6Smaya      __gen_uint(values->MagModeFilter, 17, 19) |
128910e230b6Smaya      __gen_uint(values->MipModeFilter, 20, 21) |
129010e230b6Smaya      __gen_ufixed(values->BaseMipLevel, 22, 26, 1) |
129110e230b6Smaya      __gen_uint(values->LODPreClampMode, 27, 28) |
129210e230b6Smaya      __gen_uint(values->TextureBorderColorMode, 29, 29) |
129310e230b6Smaya      __gen_uint(values->SamplerDisable, 31, 31);
129410e230b6Smaya
129510e230b6Smaya   dw[1] =
129610e230b6Smaya      __gen_uint(values->CubeSurfaceControlMode, 0, 0) |
129710e230b6Smaya      __gen_uint(values->ShadowFunction, 1, 3) |
129810e230b6Smaya      __gen_uint(values->ChromaKeyMode, 4, 4) |
129910e230b6Smaya      __gen_uint(values->ChromaKeyIndex, 5, 6) |
130010e230b6Smaya      __gen_uint(values->ChromaKeyEnable, 7, 7) |
130110e230b6Smaya      __gen_ufixed(values->MaxLOD, 8, 19, 8) |
130210e230b6Smaya      __gen_ufixed(values->MinLOD, 20, 31, 8);
130310e230b6Smaya
130410e230b6Smaya   dw[2] =
130510e230b6Smaya      __gen_uint(values->LODClampMagnificationMode, 0, 0) |
130610e230b6Smaya      __gen_offset(values->BorderColorPointer, 6, 23);
130710e230b6Smaya
130810e230b6Smaya   dw[3] =
130910e230b6Smaya      __gen_uint(values->TCZAddressControlMode, 0, 2) |
131010e230b6Smaya      __gen_uint(values->TCYAddressControlMode, 3, 5) |
131110e230b6Smaya      __gen_uint(values->TCXAddressControlMode, 6, 8) |
131210e230b6Smaya      __gen_uint(values->NonnormalizedCoordinateEnable, 10, 10) |
131310e230b6Smaya      __gen_uint(values->TrilinearFilterQuality, 11, 12) |
131410e230b6Smaya      __gen_uint(values->RAddressMinFilterRoundingEnable, 13, 13) |
131510e230b6Smaya      __gen_uint(values->RAddressMagFilterRoundingEnable, 14, 14) |
131610e230b6Smaya      __gen_uint(values->VAddressMinFilterRoundingEnable, 15, 15) |
131710e230b6Smaya      __gen_uint(values->VAddressMagFilterRoundingEnable, 16, 16) |
131810e230b6Smaya      __gen_uint(values->UAddressMinFilterRoundingEnable, 17, 17) |
131910e230b6Smaya      __gen_uint(values->UAddressMagFilterRoundingEnable, 18, 18) |
132010e230b6Smaya      __gen_uint(values->MaximumAnisotropy, 19, 21);
132110e230b6Smaya}
132210e230b6Smaya
132310e230b6Smaya#define GEN8_SAMPLER_STATE_8X8_AVS_COEFFICIENTS_length      8
132410e230b6Smayastruct GEN8_SAMPLER_STATE_8X8_AVS_COEFFICIENTS {
132510e230b6Smaya   float                                Table0XFilterCoefficientn0;
132610e230b6Smaya   float                                Table0YFilterCoefficientn0;
132710e230b6Smaya   float                                Table0XFilterCoefficientn1;
132810e230b6Smaya   float                                Table0YFilterCoefficientn1;
132910e230b6Smaya   float                                Table0XFilterCoefficientn2;
133010e230b6Smaya   float                                Table0YFilterCoefficientn2;
133110e230b6Smaya   float                                Table0XFilterCoefficientn3;
133210e230b6Smaya   float                                Table0YFilterCoefficientn3;
133310e230b6Smaya   float                                Table0XFilterCoefficientn4;
133410e230b6Smaya   float                                Table0YFilterCoefficientn4;
133510e230b6Smaya   float                                Table0XFilterCoefficientn5;
133610e230b6Smaya   float                                Table0YFilterCoefficientn5;
133710e230b6Smaya   float                                Table0XFilterCoefficientn6;
133810e230b6Smaya   float                                Table0YFilterCoefficientn6;
133910e230b6Smaya   float                                Table0XFilterCoefficientn7;
134010e230b6Smaya   float                                Table0YFilterCoefficientn7;
134110e230b6Smaya   float                                Table1XFilterCoefficientn2;
134210e230b6Smaya   float                                Table1XFilterCoefficientn3;
134310e230b6Smaya   float                                Table1XFilterCoefficientn4;
134410e230b6Smaya   float                                Table1XFilterCoefficientn5;
134510e230b6Smaya   float                                Table1YFilterCoefficientn2;
134610e230b6Smaya   float                                Table1YFilterCoefficientn3;
134710e230b6Smaya   float                                Table1YFilterCoefficientn4;
134810e230b6Smaya   float                                Table1YFilterCoefficientn5;
134910e230b6Smaya};
135010e230b6Smaya
135110e230b6Smayastatic inline void
135210e230b6SmayaGEN8_SAMPLER_STATE_8X8_AVS_COEFFICIENTS_pack(__attribute__((unused)) __gen_user_data *data,
135310e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
135410e230b6Smaya                                             __attribute__((unused)) const struct GEN8_SAMPLER_STATE_8X8_AVS_COEFFICIENTS * restrict values)
135510e230b6Smaya{
135610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
135710e230b6Smaya
135810e230b6Smaya   dw[0] =
135910e230b6Smaya      __gen_sfixed(values->Table0XFilterCoefficientn0, 0, 7, 6) |
136010e230b6Smaya      __gen_sfixed(values->Table0YFilterCoefficientn0, 8, 15, 6) |
136110e230b6Smaya      __gen_sfixed(values->Table0XFilterCoefficientn1, 16, 23, 6) |
136210e230b6Smaya      __gen_sfixed(values->Table0YFilterCoefficientn1, 24, 31, 6);
136310e230b6Smaya
136410e230b6Smaya   dw[1] =
136510e230b6Smaya      __gen_sfixed(values->Table0XFilterCoefficientn2, 0, 7, 6) |
136610e230b6Smaya      __gen_sfixed(values->Table0YFilterCoefficientn2, 8, 15, 6) |
136710e230b6Smaya      __gen_sfixed(values->Table0XFilterCoefficientn3, 16, 23, 6) |
136810e230b6Smaya      __gen_sfixed(values->Table0YFilterCoefficientn3, 24, 31, 6);
136910e230b6Smaya
137010e230b6Smaya   dw[2] =
137110e230b6Smaya      __gen_sfixed(values->Table0XFilterCoefficientn4, 0, 7, 6) |
137210e230b6Smaya      __gen_sfixed(values->Table0YFilterCoefficientn4, 8, 15, 6) |
137310e230b6Smaya      __gen_sfixed(values->Table0XFilterCoefficientn5, 16, 23, 6) |
137410e230b6Smaya      __gen_sfixed(values->Table0YFilterCoefficientn5, 24, 31, 6);
137510e230b6Smaya
137610e230b6Smaya   dw[3] =
137710e230b6Smaya      __gen_sfixed(values->Table0XFilterCoefficientn6, 0, 7, 6) |
137810e230b6Smaya      __gen_sfixed(values->Table0YFilterCoefficientn6, 8, 15, 6) |
137910e230b6Smaya      __gen_sfixed(values->Table0XFilterCoefficientn7, 16, 23, 6) |
138010e230b6Smaya      __gen_sfixed(values->Table0YFilterCoefficientn7, 24, 31, 6);
138110e230b6Smaya
138210e230b6Smaya   dw[4] =
138310e230b6Smaya      __gen_sfixed(values->Table1XFilterCoefficientn2, 16, 23, 6) |
138410e230b6Smaya      __gen_sfixed(values->Table1XFilterCoefficientn3, 24, 31, 6);
138510e230b6Smaya
138610e230b6Smaya   dw[5] =
138710e230b6Smaya      __gen_sfixed(values->Table1XFilterCoefficientn4, 0, 7, 6) |
138810e230b6Smaya      __gen_sfixed(values->Table1XFilterCoefficientn5, 8, 15, 6);
138910e230b6Smaya
139010e230b6Smaya   dw[6] =
139110e230b6Smaya      __gen_sfixed(values->Table1YFilterCoefficientn2, 16, 23, 6) |
139210e230b6Smaya      __gen_sfixed(values->Table1YFilterCoefficientn3, 24, 31, 6);
139310e230b6Smaya
139410e230b6Smaya   dw[7] =
139510e230b6Smaya      __gen_sfixed(values->Table1YFilterCoefficientn4, 0, 7, 6) |
139610e230b6Smaya      __gen_sfixed(values->Table1YFilterCoefficientn5, 8, 15, 6);
139710e230b6Smaya}
139810e230b6Smaya
139910e230b6Smaya#define GEN8_SCISSOR_RECT_length               2
140010e230b6Smayastruct GEN8_SCISSOR_RECT {
140110e230b6Smaya   uint32_t                             ScissorRectangleXMin;
140210e230b6Smaya   uint32_t                             ScissorRectangleYMin;
140310e230b6Smaya   uint32_t                             ScissorRectangleXMax;
140410e230b6Smaya   uint32_t                             ScissorRectangleYMax;
140510e230b6Smaya};
140610e230b6Smaya
140710e230b6Smayastatic inline void
140810e230b6SmayaGEN8_SCISSOR_RECT_pack(__attribute__((unused)) __gen_user_data *data,
140910e230b6Smaya                       __attribute__((unused)) void * restrict dst,
141010e230b6Smaya                       __attribute__((unused)) const struct GEN8_SCISSOR_RECT * restrict values)
141110e230b6Smaya{
141210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
141310e230b6Smaya
141410e230b6Smaya   dw[0] =
141510e230b6Smaya      __gen_uint(values->ScissorRectangleXMin, 0, 15) |
141610e230b6Smaya      __gen_uint(values->ScissorRectangleYMin, 16, 31);
141710e230b6Smaya
141810e230b6Smaya   dw[1] =
141910e230b6Smaya      __gen_uint(values->ScissorRectangleXMax, 0, 15) |
142010e230b6Smaya      __gen_uint(values->ScissorRectangleYMax, 16, 31);
142110e230b6Smaya}
142210e230b6Smaya
142310e230b6Smaya#define GEN8_SF_CLIP_VIEWPORT_length          16
142410e230b6Smayastruct GEN8_SF_CLIP_VIEWPORT {
142510e230b6Smaya   float                                ViewportMatrixElementm00;
142610e230b6Smaya   float                                ViewportMatrixElementm11;
142710e230b6Smaya   float                                ViewportMatrixElementm22;
142810e230b6Smaya   float                                ViewportMatrixElementm30;
142910e230b6Smaya   float                                ViewportMatrixElementm31;
143010e230b6Smaya   float                                ViewportMatrixElementm32;
143110e230b6Smaya   float                                XMinClipGuardband;
143210e230b6Smaya   float                                XMaxClipGuardband;
143310e230b6Smaya   float                                YMinClipGuardband;
143410e230b6Smaya   float                                YMaxClipGuardband;
143510e230b6Smaya   float                                XMinViewPort;
143610e230b6Smaya   float                                XMaxViewPort;
143710e230b6Smaya   float                                YMinViewPort;
143810e230b6Smaya   float                                YMaxViewPort;
143910e230b6Smaya};
144010e230b6Smaya
144110e230b6Smayastatic inline void
144210e230b6SmayaGEN8_SF_CLIP_VIEWPORT_pack(__attribute__((unused)) __gen_user_data *data,
144310e230b6Smaya                           __attribute__((unused)) void * restrict dst,
144410e230b6Smaya                           __attribute__((unused)) const struct GEN8_SF_CLIP_VIEWPORT * restrict values)
144510e230b6Smaya{
144610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
144710e230b6Smaya
144810e230b6Smaya   dw[0] =
144910e230b6Smaya      __gen_float(values->ViewportMatrixElementm00);
145010e230b6Smaya
145110e230b6Smaya   dw[1] =
145210e230b6Smaya      __gen_float(values->ViewportMatrixElementm11);
145310e230b6Smaya
145410e230b6Smaya   dw[2] =
145510e230b6Smaya      __gen_float(values->ViewportMatrixElementm22);
145610e230b6Smaya
145710e230b6Smaya   dw[3] =
145810e230b6Smaya      __gen_float(values->ViewportMatrixElementm30);
145910e230b6Smaya
146010e230b6Smaya   dw[4] =
146110e230b6Smaya      __gen_float(values->ViewportMatrixElementm31);
146210e230b6Smaya
146310e230b6Smaya   dw[5] =
146410e230b6Smaya      __gen_float(values->ViewportMatrixElementm32);
146510e230b6Smaya
146610e230b6Smaya   dw[6] = 0;
146710e230b6Smaya
146810e230b6Smaya   dw[7] = 0;
146910e230b6Smaya
147010e230b6Smaya   dw[8] =
147110e230b6Smaya      __gen_float(values->XMinClipGuardband);
147210e230b6Smaya
147310e230b6Smaya   dw[9] =
147410e230b6Smaya      __gen_float(values->XMaxClipGuardband);
147510e230b6Smaya
147610e230b6Smaya   dw[10] =
147710e230b6Smaya      __gen_float(values->YMinClipGuardband);
147810e230b6Smaya
147910e230b6Smaya   dw[11] =
148010e230b6Smaya      __gen_float(values->YMaxClipGuardband);
148110e230b6Smaya
148210e230b6Smaya   dw[12] =
148310e230b6Smaya      __gen_float(values->XMinViewPort);
148410e230b6Smaya
148510e230b6Smaya   dw[13] =
148610e230b6Smaya      __gen_float(values->XMaxViewPort);
148710e230b6Smaya
148810e230b6Smaya   dw[14] =
148910e230b6Smaya      __gen_float(values->YMinViewPort);
149010e230b6Smaya
149110e230b6Smaya   dw[15] =
149210e230b6Smaya      __gen_float(values->YMaxViewPort);
149310e230b6Smaya}
149410e230b6Smaya
149510e230b6Smaya#define GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_length      1
149610e230b6Smayastruct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL {
149710e230b6Smaya   uint32_t                             SourceAttribute;
149810e230b6Smaya   uint32_t                             SwizzleSelect;
149910e230b6Smaya#define INPUTATTR                                0
150010e230b6Smaya#define INPUTATTR_FACING                         1
150110e230b6Smaya#define INPUTATTR_W                              2
150210e230b6Smaya#define INPUTATTR_FACING_W                       3
150310e230b6Smaya   uint32_t                             ConstantSource;
150410e230b6Smaya#define CONST_0000                               0
150510e230b6Smaya#define CONST_0001_FLOAT                         1
150610e230b6Smaya#define CONST_1111_FLOAT                         2
150710e230b6Smaya#define PRIM_ID                                  3
150810e230b6Smaya   uint32_t                             SwizzleControlMode;
150910e230b6Smaya   bool                                 ComponentOverrideX;
151010e230b6Smaya   bool                                 ComponentOverrideY;
151110e230b6Smaya   bool                                 ComponentOverrideZ;
151210e230b6Smaya   bool                                 ComponentOverrideW;
151310e230b6Smaya};
151410e230b6Smaya
151510e230b6Smayastatic inline void
151610e230b6SmayaGEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(__attribute__((unused)) __gen_user_data *data,
151710e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
151810e230b6Smaya                                     __attribute__((unused)) const struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL * restrict values)
151910e230b6Smaya{
152010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
152110e230b6Smaya
152210e230b6Smaya   dw[0] =
152310e230b6Smaya      __gen_uint(values->SourceAttribute, 0, 4) |
152410e230b6Smaya      __gen_uint(values->SwizzleSelect, 6, 7) |
152510e230b6Smaya      __gen_uint(values->ConstantSource, 9, 10) |
152610e230b6Smaya      __gen_uint(values->SwizzleControlMode, 11, 11) |
152710e230b6Smaya      __gen_uint(values->ComponentOverrideX, 12, 12) |
152810e230b6Smaya      __gen_uint(values->ComponentOverrideY, 13, 13) |
152910e230b6Smaya      __gen_uint(values->ComponentOverrideZ, 14, 14) |
153010e230b6Smaya      __gen_uint(values->ComponentOverrideW, 15, 15);
153110e230b6Smaya}
153210e230b6Smaya
153310e230b6Smaya#define GEN8_SO_DECL_length                    1
153410e230b6Smayastruct GEN8_SO_DECL {
153510e230b6Smaya   uint32_t                             ComponentMask;
153610e230b6Smaya   uint32_t                             RegisterIndex;
153710e230b6Smaya   uint32_t                             HoleFlag;
153810e230b6Smaya   uint32_t                             OutputBufferSlot;
153910e230b6Smaya};
154010e230b6Smaya
154110e230b6Smayastatic inline void
154210e230b6SmayaGEN8_SO_DECL_pack(__attribute__((unused)) __gen_user_data *data,
154310e230b6Smaya                  __attribute__((unused)) void * restrict dst,
154410e230b6Smaya                  __attribute__((unused)) const struct GEN8_SO_DECL * restrict values)
154510e230b6Smaya{
154610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
154710e230b6Smaya
154810e230b6Smaya   dw[0] =
154910e230b6Smaya      __gen_uint(values->ComponentMask, 0, 3) |
155010e230b6Smaya      __gen_uint(values->RegisterIndex, 4, 9) |
155110e230b6Smaya      __gen_uint(values->HoleFlag, 11, 11) |
155210e230b6Smaya      __gen_uint(values->OutputBufferSlot, 12, 13);
155310e230b6Smaya}
155410e230b6Smaya
155510e230b6Smaya#define GEN8_SO_DECL_ENTRY_length              2
155610e230b6Smayastruct GEN8_SO_DECL_ENTRY {
155710e230b6Smaya   struct GEN8_SO_DECL                  Stream0Decl;
155810e230b6Smaya   struct GEN8_SO_DECL                  Stream1Decl;
155910e230b6Smaya   struct GEN8_SO_DECL                  Stream2Decl;
156010e230b6Smaya   struct GEN8_SO_DECL                  Stream3Decl;
156110e230b6Smaya};
156210e230b6Smaya
156310e230b6Smayastatic inline void
156410e230b6SmayaGEN8_SO_DECL_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
156510e230b6Smaya                        __attribute__((unused)) void * restrict dst,
156610e230b6Smaya                        __attribute__((unused)) const struct GEN8_SO_DECL_ENTRY * restrict values)
156710e230b6Smaya{
156810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
156910e230b6Smaya
157010e230b6Smaya   uint32_t v0_0;
157110e230b6Smaya   GEN8_SO_DECL_pack(data, &v0_0, &values->Stream0Decl);
157210e230b6Smaya
157310e230b6Smaya   uint32_t v0_1;
157410e230b6Smaya   GEN8_SO_DECL_pack(data, &v0_1, &values->Stream1Decl);
157510e230b6Smaya
157610e230b6Smaya   dw[0] =
157710e230b6Smaya      __gen_uint(v0_0, 0, 15) |
157810e230b6Smaya      __gen_uint(v0_1, 16, 31);
157910e230b6Smaya
158010e230b6Smaya   uint32_t v1_0;
158110e230b6Smaya   GEN8_SO_DECL_pack(data, &v1_0, &values->Stream2Decl);
158210e230b6Smaya
158310e230b6Smaya   uint32_t v1_1;
158410e230b6Smaya   GEN8_SO_DECL_pack(data, &v1_1, &values->Stream3Decl);
158510e230b6Smaya
158610e230b6Smaya   dw[1] =
158710e230b6Smaya      __gen_uint(v1_0, 0, 15) |
158810e230b6Smaya      __gen_uint(v1_1, 16, 31);
158910e230b6Smaya}
159010e230b6Smaya
159110e230b6Smaya#define GEN8_VERTEX_BUFFER_STATE_length        4
159210e230b6Smayastruct GEN8_VERTEX_BUFFER_STATE {
159310e230b6Smaya   uint32_t                             BufferPitch;
159410e230b6Smaya   bool                                 NullVertexBuffer;
159510e230b6Smaya   bool                                 AddressModifyEnable;
159610e230b6Smaya   uint32_t                             MOCS;
159710e230b6Smaya   uint32_t                             VertexBufferIndex;
159810e230b6Smaya   __gen_address_type                   BufferStartingAddress;
159910e230b6Smaya   uint32_t                             BufferSize;
160010e230b6Smaya};
160110e230b6Smaya
160210e230b6Smayastatic inline void
160310e230b6SmayaGEN8_VERTEX_BUFFER_STATE_pack(__attribute__((unused)) __gen_user_data *data,
160410e230b6Smaya                              __attribute__((unused)) void * restrict dst,
160510e230b6Smaya                              __attribute__((unused)) const struct GEN8_VERTEX_BUFFER_STATE * restrict values)
160610e230b6Smaya{
160710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
160810e230b6Smaya
160910e230b6Smaya   dw[0] =
161010e230b6Smaya      __gen_uint(values->BufferPitch, 0, 11) |
161110e230b6Smaya      __gen_uint(values->NullVertexBuffer, 13, 13) |
161210e230b6Smaya      __gen_uint(values->AddressModifyEnable, 14, 14) |
161310e230b6Smaya      __gen_uint(values->MOCS, 16, 22) |
161410e230b6Smaya      __gen_uint(values->VertexBufferIndex, 26, 31);
161510e230b6Smaya
161610e230b6Smaya   const uint64_t v1_address =
161710e230b6Smaya      __gen_combine_address(data, &dw[1], values->BufferStartingAddress, 0);
161810e230b6Smaya   dw[1] = v1_address;
161910e230b6Smaya   dw[2] = v1_address >> 32;
162010e230b6Smaya
162110e230b6Smaya   dw[3] =
162210e230b6Smaya      __gen_uint(values->BufferSize, 0, 31);
162310e230b6Smaya}
162410e230b6Smaya
162510e230b6Smaya#define GEN8_VERTEX_ELEMENT_STATE_length       2
162610e230b6Smayastruct GEN8_VERTEX_ELEMENT_STATE {
162710e230b6Smaya   uint32_t                             SourceElementOffset;
162810e230b6Smaya   bool                                 EdgeFlagEnable;
162910e230b6Smaya   uint32_t                             SourceElementFormat;
163010e230b6Smaya   bool                                 Valid;
163110e230b6Smaya   uint32_t                             VertexBufferIndex;
163210e230b6Smaya   enum GEN8_3D_Vertex_Component_Control Component3Control;
163310e230b6Smaya   enum GEN8_3D_Vertex_Component_Control Component2Control;
163410e230b6Smaya   enum GEN8_3D_Vertex_Component_Control Component1Control;
163510e230b6Smaya   enum GEN8_3D_Vertex_Component_Control Component0Control;
163610e230b6Smaya};
163710e230b6Smaya
163810e230b6Smayastatic inline void
163910e230b6SmayaGEN8_VERTEX_ELEMENT_STATE_pack(__attribute__((unused)) __gen_user_data *data,
164010e230b6Smaya                               __attribute__((unused)) void * restrict dst,
164110e230b6Smaya                               __attribute__((unused)) const struct GEN8_VERTEX_ELEMENT_STATE * restrict values)
164210e230b6Smaya{
164310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
164410e230b6Smaya
164510e230b6Smaya   dw[0] =
164610e230b6Smaya      __gen_uint(values->SourceElementOffset, 0, 11) |
164710e230b6Smaya      __gen_uint(values->EdgeFlagEnable, 15, 15) |
164810e230b6Smaya      __gen_uint(values->SourceElementFormat, 16, 24) |
164910e230b6Smaya      __gen_uint(values->Valid, 25, 25) |
165010e230b6Smaya      __gen_uint(values->VertexBufferIndex, 26, 31);
165110e230b6Smaya
165210e230b6Smaya   dw[1] =
165310e230b6Smaya      __gen_uint(values->Component3Control, 16, 18) |
165410e230b6Smaya      __gen_uint(values->Component2Control, 20, 22) |
165510e230b6Smaya      __gen_uint(values->Component1Control, 24, 26) |
165610e230b6Smaya      __gen_uint(values->Component0Control, 28, 30);
165710e230b6Smaya}
165810e230b6Smaya
165910e230b6Smaya#define GEN8_3DPRIMITIVE_length                7
166010e230b6Smaya#define GEN8_3DPRIMITIVE_length_bias           2
166110e230b6Smaya#define GEN8_3DPRIMITIVE_header                 \
166210e230b6Smaya   .DWordLength                         =      5,  \
166310e230b6Smaya   ._3DCommandSubOpcode                 =      0,  \
166410e230b6Smaya   ._3DCommandOpcode                    =      3,  \
166510e230b6Smaya   .CommandSubType                      =      3,  \
166610e230b6Smaya   .CommandType                         =      3
166710e230b6Smaya
166810e230b6Smayastruct GEN8_3DPRIMITIVE {
166910e230b6Smaya   uint32_t                             DWordLength;
167010e230b6Smaya   bool                                 PredicateEnable;
167110e230b6Smaya   bool                                 UAVCoherencyRequired;
167210e230b6Smaya   bool                                 IndirectParameterEnable;
167310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
167410e230b6Smaya   uint32_t                             _3DCommandOpcode;
167510e230b6Smaya   uint32_t                             CommandSubType;
167610e230b6Smaya   uint32_t                             CommandType;
167710e230b6Smaya   enum GEN8_3D_Prim_Topo_Type          PrimitiveTopologyType;
167810e230b6Smaya   uint32_t                             VertexAccessType;
167910e230b6Smaya#define SEQUENTIAL                               0
168010e230b6Smaya#define RANDOM                                   1
168110e230b6Smaya   bool                                 EndOffsetEnable;
168210e230b6Smaya   uint32_t                             VertexCountPerInstance;
168310e230b6Smaya   uint32_t                             StartVertexLocation;
168410e230b6Smaya   uint32_t                             InstanceCount;
168510e230b6Smaya   uint32_t                             StartInstanceLocation;
168610e230b6Smaya   int32_t                              BaseVertexLocation;
168710e230b6Smaya};
168810e230b6Smaya
168910e230b6Smayastatic inline void
169010e230b6SmayaGEN8_3DPRIMITIVE_pack(__attribute__((unused)) __gen_user_data *data,
169110e230b6Smaya                      __attribute__((unused)) void * restrict dst,
169210e230b6Smaya                      __attribute__((unused)) const struct GEN8_3DPRIMITIVE * restrict values)
169310e230b6Smaya{
169410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
169510e230b6Smaya
169610e230b6Smaya   dw[0] =
169710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
169810e230b6Smaya      __gen_uint(values->PredicateEnable, 8, 8) |
169910e230b6Smaya      __gen_uint(values->UAVCoherencyRequired, 9, 9) |
170010e230b6Smaya      __gen_uint(values->IndirectParameterEnable, 10, 10) |
170110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
170210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
170310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
170410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
170510e230b6Smaya
170610e230b6Smaya   dw[1] =
170710e230b6Smaya      __gen_uint(values->PrimitiveTopologyType, 0, 5) |
170810e230b6Smaya      __gen_uint(values->VertexAccessType, 8, 8) |
170910e230b6Smaya      __gen_uint(values->EndOffsetEnable, 9, 9);
171010e230b6Smaya
171110e230b6Smaya   dw[2] =
171210e230b6Smaya      __gen_uint(values->VertexCountPerInstance, 0, 31);
171310e230b6Smaya
171410e230b6Smaya   dw[3] =
171510e230b6Smaya      __gen_uint(values->StartVertexLocation, 0, 31);
171610e230b6Smaya
171710e230b6Smaya   dw[4] =
171810e230b6Smaya      __gen_uint(values->InstanceCount, 0, 31);
171910e230b6Smaya
172010e230b6Smaya   dw[5] =
172110e230b6Smaya      __gen_uint(values->StartInstanceLocation, 0, 31);
172210e230b6Smaya
172310e230b6Smaya   dw[6] =
172410e230b6Smaya      __gen_sint(values->BaseVertexLocation, 0, 31);
172510e230b6Smaya}
172610e230b6Smaya
172710e230b6Smaya#define GEN8_3DSTATE_AA_LINE_PARAMETERS_length      3
172810e230b6Smaya#define GEN8_3DSTATE_AA_LINE_PARAMETERS_length_bias      2
172910e230b6Smaya#define GEN8_3DSTATE_AA_LINE_PARAMETERS_header  \
173010e230b6Smaya   .DWordLength                         =      1,  \
173110e230b6Smaya   ._3DCommandSubOpcode                 =     10,  \
173210e230b6Smaya   ._3DCommandOpcode                    =      1,  \
173310e230b6Smaya   .CommandSubType                      =      3,  \
173410e230b6Smaya   .CommandType                         =      3
173510e230b6Smaya
173610e230b6Smayastruct GEN8_3DSTATE_AA_LINE_PARAMETERS {
173710e230b6Smaya   uint32_t                             DWordLength;
173810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
173910e230b6Smaya   uint32_t                             _3DCommandOpcode;
174010e230b6Smaya   uint32_t                             CommandSubType;
174110e230b6Smaya   uint32_t                             CommandType;
174210e230b6Smaya   float                                AACoverageSlope;
174310e230b6Smaya   float                                AAPointCoverageSlope;
174410e230b6Smaya   float                                AACoverageBias;
174510e230b6Smaya   float                                AAPointCoverageBias;
174610e230b6Smaya   float                                AACoverageEndCapSlope;
174710e230b6Smaya   float                                AAPointCoverageEndCapSlope;
174810e230b6Smaya   float                                AACoverageEndCapBias;
174910e230b6Smaya   float                                AAPointCoverageEndCapBias;
175010e230b6Smaya};
175110e230b6Smaya
175210e230b6Smayastatic inline void
175310e230b6SmayaGEN8_3DSTATE_AA_LINE_PARAMETERS_pack(__attribute__((unused)) __gen_user_data *data,
175410e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
175510e230b6Smaya                                     __attribute__((unused)) const struct GEN8_3DSTATE_AA_LINE_PARAMETERS * restrict values)
175610e230b6Smaya{
175710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
175810e230b6Smaya
175910e230b6Smaya   dw[0] =
176010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
176110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
176210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
176310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
176410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
176510e230b6Smaya
176610e230b6Smaya   dw[1] =
176710e230b6Smaya      __gen_ufixed(values->AACoverageSlope, 0, 7, 8) |
176810e230b6Smaya      __gen_ufixed(values->AAPointCoverageSlope, 8, 15, 8) |
176910e230b6Smaya      __gen_ufixed(values->AACoverageBias, 16, 23, 8) |
177010e230b6Smaya      __gen_ufixed(values->AAPointCoverageBias, 24, 31, 8);
177110e230b6Smaya
177210e230b6Smaya   dw[2] =
177310e230b6Smaya      __gen_ufixed(values->AACoverageEndCapSlope, 0, 7, 8) |
177410e230b6Smaya      __gen_ufixed(values->AAPointCoverageEndCapSlope, 8, 15, 8) |
177510e230b6Smaya      __gen_ufixed(values->AACoverageEndCapBias, 16, 23, 8) |
177610e230b6Smaya      __gen_ufixed(values->AAPointCoverageEndCapBias, 24, 31, 8);
177710e230b6Smaya}
177810e230b6Smaya
177910e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_length_bias      2
178010e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_header\
178110e230b6Smaya   .DWordLength                         =      0,  \
178210e230b6Smaya   ._3DCommandSubOpcode                 =     70,  \
178310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
178410e230b6Smaya   .CommandSubType                      =      3,  \
178510e230b6Smaya   .CommandType                         =      3
178610e230b6Smaya
178710e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS {
178810e230b6Smaya   uint32_t                             DWordLength;
178910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
179010e230b6Smaya   uint32_t                             _3DCommandOpcode;
179110e230b6Smaya   uint32_t                             CommandSubType;
179210e230b6Smaya   uint32_t                             CommandType;
179310e230b6Smaya   uint32_t                             BindingTableEditTarget;
179410e230b6Smaya#define AllCores                                 3
179510e230b6Smaya#define Core1                                    2
179610e230b6Smaya#define Core0                                    1
179710e230b6Smaya   uint32_t                             BindingTableBlockClear;
179810e230b6Smaya   /* variable length fields follow */
179910e230b6Smaya};
180010e230b6Smaya
180110e230b6Smayastatic inline void
180210e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_EDIT_DS_pack(__attribute__((unused)) __gen_user_data *data,
180310e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
180410e230b6Smaya                                        __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS * restrict values)
180510e230b6Smaya{
180610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
180710e230b6Smaya
180810e230b6Smaya   dw[0] =
180910e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
181010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
181110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
181210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
181310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
181410e230b6Smaya
181510e230b6Smaya   dw[1] =
181610e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
181710e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
181810e230b6Smaya}
181910e230b6Smaya
182010e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_length_bias      2
182110e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_header\
182210e230b6Smaya   .DWordLength                         =      0,  \
182310e230b6Smaya   ._3DCommandSubOpcode                 =     68,  \
182410e230b6Smaya   ._3DCommandOpcode                    =      0,  \
182510e230b6Smaya   .CommandSubType                      =      3,  \
182610e230b6Smaya   .CommandType                         =      3
182710e230b6Smaya
182810e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS {
182910e230b6Smaya   uint32_t                             DWordLength;
183010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
183110e230b6Smaya   uint32_t                             _3DCommandOpcode;
183210e230b6Smaya   uint32_t                             CommandSubType;
183310e230b6Smaya   uint32_t                             CommandType;
183410e230b6Smaya   uint32_t                             BindingTableEditTarget;
183510e230b6Smaya#define AllCores                                 3
183610e230b6Smaya#define Core1                                    2
183710e230b6Smaya#define Core0                                    1
183810e230b6Smaya   uint32_t                             BindingTableBlockClear;
183910e230b6Smaya   /* variable length fields follow */
184010e230b6Smaya};
184110e230b6Smaya
184210e230b6Smayastatic inline void
184310e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_EDIT_GS_pack(__attribute__((unused)) __gen_user_data *data,
184410e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
184510e230b6Smaya                                        __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS * restrict values)
184610e230b6Smaya{
184710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
184810e230b6Smaya
184910e230b6Smaya   dw[0] =
185010e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
185110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
185210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
185310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
185410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
185510e230b6Smaya
185610e230b6Smaya   dw[1] =
185710e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
185810e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
185910e230b6Smaya}
186010e230b6Smaya
186110e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_length_bias      2
186210e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_header\
186310e230b6Smaya   .DWordLength                         =      0,  \
186410e230b6Smaya   ._3DCommandSubOpcode                 =     69,  \
186510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
186610e230b6Smaya   .CommandSubType                      =      3,  \
186710e230b6Smaya   .CommandType                         =      3
186810e230b6Smaya
186910e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS {
187010e230b6Smaya   uint32_t                             DWordLength;
187110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
187210e230b6Smaya   uint32_t                             _3DCommandOpcode;
187310e230b6Smaya   uint32_t                             CommandSubType;
187410e230b6Smaya   uint32_t                             CommandType;
187510e230b6Smaya   uint32_t                             BindingTableEditTarget;
187610e230b6Smaya#define AllCores                                 3
187710e230b6Smaya#define Core1                                    2
187810e230b6Smaya#define Core0                                    1
187910e230b6Smaya   uint32_t                             BindingTableBlockClear;
188010e230b6Smaya   /* variable length fields follow */
188110e230b6Smaya};
188210e230b6Smaya
188310e230b6Smayastatic inline void
188410e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_EDIT_HS_pack(__attribute__((unused)) __gen_user_data *data,
188510e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
188610e230b6Smaya                                        __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS * restrict values)
188710e230b6Smaya{
188810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
188910e230b6Smaya
189010e230b6Smaya   dw[0] =
189110e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
189210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
189310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
189410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
189510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
189610e230b6Smaya
189710e230b6Smaya   dw[1] =
189810e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
189910e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
190010e230b6Smaya}
190110e230b6Smaya
190210e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_length_bias      2
190310e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_header\
190410e230b6Smaya   .DWordLength                         =      0,  \
190510e230b6Smaya   ._3DCommandSubOpcode                 =     71,  \
190610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
190710e230b6Smaya   .CommandSubType                      =      3,  \
190810e230b6Smaya   .CommandType                         =      3
190910e230b6Smaya
191010e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS {
191110e230b6Smaya   uint32_t                             DWordLength;
191210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
191310e230b6Smaya   uint32_t                             _3DCommandOpcode;
191410e230b6Smaya   uint32_t                             CommandSubType;
191510e230b6Smaya   uint32_t                             CommandType;
191610e230b6Smaya   uint32_t                             BindingTableEditTarget;
191710e230b6Smaya#define AllCores                                 3
191810e230b6Smaya#define Core1                                    2
191910e230b6Smaya#define Core0                                    1
192010e230b6Smaya   uint32_t                             BindingTableBlockClear;
192110e230b6Smaya   /* variable length fields follow */
192210e230b6Smaya};
192310e230b6Smaya
192410e230b6Smayastatic inline void
192510e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_EDIT_PS_pack(__attribute__((unused)) __gen_user_data *data,
192610e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
192710e230b6Smaya                                        __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS * restrict values)
192810e230b6Smaya{
192910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
193010e230b6Smaya
193110e230b6Smaya   dw[0] =
193210e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
193310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
193410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
193510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
193610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
193710e230b6Smaya
193810e230b6Smaya   dw[1] =
193910e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
194010e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
194110e230b6Smaya}
194210e230b6Smaya
194310e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_length_bias      2
194410e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_header\
194510e230b6Smaya   .DWordLength                         =      0,  \
194610e230b6Smaya   ._3DCommandSubOpcode                 =     67,  \
194710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
194810e230b6Smaya   .CommandSubType                      =      3,  \
194910e230b6Smaya   .CommandType                         =      3
195010e230b6Smaya
195110e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS {
195210e230b6Smaya   uint32_t                             DWordLength;
195310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
195410e230b6Smaya   uint32_t                             _3DCommandOpcode;
195510e230b6Smaya   uint32_t                             CommandSubType;
195610e230b6Smaya   uint32_t                             CommandType;
195710e230b6Smaya   uint32_t                             BindingTableEditTarget;
195810e230b6Smaya#define AllCores                                 3
195910e230b6Smaya#define Core1                                    2
196010e230b6Smaya#define Core0                                    1
196110e230b6Smaya   uint32_t                             BindingTableBlockClear;
196210e230b6Smaya   /* variable length fields follow */
196310e230b6Smaya};
196410e230b6Smaya
196510e230b6Smayastatic inline void
196610e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_EDIT_VS_pack(__attribute__((unused)) __gen_user_data *data,
196710e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
196810e230b6Smaya                                        __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS * restrict values)
196910e230b6Smaya{
197010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
197110e230b6Smaya
197210e230b6Smaya   dw[0] =
197310e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
197410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
197510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
197610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
197710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
197810e230b6Smaya
197910e230b6Smaya   dw[1] =
198010e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
198110e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
198210e230b6Smaya}
198310e230b6Smaya
198410e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length      2
198510e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length_bias      2
198610e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_header\
198710e230b6Smaya   .DWordLength                         =      0,  \
198810e230b6Smaya   ._3DCommandSubOpcode                 =     40,  \
198910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
199010e230b6Smaya   .CommandSubType                      =      3,  \
199110e230b6Smaya   .CommandType                         =      3
199210e230b6Smaya
199310e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS {
199410e230b6Smaya   uint32_t                             DWordLength;
199510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
199610e230b6Smaya   uint32_t                             _3DCommandOpcode;
199710e230b6Smaya   uint32_t                             CommandSubType;
199810e230b6Smaya   uint32_t                             CommandType;
199910e230b6Smaya   uint64_t                             PointertoDSBindingTable;
200010e230b6Smaya};
200110e230b6Smaya
200210e230b6Smayastatic inline void
200310e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_pack(__attribute__((unused)) __gen_user_data *data,
200410e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
200510e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS * restrict values)
200610e230b6Smaya{
200710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
200810e230b6Smaya
200910e230b6Smaya   dw[0] =
201010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
201110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
201210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
201310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
201410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
201510e230b6Smaya
201610e230b6Smaya   dw[1] =
201710e230b6Smaya      __gen_offset(values->PointertoDSBindingTable, 5, 15);
201810e230b6Smaya}
201910e230b6Smaya
202010e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length      2
202110e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length_bias      2
202210e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_header\
202310e230b6Smaya   .DWordLength                         =      0,  \
202410e230b6Smaya   ._3DCommandSubOpcode                 =     41,  \
202510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
202610e230b6Smaya   .CommandSubType                      =      3,  \
202710e230b6Smaya   .CommandType                         =      3
202810e230b6Smaya
202910e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS {
203010e230b6Smaya   uint32_t                             DWordLength;
203110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
203210e230b6Smaya   uint32_t                             _3DCommandOpcode;
203310e230b6Smaya   uint32_t                             CommandSubType;
203410e230b6Smaya   uint32_t                             CommandType;
203510e230b6Smaya   uint64_t                             PointertoGSBindingTable;
203610e230b6Smaya};
203710e230b6Smaya
203810e230b6Smayastatic inline void
203910e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_pack(__attribute__((unused)) __gen_user_data *data,
204010e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
204110e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS * restrict values)
204210e230b6Smaya{
204310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
204410e230b6Smaya
204510e230b6Smaya   dw[0] =
204610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
204710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
204810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
204910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
205010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
205110e230b6Smaya
205210e230b6Smaya   dw[1] =
205310e230b6Smaya      __gen_offset(values->PointertoGSBindingTable, 5, 15);
205410e230b6Smaya}
205510e230b6Smaya
205610e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length      2
205710e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length_bias      2
205810e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_header\
205910e230b6Smaya   .DWordLength                         =      0,  \
206010e230b6Smaya   ._3DCommandSubOpcode                 =     39,  \
206110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
206210e230b6Smaya   .CommandSubType                      =      3,  \
206310e230b6Smaya   .CommandType                         =      3
206410e230b6Smaya
206510e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS {
206610e230b6Smaya   uint32_t                             DWordLength;
206710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
206810e230b6Smaya   uint32_t                             _3DCommandOpcode;
206910e230b6Smaya   uint32_t                             CommandSubType;
207010e230b6Smaya   uint32_t                             CommandType;
207110e230b6Smaya   uint64_t                             PointertoHSBindingTable;
207210e230b6Smaya};
207310e230b6Smaya
207410e230b6Smayastatic inline void
207510e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_pack(__attribute__((unused)) __gen_user_data *data,
207610e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
207710e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS * restrict values)
207810e230b6Smaya{
207910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
208010e230b6Smaya
208110e230b6Smaya   dw[0] =
208210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
208310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
208410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
208510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
208610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
208710e230b6Smaya
208810e230b6Smaya   dw[1] =
208910e230b6Smaya      __gen_offset(values->PointertoHSBindingTable, 5, 15);
209010e230b6Smaya}
209110e230b6Smaya
209210e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length      2
209310e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length_bias      2
209410e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_header\
209510e230b6Smaya   .DWordLength                         =      0,  \
209610e230b6Smaya   ._3DCommandSubOpcode                 =     42,  \
209710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
209810e230b6Smaya   .CommandSubType                      =      3,  \
209910e230b6Smaya   .CommandType                         =      3
210010e230b6Smaya
210110e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS {
210210e230b6Smaya   uint32_t                             DWordLength;
210310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
210410e230b6Smaya   uint32_t                             _3DCommandOpcode;
210510e230b6Smaya   uint32_t                             CommandSubType;
210610e230b6Smaya   uint32_t                             CommandType;
210710e230b6Smaya   uint64_t                             PointertoPSBindingTable;
210810e230b6Smaya};
210910e230b6Smaya
211010e230b6Smayastatic inline void
211110e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_pack(__attribute__((unused)) __gen_user_data *data,
211210e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
211310e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS * restrict values)
211410e230b6Smaya{
211510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
211610e230b6Smaya
211710e230b6Smaya   dw[0] =
211810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
211910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
212010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
212110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
212210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
212310e230b6Smaya
212410e230b6Smaya   dw[1] =
212510e230b6Smaya      __gen_offset(values->PointertoPSBindingTable, 5, 15);
212610e230b6Smaya}
212710e230b6Smaya
212810e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length      2
212910e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length_bias      2
213010e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_header\
213110e230b6Smaya   .DWordLength                         =      0,  \
213210e230b6Smaya   ._3DCommandSubOpcode                 =     38,  \
213310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
213410e230b6Smaya   .CommandSubType                      =      3,  \
213510e230b6Smaya   .CommandType                         =      3
213610e230b6Smaya
213710e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS {
213810e230b6Smaya   uint32_t                             DWordLength;
213910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
214010e230b6Smaya   uint32_t                             _3DCommandOpcode;
214110e230b6Smaya   uint32_t                             CommandSubType;
214210e230b6Smaya   uint32_t                             CommandType;
214310e230b6Smaya   uint64_t                             PointertoVSBindingTable;
214410e230b6Smaya};
214510e230b6Smaya
214610e230b6Smayastatic inline void
214710e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_pack(__attribute__((unused)) __gen_user_data *data,
214810e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
214910e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS * restrict values)
215010e230b6Smaya{
215110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
215210e230b6Smaya
215310e230b6Smaya   dw[0] =
215410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
215510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
215610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
215710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
215810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
215910e230b6Smaya
216010e230b6Smaya   dw[1] =
216110e230b6Smaya      __gen_offset(values->PointertoVSBindingTable, 5, 15);
216210e230b6Smaya}
216310e230b6Smaya
216410e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length      4
216510e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length_bias      2
216610e230b6Smaya#define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_header\
216710e230b6Smaya   .DWordLength                         =      2,  \
216810e230b6Smaya   ._3DCommandSubOpcode                 =     25,  \
216910e230b6Smaya   ._3DCommandOpcode                    =      1,  \
217010e230b6Smaya   .CommandSubType                      =      3,  \
217110e230b6Smaya   .CommandType                         =      3
217210e230b6Smaya
217310e230b6Smayastruct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC {
217410e230b6Smaya   uint32_t                             DWordLength;
217510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
217610e230b6Smaya   uint32_t                             _3DCommandOpcode;
217710e230b6Smaya   uint32_t                             CommandSubType;
217810e230b6Smaya   uint32_t                             CommandType;
217910e230b6Smaya   uint32_t                             MOCS;
218010e230b6Smaya   uint32_t                             BindingTablePoolEnable;
218110e230b6Smaya   __gen_address_type                   BindingTablePoolBaseAddress;
218210e230b6Smaya   uint32_t                             BindingTablePoolBufferSize;
218310e230b6Smaya#define NoValidData                              0
218410e230b6Smaya};
218510e230b6Smaya
218610e230b6Smayastatic inline void
218710e230b6SmayaGEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_pack(__attribute__((unused)) __gen_user_data *data,
218810e230b6Smaya                                           __attribute__((unused)) void * restrict dst,
218910e230b6Smaya                                           __attribute__((unused)) const struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC * restrict values)
219010e230b6Smaya{
219110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
219210e230b6Smaya
219310e230b6Smaya   dw[0] =
219410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
219510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
219610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
219710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
219810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
219910e230b6Smaya
220010e230b6Smaya   const uint64_t v1 =
220110e230b6Smaya      __gen_uint(values->MOCS, 0, 6) |
220210e230b6Smaya      __gen_uint(values->BindingTablePoolEnable, 11, 11);
220310e230b6Smaya   const uint64_t v1_address =
220410e230b6Smaya      __gen_combine_address(data, &dw[1], values->BindingTablePoolBaseAddress, v1);
220510e230b6Smaya   dw[1] = v1_address;
220610e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
220710e230b6Smaya
220810e230b6Smaya   dw[3] =
220910e230b6Smaya      __gen_uint(values->BindingTablePoolBufferSize, 12, 31);
221010e230b6Smaya}
221110e230b6Smaya
221210e230b6Smaya#define GEN8_3DSTATE_BLEND_STATE_POINTERS_length      2
221310e230b6Smaya#define GEN8_3DSTATE_BLEND_STATE_POINTERS_length_bias      2
221410e230b6Smaya#define GEN8_3DSTATE_BLEND_STATE_POINTERS_header\
221510e230b6Smaya   .DWordLength                         =      0,  \
221610e230b6Smaya   ._3DCommandSubOpcode                 =     36,  \
221710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
221810e230b6Smaya   .CommandSubType                      =      3,  \
221910e230b6Smaya   .CommandType                         =      3
222010e230b6Smaya
222110e230b6Smayastruct GEN8_3DSTATE_BLEND_STATE_POINTERS {
222210e230b6Smaya   uint32_t                             DWordLength;
222310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
222410e230b6Smaya   uint32_t                             _3DCommandOpcode;
222510e230b6Smaya   uint32_t                             CommandSubType;
222610e230b6Smaya   uint32_t                             CommandType;
222710e230b6Smaya   bool                                 BlendStatePointerValid;
222810e230b6Smaya   uint64_t                             BlendStatePointer;
222910e230b6Smaya};
223010e230b6Smaya
223110e230b6Smayastatic inline void
223210e230b6SmayaGEN8_3DSTATE_BLEND_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data,
223310e230b6Smaya                                       __attribute__((unused)) void * restrict dst,
223410e230b6Smaya                                       __attribute__((unused)) const struct GEN8_3DSTATE_BLEND_STATE_POINTERS * restrict values)
223510e230b6Smaya{
223610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
223710e230b6Smaya
223810e230b6Smaya   dw[0] =
223910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
224010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
224110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
224210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
224310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
224410e230b6Smaya
224510e230b6Smaya   dw[1] =
224610e230b6Smaya      __gen_uint(values->BlendStatePointerValid, 0, 0) |
224710e230b6Smaya      __gen_offset(values->BlendStatePointer, 6, 31);
224810e230b6Smaya}
224910e230b6Smaya
225010e230b6Smaya#define GEN8_3DSTATE_CC_STATE_POINTERS_length      2
225110e230b6Smaya#define GEN8_3DSTATE_CC_STATE_POINTERS_length_bias      2
225210e230b6Smaya#define GEN8_3DSTATE_CC_STATE_POINTERS_header   \
225310e230b6Smaya   .DWordLength                         =      0,  \
225410e230b6Smaya   ._3DCommandSubOpcode                 =     14,  \
225510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
225610e230b6Smaya   .CommandSubType                      =      3,  \
225710e230b6Smaya   .CommandType                         =      3
225810e230b6Smaya
225910e230b6Smayastruct GEN8_3DSTATE_CC_STATE_POINTERS {
226010e230b6Smaya   uint32_t                             DWordLength;
226110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
226210e230b6Smaya   uint32_t                             _3DCommandOpcode;
226310e230b6Smaya   uint32_t                             CommandSubType;
226410e230b6Smaya   uint32_t                             CommandType;
226510e230b6Smaya   bool                                 ColorCalcStatePointerValid;
226610e230b6Smaya   uint64_t                             ColorCalcStatePointer;
226710e230b6Smaya};
226810e230b6Smaya
226910e230b6Smayastatic inline void
227010e230b6SmayaGEN8_3DSTATE_CC_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data,
227110e230b6Smaya                                    __attribute__((unused)) void * restrict dst,
227210e230b6Smaya                                    __attribute__((unused)) const struct GEN8_3DSTATE_CC_STATE_POINTERS * restrict values)
227310e230b6Smaya{
227410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
227510e230b6Smaya
227610e230b6Smaya   dw[0] =
227710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
227810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
227910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
228010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
228110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
228210e230b6Smaya
228310e230b6Smaya   dw[1] =
228410e230b6Smaya      __gen_uint(values->ColorCalcStatePointerValid, 0, 0) |
228510e230b6Smaya      __gen_offset(values->ColorCalcStatePointer, 6, 31);
228610e230b6Smaya}
228710e230b6Smaya
228810e230b6Smaya#define GEN8_3DSTATE_CHROMA_KEY_length         4
228910e230b6Smaya#define GEN8_3DSTATE_CHROMA_KEY_length_bias      2
229010e230b6Smaya#define GEN8_3DSTATE_CHROMA_KEY_header          \
229110e230b6Smaya   .DWordLength                         =      2,  \
229210e230b6Smaya   ._3DCommandSubOpcode                 =      4,  \
229310e230b6Smaya   ._3DCommandOpcode                    =      1,  \
229410e230b6Smaya   .CommandSubType                      =      3,  \
229510e230b6Smaya   .CommandType                         =      3
229610e230b6Smaya
229710e230b6Smayastruct GEN8_3DSTATE_CHROMA_KEY {
229810e230b6Smaya   uint32_t                             DWordLength;
229910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
230010e230b6Smaya   uint32_t                             _3DCommandOpcode;
230110e230b6Smaya   uint32_t                             CommandSubType;
230210e230b6Smaya   uint32_t                             CommandType;
230310e230b6Smaya   uint32_t                             ChromaKeyTableIndex;
230410e230b6Smaya   uint32_t                             ChromaKeyLowValue;
230510e230b6Smaya   uint32_t                             ChromaKeyHighValue;
230610e230b6Smaya};
230710e230b6Smaya
230810e230b6Smayastatic inline void
230910e230b6SmayaGEN8_3DSTATE_CHROMA_KEY_pack(__attribute__((unused)) __gen_user_data *data,
231010e230b6Smaya                             __attribute__((unused)) void * restrict dst,
231110e230b6Smaya                             __attribute__((unused)) const struct GEN8_3DSTATE_CHROMA_KEY * restrict values)
231210e230b6Smaya{
231310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
231410e230b6Smaya
231510e230b6Smaya   dw[0] =
231610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
231710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
231810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
231910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
232010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
232110e230b6Smaya
232210e230b6Smaya   dw[1] =
232310e230b6Smaya      __gen_uint(values->ChromaKeyTableIndex, 30, 31);
232410e230b6Smaya
232510e230b6Smaya   dw[2] =
232610e230b6Smaya      __gen_uint(values->ChromaKeyLowValue, 0, 31);
232710e230b6Smaya
232810e230b6Smaya   dw[3] =
232910e230b6Smaya      __gen_uint(values->ChromaKeyHighValue, 0, 31);
233010e230b6Smaya}
233110e230b6Smaya
233210e230b6Smaya#define GEN8_3DSTATE_CLEAR_PARAMS_length       3
233310e230b6Smaya#define GEN8_3DSTATE_CLEAR_PARAMS_length_bias      2
233410e230b6Smaya#define GEN8_3DSTATE_CLEAR_PARAMS_header        \
233510e230b6Smaya   .DWordLength                         =      1,  \
233610e230b6Smaya   ._3DCommandSubOpcode                 =      4,  \
233710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
233810e230b6Smaya   .CommandSubType                      =      3,  \
233910e230b6Smaya   .CommandType                         =      3
234010e230b6Smaya
234110e230b6Smayastruct GEN8_3DSTATE_CLEAR_PARAMS {
234210e230b6Smaya   uint32_t                             DWordLength;
234310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
234410e230b6Smaya   uint32_t                             _3DCommandOpcode;
234510e230b6Smaya   uint32_t                             CommandSubType;
234610e230b6Smaya   uint32_t                             CommandType;
234710e230b6Smaya   float                                DepthClearValue;
234810e230b6Smaya   bool                                 DepthClearValueValid;
234910e230b6Smaya};
235010e230b6Smaya
235110e230b6Smayastatic inline void
235210e230b6SmayaGEN8_3DSTATE_CLEAR_PARAMS_pack(__attribute__((unused)) __gen_user_data *data,
235310e230b6Smaya                               __attribute__((unused)) void * restrict dst,
235410e230b6Smaya                               __attribute__((unused)) const struct GEN8_3DSTATE_CLEAR_PARAMS * restrict values)
235510e230b6Smaya{
235610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
235710e230b6Smaya
235810e230b6Smaya   dw[0] =
235910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
236010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
236110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
236210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
236310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
236410e230b6Smaya
236510e230b6Smaya   dw[1] =
236610e230b6Smaya      __gen_float(values->DepthClearValue);
236710e230b6Smaya
236810e230b6Smaya   dw[2] =
236910e230b6Smaya      __gen_uint(values->DepthClearValueValid, 0, 0);
237010e230b6Smaya}
237110e230b6Smaya
237210e230b6Smaya#define GEN8_3DSTATE_CLIP_length               4
237310e230b6Smaya#define GEN8_3DSTATE_CLIP_length_bias          2
237410e230b6Smaya#define GEN8_3DSTATE_CLIP_header                \
237510e230b6Smaya   .DWordLength                         =      2,  \
237610e230b6Smaya   ._3DCommandSubOpcode                 =     18,  \
237710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
237810e230b6Smaya   .CommandSubType                      =      3,  \
237910e230b6Smaya   .CommandType                         =      3
238010e230b6Smaya
238110e230b6Smayastruct GEN8_3DSTATE_CLIP {
238210e230b6Smaya   uint32_t                             DWordLength;
238310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
238410e230b6Smaya   uint32_t                             _3DCommandOpcode;
238510e230b6Smaya   uint32_t                             CommandSubType;
238610e230b6Smaya   uint32_t                             CommandType;
238710e230b6Smaya   uint32_t                             UserClipDistanceCullTestEnableBitmask;
238810e230b6Smaya   bool                                 StatisticsEnable;
238910e230b6Smaya   bool                                 ForceClipMode;
239010e230b6Smaya   bool                                 ForceUserClipDistanceClipTestEnableBitmask;
239110e230b6Smaya   bool                                 EarlyCullEnable;
239210e230b6Smaya   uint32_t                             VertexSubPixelPrecisionSelect;
239310e230b6Smaya#define _8Bit                                    0
239410e230b6Smaya#define _4Bit                                    1
239510e230b6Smaya   bool                                 ForceUserClipDistanceCullTestEnableBitmask;
239610e230b6Smaya   uint32_t                             TriangleFanProvokingVertexSelect;
239710e230b6Smaya   uint32_t                             LineStripListProvokingVertexSelect;
239810e230b6Smaya   uint32_t                             TriangleStripListProvokingVertexSelect;
239910e230b6Smaya   bool                                 NonPerspectiveBarycentricEnable;
240010e230b6Smaya   bool                                 PerspectiveDivideDisable;
240110e230b6Smaya   uint32_t                             ClipMode;
240210e230b6Smaya#define CLIPMODE_NORMAL                          0
240310e230b6Smaya#define CLIPMODE_REJECT_ALL                      3
240410e230b6Smaya#define CLIPMODE_ACCEPT_ALL                      4
240510e230b6Smaya   uint32_t                             UserClipDistanceClipTestEnableBitmask;
240610e230b6Smaya   bool                                 GuardbandClipTestEnable;
240710e230b6Smaya   bool                                 ViewportXYClipTestEnable;
240810e230b6Smaya   uint32_t                             APIMode;
240910e230b6Smaya#define APIMODE_OGL                              0
241010e230b6Smaya#define APIMODE_D3D                              1
241110e230b6Smaya   bool                                 ClipEnable;
241210e230b6Smaya   uint32_t                             MaximumVPIndex;
241310e230b6Smaya   bool                                 ForceZeroRTAIndexEnable;
241410e230b6Smaya   float                                MaximumPointWidth;
241510e230b6Smaya   float                                MinimumPointWidth;
241610e230b6Smaya};
241710e230b6Smaya
241810e230b6Smayastatic inline void
241910e230b6SmayaGEN8_3DSTATE_CLIP_pack(__attribute__((unused)) __gen_user_data *data,
242010e230b6Smaya                       __attribute__((unused)) void * restrict dst,
242110e230b6Smaya                       __attribute__((unused)) const struct GEN8_3DSTATE_CLIP * restrict values)
242210e230b6Smaya{
242310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
242410e230b6Smaya
242510e230b6Smaya   dw[0] =
242610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
242710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
242810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
242910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
243010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
243110e230b6Smaya
243210e230b6Smaya   dw[1] =
243310e230b6Smaya      __gen_uint(values->UserClipDistanceCullTestEnableBitmask, 0, 7) |
243410e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
243510e230b6Smaya      __gen_uint(values->ForceClipMode, 16, 16) |
243610e230b6Smaya      __gen_uint(values->ForceUserClipDistanceClipTestEnableBitmask, 17, 17) |
243710e230b6Smaya      __gen_uint(values->EarlyCullEnable, 18, 18) |
243810e230b6Smaya      __gen_uint(values->VertexSubPixelPrecisionSelect, 19, 19) |
243910e230b6Smaya      __gen_uint(values->ForceUserClipDistanceCullTestEnableBitmask, 20, 20);
244010e230b6Smaya
244110e230b6Smaya   dw[2] =
244210e230b6Smaya      __gen_uint(values->TriangleFanProvokingVertexSelect, 0, 1) |
244310e230b6Smaya      __gen_uint(values->LineStripListProvokingVertexSelect, 2, 3) |
244410e230b6Smaya      __gen_uint(values->TriangleStripListProvokingVertexSelect, 4, 5) |
244510e230b6Smaya      __gen_uint(values->NonPerspectiveBarycentricEnable, 8, 8) |
244610e230b6Smaya      __gen_uint(values->PerspectiveDivideDisable, 9, 9) |
244710e230b6Smaya      __gen_uint(values->ClipMode, 13, 15) |
244810e230b6Smaya      __gen_uint(values->UserClipDistanceClipTestEnableBitmask, 16, 23) |
244910e230b6Smaya      __gen_uint(values->GuardbandClipTestEnable, 26, 26) |
245010e230b6Smaya      __gen_uint(values->ViewportXYClipTestEnable, 28, 28) |
245110e230b6Smaya      __gen_uint(values->APIMode, 30, 30) |
245210e230b6Smaya      __gen_uint(values->ClipEnable, 31, 31);
245310e230b6Smaya
245410e230b6Smaya   dw[3] =
245510e230b6Smaya      __gen_uint(values->MaximumVPIndex, 0, 3) |
245610e230b6Smaya      __gen_uint(values->ForceZeroRTAIndexEnable, 5, 5) |
245710e230b6Smaya      __gen_ufixed(values->MaximumPointWidth, 6, 16, 3) |
245810e230b6Smaya      __gen_ufixed(values->MinimumPointWidth, 17, 27, 3);
245910e230b6Smaya}
246010e230b6Smaya
246110e230b6Smaya#define GEN8_3DSTATE_CONSTANT_DS_length       11
246210e230b6Smaya#define GEN8_3DSTATE_CONSTANT_DS_length_bias      2
246310e230b6Smaya#define GEN8_3DSTATE_CONSTANT_DS_header         \
246410e230b6Smaya   .DWordLength                         =      9,  \
246510e230b6Smaya   ._3DCommandSubOpcode                 =     26,  \
246610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
246710e230b6Smaya   .CommandSubType                      =      3,  \
246810e230b6Smaya   .CommandType                         =      3
246910e230b6Smaya
247010e230b6Smayastruct GEN8_3DSTATE_CONSTANT_DS {
247110e230b6Smaya   uint32_t                             DWordLength;
247210e230b6Smaya   uint32_t                             MOCS;
247310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
247410e230b6Smaya   uint32_t                             _3DCommandOpcode;
247510e230b6Smaya   uint32_t                             CommandSubType;
247610e230b6Smaya   uint32_t                             CommandType;
247710e230b6Smaya   struct GEN8_3DSTATE_CONSTANT_BODY    ConstantBody;
247810e230b6Smaya};
247910e230b6Smaya
248010e230b6Smayastatic inline void
248110e230b6SmayaGEN8_3DSTATE_CONSTANT_DS_pack(__attribute__((unused)) __gen_user_data *data,
248210e230b6Smaya                              __attribute__((unused)) void * restrict dst,
248310e230b6Smaya                              __attribute__((unused)) const struct GEN8_3DSTATE_CONSTANT_DS * restrict values)
248410e230b6Smaya{
248510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
248610e230b6Smaya
248710e230b6Smaya   dw[0] =
248810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
248910e230b6Smaya      __gen_uint(values->MOCS, 8, 14) |
249010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
249110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
249210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
249310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
249410e230b6Smaya
249510e230b6Smaya   GEN8_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
249610e230b6Smaya}
249710e230b6Smaya
249810e230b6Smaya#define GEN8_3DSTATE_CONSTANT_GS_length       11
249910e230b6Smaya#define GEN8_3DSTATE_CONSTANT_GS_length_bias      2
250010e230b6Smaya#define GEN8_3DSTATE_CONSTANT_GS_header         \
250110e230b6Smaya   .DWordLength                         =      9,  \
250210e230b6Smaya   ._3DCommandSubOpcode                 =     22,  \
250310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
250410e230b6Smaya   .CommandSubType                      =      3,  \
250510e230b6Smaya   .CommandType                         =      3
250610e230b6Smaya
250710e230b6Smayastruct GEN8_3DSTATE_CONSTANT_GS {
250810e230b6Smaya   uint32_t                             DWordLength;
250910e230b6Smaya   uint32_t                             MOCS;
251010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
251110e230b6Smaya   uint32_t                             _3DCommandOpcode;
251210e230b6Smaya   uint32_t                             CommandSubType;
251310e230b6Smaya   uint32_t                             CommandType;
251410e230b6Smaya   struct GEN8_3DSTATE_CONSTANT_BODY    ConstantBody;
251510e230b6Smaya};
251610e230b6Smaya
251710e230b6Smayastatic inline void
251810e230b6SmayaGEN8_3DSTATE_CONSTANT_GS_pack(__attribute__((unused)) __gen_user_data *data,
251910e230b6Smaya                              __attribute__((unused)) void * restrict dst,
252010e230b6Smaya                              __attribute__((unused)) const struct GEN8_3DSTATE_CONSTANT_GS * restrict values)
252110e230b6Smaya{
252210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
252310e230b6Smaya
252410e230b6Smaya   dw[0] =
252510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
252610e230b6Smaya      __gen_uint(values->MOCS, 8, 14) |
252710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
252810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
252910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
253010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
253110e230b6Smaya
253210e230b6Smaya   GEN8_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
253310e230b6Smaya}
253410e230b6Smaya
253510e230b6Smaya#define GEN8_3DSTATE_CONSTANT_HS_length       11
253610e230b6Smaya#define GEN8_3DSTATE_CONSTANT_HS_length_bias      2
253710e230b6Smaya#define GEN8_3DSTATE_CONSTANT_HS_header         \
253810e230b6Smaya   .DWordLength                         =      9,  \
253910e230b6Smaya   ._3DCommandSubOpcode                 =     25,  \
254010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
254110e230b6Smaya   .CommandSubType                      =      3,  \
254210e230b6Smaya   .CommandType                         =      3
254310e230b6Smaya
254410e230b6Smayastruct GEN8_3DSTATE_CONSTANT_HS {
254510e230b6Smaya   uint32_t                             DWordLength;
254610e230b6Smaya   uint32_t                             MOCS;
254710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
254810e230b6Smaya   uint32_t                             _3DCommandOpcode;
254910e230b6Smaya   uint32_t                             CommandSubType;
255010e230b6Smaya   uint32_t                             CommandType;
255110e230b6Smaya   struct GEN8_3DSTATE_CONSTANT_BODY    ConstantBody;
255210e230b6Smaya};
255310e230b6Smaya
255410e230b6Smayastatic inline void
255510e230b6SmayaGEN8_3DSTATE_CONSTANT_HS_pack(__attribute__((unused)) __gen_user_data *data,
255610e230b6Smaya                              __attribute__((unused)) void * restrict dst,
255710e230b6Smaya                              __attribute__((unused)) const struct GEN8_3DSTATE_CONSTANT_HS * restrict values)
255810e230b6Smaya{
255910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
256010e230b6Smaya
256110e230b6Smaya   dw[0] =
256210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
256310e230b6Smaya      __gen_uint(values->MOCS, 8, 14) |
256410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
256510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
256610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
256710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
256810e230b6Smaya
256910e230b6Smaya   GEN8_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
257010e230b6Smaya}
257110e230b6Smaya
257210e230b6Smaya#define GEN8_3DSTATE_CONSTANT_PS_length       11
257310e230b6Smaya#define GEN8_3DSTATE_CONSTANT_PS_length_bias      2
257410e230b6Smaya#define GEN8_3DSTATE_CONSTANT_PS_header         \
257510e230b6Smaya   .DWordLength                         =      9,  \
257610e230b6Smaya   ._3DCommandSubOpcode                 =     23,  \
257710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
257810e230b6Smaya   .CommandSubType                      =      3,  \
257910e230b6Smaya   .CommandType                         =      3
258010e230b6Smaya
258110e230b6Smayastruct GEN8_3DSTATE_CONSTANT_PS {
258210e230b6Smaya   uint32_t                             DWordLength;
258310e230b6Smaya   uint32_t                             MOCS;
258410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
258510e230b6Smaya   uint32_t                             _3DCommandOpcode;
258610e230b6Smaya   uint32_t                             CommandSubType;
258710e230b6Smaya   uint32_t                             CommandType;
258810e230b6Smaya   struct GEN8_3DSTATE_CONSTANT_BODY    ConstantBody;
258910e230b6Smaya};
259010e230b6Smaya
259110e230b6Smayastatic inline void
259210e230b6SmayaGEN8_3DSTATE_CONSTANT_PS_pack(__attribute__((unused)) __gen_user_data *data,
259310e230b6Smaya                              __attribute__((unused)) void * restrict dst,
259410e230b6Smaya                              __attribute__((unused)) const struct GEN8_3DSTATE_CONSTANT_PS * restrict values)
259510e230b6Smaya{
259610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
259710e230b6Smaya
259810e230b6Smaya   dw[0] =
259910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
260010e230b6Smaya      __gen_uint(values->MOCS, 8, 14) |
260110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
260210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
260310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
260410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
260510e230b6Smaya
260610e230b6Smaya   GEN8_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
260710e230b6Smaya}
260810e230b6Smaya
260910e230b6Smaya#define GEN8_3DSTATE_CONSTANT_VS_length       11
261010e230b6Smaya#define GEN8_3DSTATE_CONSTANT_VS_length_bias      2
261110e230b6Smaya#define GEN8_3DSTATE_CONSTANT_VS_header         \
261210e230b6Smaya   .DWordLength                         =      9,  \
261310e230b6Smaya   ._3DCommandSubOpcode                 =     21,  \
261410e230b6Smaya   ._3DCommandOpcode                    =      0,  \
261510e230b6Smaya   .CommandSubType                      =      3,  \
261610e230b6Smaya   .CommandType                         =      3
261710e230b6Smaya
261810e230b6Smayastruct GEN8_3DSTATE_CONSTANT_VS {
261910e230b6Smaya   uint32_t                             DWordLength;
262010e230b6Smaya   uint32_t                             MOCS;
262110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
262210e230b6Smaya   uint32_t                             _3DCommandOpcode;
262310e230b6Smaya   uint32_t                             CommandSubType;
262410e230b6Smaya   uint32_t                             CommandType;
262510e230b6Smaya   struct GEN8_3DSTATE_CONSTANT_BODY    ConstantBody;
262610e230b6Smaya};
262710e230b6Smaya
262810e230b6Smayastatic inline void
262910e230b6SmayaGEN8_3DSTATE_CONSTANT_VS_pack(__attribute__((unused)) __gen_user_data *data,
263010e230b6Smaya                              __attribute__((unused)) void * restrict dst,
263110e230b6Smaya                              __attribute__((unused)) const struct GEN8_3DSTATE_CONSTANT_VS * restrict values)
263210e230b6Smaya{
263310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
263410e230b6Smaya
263510e230b6Smaya   dw[0] =
263610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
263710e230b6Smaya      __gen_uint(values->MOCS, 8, 14) |
263810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
263910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
264010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
264110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
264210e230b6Smaya
264310e230b6Smaya   GEN8_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
264410e230b6Smaya}
264510e230b6Smaya
264610e230b6Smaya#define GEN8_3DSTATE_DEPTH_BUFFER_length       8
264710e230b6Smaya#define GEN8_3DSTATE_DEPTH_BUFFER_length_bias      2
264810e230b6Smaya#define GEN8_3DSTATE_DEPTH_BUFFER_header        \
264910e230b6Smaya   .DWordLength                         =      6,  \
265010e230b6Smaya   ._3DCommandSubOpcode                 =      5,  \
265110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
265210e230b6Smaya   .CommandSubType                      =      3,  \
265310e230b6Smaya   .CommandType                         =      3
265410e230b6Smaya
265510e230b6Smayastruct GEN8_3DSTATE_DEPTH_BUFFER {
265610e230b6Smaya   uint32_t                             DWordLength;
265710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
265810e230b6Smaya   uint32_t                             _3DCommandOpcode;
265910e230b6Smaya   uint32_t                             CommandSubType;
266010e230b6Smaya   uint32_t                             CommandType;
266110e230b6Smaya   uint32_t                             SurfacePitch;
266210e230b6Smaya   uint32_t                             SurfaceFormat;
266310e230b6Smaya#define D32_FLOAT                                1
266410e230b6Smaya#define D24_UNORM_X8_UINT                        3
266510e230b6Smaya#define D16_UNORM                                5
266610e230b6Smaya   bool                                 HierarchicalDepthBufferEnable;
266710e230b6Smaya   bool                                 StencilWriteEnable;
266810e230b6Smaya   bool                                 DepthWriteEnable;
266910e230b6Smaya   uint32_t                             SurfaceType;
267010e230b6Smaya#define SURFTYPE_1D                              0
267110e230b6Smaya#define SURFTYPE_2D                              1
267210e230b6Smaya#define SURFTYPE_3D                              2
267310e230b6Smaya#define SURFTYPE_CUBE                            3
267410e230b6Smaya#define SURFTYPE_NULL                            7
267510e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
267610e230b6Smaya   uint32_t                             LOD;
267710e230b6Smaya   uint32_t                             Width;
267810e230b6Smaya   uint32_t                             Height;
267910e230b6Smaya   uint32_t                             MOCS;
268010e230b6Smaya   uint32_t                             MinimumArrayElement;
268110e230b6Smaya   uint32_t                             Depth;
268210e230b6Smaya   uint32_t                             SurfaceQPitch;
268310e230b6Smaya   uint32_t                             RenderTargetViewExtent;
268410e230b6Smaya};
268510e230b6Smaya
268610e230b6Smayastatic inline void
268710e230b6SmayaGEN8_3DSTATE_DEPTH_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
268810e230b6Smaya                               __attribute__((unused)) void * restrict dst,
268910e230b6Smaya                               __attribute__((unused)) const struct GEN8_3DSTATE_DEPTH_BUFFER * restrict values)
269010e230b6Smaya{
269110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
269210e230b6Smaya
269310e230b6Smaya   dw[0] =
269410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
269510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
269610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
269710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
269810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
269910e230b6Smaya
270010e230b6Smaya   dw[1] =
270110e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 17) |
270210e230b6Smaya      __gen_uint(values->SurfaceFormat, 18, 20) |
270310e230b6Smaya      __gen_uint(values->HierarchicalDepthBufferEnable, 22, 22) |
270410e230b6Smaya      __gen_uint(values->StencilWriteEnable, 27, 27) |
270510e230b6Smaya      __gen_uint(values->DepthWriteEnable, 28, 28) |
270610e230b6Smaya      __gen_uint(values->SurfaceType, 29, 31);
270710e230b6Smaya
270810e230b6Smaya   const uint64_t v2_address =
270910e230b6Smaya      __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0);
271010e230b6Smaya   dw[2] = v2_address;
271110e230b6Smaya   dw[3] = v2_address >> 32;
271210e230b6Smaya
271310e230b6Smaya   dw[4] =
271410e230b6Smaya      __gen_uint(values->LOD, 0, 3) |
271510e230b6Smaya      __gen_uint(values->Width, 4, 17) |
271610e230b6Smaya      __gen_uint(values->Height, 18, 31);
271710e230b6Smaya
271810e230b6Smaya   dw[5] =
271910e230b6Smaya      __gen_uint(values->MOCS, 0, 6) |
272010e230b6Smaya      __gen_uint(values->MinimumArrayElement, 10, 20) |
272110e230b6Smaya      __gen_uint(values->Depth, 21, 31);
272210e230b6Smaya
272310e230b6Smaya   dw[6] = 0;
272410e230b6Smaya
272510e230b6Smaya   dw[7] =
272610e230b6Smaya      __gen_uint(values->SurfaceQPitch, 0, 14) |
272710e230b6Smaya      __gen_uint(values->RenderTargetViewExtent, 21, 31);
272810e230b6Smaya}
272910e230b6Smaya
273010e230b6Smaya#define GEN8_3DSTATE_DRAWING_RECTANGLE_length      4
273110e230b6Smaya#define GEN8_3DSTATE_DRAWING_RECTANGLE_length_bias      2
273210e230b6Smaya#define GEN8_3DSTATE_DRAWING_RECTANGLE_header   \
273310e230b6Smaya   .DWordLength                         =      2,  \
273410e230b6Smaya   ._3DCommandSubOpcode                 =      0,  \
273510e230b6Smaya   ._3DCommandOpcode                    =      1,  \
273610e230b6Smaya   .CommandSubType                      =      3,  \
273710e230b6Smaya   .CommandType                         =      3
273810e230b6Smaya
273910e230b6Smayastruct GEN8_3DSTATE_DRAWING_RECTANGLE {
274010e230b6Smaya   uint32_t                             DWordLength;
274110e230b6Smaya   uint32_t                             CoreModeSelect;
274210e230b6Smaya#define Legacy                                   0
274310e230b6Smaya#define Core0Enabled                             1
274410e230b6Smaya#define Core1Enabled                             2
274510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
274610e230b6Smaya   uint32_t                             _3DCommandOpcode;
274710e230b6Smaya   uint32_t                             CommandSubType;
274810e230b6Smaya   uint32_t                             CommandType;
274910e230b6Smaya   uint32_t                             ClippedDrawingRectangleXMin;
275010e230b6Smaya   uint32_t                             ClippedDrawingRectangleYMin;
275110e230b6Smaya   uint32_t                             ClippedDrawingRectangleXMax;
275210e230b6Smaya   uint32_t                             ClippedDrawingRectangleYMax;
275310e230b6Smaya   int32_t                              DrawingRectangleOriginX;
275410e230b6Smaya   int32_t                              DrawingRectangleOriginY;
275510e230b6Smaya};
275610e230b6Smaya
275710e230b6Smayastatic inline void
275810e230b6SmayaGEN8_3DSTATE_DRAWING_RECTANGLE_pack(__attribute__((unused)) __gen_user_data *data,
275910e230b6Smaya                                    __attribute__((unused)) void * restrict dst,
276010e230b6Smaya                                    __attribute__((unused)) const struct GEN8_3DSTATE_DRAWING_RECTANGLE * restrict values)
276110e230b6Smaya{
276210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
276310e230b6Smaya
276410e230b6Smaya   dw[0] =
276510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
276610e230b6Smaya      __gen_uint(values->CoreModeSelect, 14, 15) |
276710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
276810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
276910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
277010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
277110e230b6Smaya
277210e230b6Smaya   dw[1] =
277310e230b6Smaya      __gen_uint(values->ClippedDrawingRectangleXMin, 0, 15) |
277410e230b6Smaya      __gen_uint(values->ClippedDrawingRectangleYMin, 16, 31);
277510e230b6Smaya
277610e230b6Smaya   dw[2] =
277710e230b6Smaya      __gen_uint(values->ClippedDrawingRectangleXMax, 0, 15) |
277810e230b6Smaya      __gen_uint(values->ClippedDrawingRectangleYMax, 16, 31);
277910e230b6Smaya
278010e230b6Smaya   dw[3] =
278110e230b6Smaya      __gen_sint(values->DrawingRectangleOriginX, 0, 15) |
278210e230b6Smaya      __gen_sint(values->DrawingRectangleOriginY, 16, 31);
278310e230b6Smaya}
278410e230b6Smaya
278510e230b6Smaya#define GEN8_3DSTATE_DS_length                 9
278610e230b6Smaya#define GEN8_3DSTATE_DS_length_bias            2
278710e230b6Smaya#define GEN8_3DSTATE_DS_header                  \
278810e230b6Smaya   .DWordLength                         =      7,  \
278910e230b6Smaya   ._3DCommandSubOpcode                 =     29,  \
279010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
279110e230b6Smaya   .CommandSubType                      =      3,  \
279210e230b6Smaya   .CommandType                         =      3
279310e230b6Smaya
279410e230b6Smayastruct GEN8_3DSTATE_DS {
279510e230b6Smaya   uint32_t                             DWordLength;
279610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
279710e230b6Smaya   uint32_t                             _3DCommandOpcode;
279810e230b6Smaya   uint32_t                             CommandSubType;
279910e230b6Smaya   uint32_t                             CommandType;
280010e230b6Smaya   uint64_t                             KernelStartPointer;
280110e230b6Smaya   bool                                 SoftwareExceptionEnable;
280210e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
280310e230b6Smaya   bool                                 AccessesUAV;
280410e230b6Smaya   uint32_t                             FloatingPointMode;
280510e230b6Smaya#define IEEE754                                  0
280610e230b6Smaya#define Alternate                                1
280710e230b6Smaya   uint32_t                             ThreadDispatchPriority;
280810e230b6Smaya#define High                                     1
280910e230b6Smaya   uint32_t                             BindingTableEntryCount;
281010e230b6Smaya   uint32_t                             SamplerCount;
281110e230b6Smaya#define NoSamplers                               0
281210e230b6Smaya#define _14Samplers                              1
281310e230b6Smaya#define _58Samplers                              2
281410e230b6Smaya#define _912Samplers                             3
281510e230b6Smaya#define _1316Samplers                            4
281610e230b6Smaya   bool                                 VectorMaskEnable;
281710e230b6Smaya   uint32_t                             SingleDomainPointDispatch;
281810e230b6Smaya   uint32_t                             PerThreadScratchSpace;
281910e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
282010e230b6Smaya   uint32_t                             PatchURBEntryReadOffset;
282110e230b6Smaya   uint32_t                             PatchURBEntryReadLength;
282210e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForURBData;
282310e230b6Smaya   bool                                 Enable;
282410e230b6Smaya   bool                                 CacheDisable;
282510e230b6Smaya   bool                                 ComputeWCoordinateEnable;
282610e230b6Smaya   uint32_t                             DispatchMode;
282710e230b6Smaya#define DISPATCH_MODE_SIMD4X2                    0
282810e230b6Smaya#define DISPATCH_MODE_SIMD8_SINGLE_PATCH         1
282910e230b6Smaya   bool                                 StatisticsEnable;
283010e230b6Smaya   uint32_t                             MaximumNumberofThreads;
283110e230b6Smaya   uint32_t                             UserClipDistanceCullTestEnableBitmask;
283210e230b6Smaya   uint32_t                             UserClipDistanceClipTestEnableBitmask;
283310e230b6Smaya   uint32_t                             VertexURBEntryOutputLength;
283410e230b6Smaya   uint32_t                             VertexURBEntryOutputReadOffset;
283510e230b6Smaya};
283610e230b6Smaya
283710e230b6Smayastatic inline void
283810e230b6SmayaGEN8_3DSTATE_DS_pack(__attribute__((unused)) __gen_user_data *data,
283910e230b6Smaya                     __attribute__((unused)) void * restrict dst,
284010e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_DS * restrict values)
284110e230b6Smaya{
284210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
284310e230b6Smaya
284410e230b6Smaya   dw[0] =
284510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
284610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
284710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
284810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
284910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
285010e230b6Smaya
285110e230b6Smaya   const uint64_t v1 =
285210e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 63);
285310e230b6Smaya   dw[1] = v1;
285410e230b6Smaya   dw[2] = v1 >> 32;
285510e230b6Smaya
285610e230b6Smaya   dw[3] =
285710e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
285810e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
285910e230b6Smaya      __gen_uint(values->AccessesUAV, 14, 14) |
286010e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
286110e230b6Smaya      __gen_uint(values->ThreadDispatchPriority, 17, 17) |
286210e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
286310e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29) |
286410e230b6Smaya      __gen_uint(values->VectorMaskEnable, 30, 30) |
286510e230b6Smaya      __gen_uint(values->SingleDomainPointDispatch, 31, 31);
286610e230b6Smaya
286710e230b6Smaya   const uint64_t v4 =
286810e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
286910e230b6Smaya   const uint64_t v4_address =
287010e230b6Smaya      __gen_combine_address(data, &dw[4], values->ScratchSpaceBasePointer, v4);
287110e230b6Smaya   dw[4] = v4_address;
287210e230b6Smaya   dw[5] = (v4_address >> 32) | (v4 >> 32);
287310e230b6Smaya
287410e230b6Smaya   dw[6] =
287510e230b6Smaya      __gen_uint(values->PatchURBEntryReadOffset, 4, 9) |
287610e230b6Smaya      __gen_uint(values->PatchURBEntryReadLength, 11, 17) |
287710e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForURBData, 20, 24);
287810e230b6Smaya
287910e230b6Smaya   dw[7] =
288010e230b6Smaya      __gen_uint(values->Enable, 0, 0) |
288110e230b6Smaya      __gen_uint(values->CacheDisable, 1, 1) |
288210e230b6Smaya      __gen_uint(values->ComputeWCoordinateEnable, 2, 2) |
288310e230b6Smaya      __gen_uint(values->DispatchMode, 3, 3) |
288410e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
288510e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 21, 29);
288610e230b6Smaya
288710e230b6Smaya   dw[8] =
288810e230b6Smaya      __gen_uint(values->UserClipDistanceCullTestEnableBitmask, 0, 7) |
288910e230b6Smaya      __gen_uint(values->UserClipDistanceClipTestEnableBitmask, 8, 15) |
289010e230b6Smaya      __gen_uint(values->VertexURBEntryOutputLength, 16, 20) |
289110e230b6Smaya      __gen_uint(values->VertexURBEntryOutputReadOffset, 21, 26);
289210e230b6Smaya}
289310e230b6Smaya
289410e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_DS_length_bias      2
289510e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_DS_header  \
289610e230b6Smaya   .DWordLength                         =      1,  \
289710e230b6Smaya   ._3DCommandSubOpcode                 =     55,  \
289810e230b6Smaya   ._3DCommandOpcode                    =      0,  \
289910e230b6Smaya   .CommandSubType                      =      3,  \
290010e230b6Smaya   .CommandType                         =      3
290110e230b6Smaya
290210e230b6Smayastruct GEN8_3DSTATE_GATHER_CONSTANT_DS {
290310e230b6Smaya   uint32_t                             DWordLength;
290410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
290510e230b6Smaya   uint32_t                             _3DCommandOpcode;
290610e230b6Smaya   uint32_t                             CommandSubType;
290710e230b6Smaya   uint32_t                             CommandType;
290810e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
290910e230b6Smaya   uint32_t                             ConstantBufferValid;
291010e230b6Smaya   bool                                 ConstantBufferDx9GenerateStall;
291110e230b6Smaya   uint64_t                             GatherBufferOffset;
291210e230b6Smaya   /* variable length fields follow */
291310e230b6Smaya};
291410e230b6Smaya
291510e230b6Smayastatic inline void
291610e230b6SmayaGEN8_3DSTATE_GATHER_CONSTANT_DS_pack(__attribute__((unused)) __gen_user_data *data,
291710e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
291810e230b6Smaya                                     __attribute__((unused)) const struct GEN8_3DSTATE_GATHER_CONSTANT_DS * restrict values)
291910e230b6Smaya{
292010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
292110e230b6Smaya
292210e230b6Smaya   dw[0] =
292310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
292410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
292510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
292610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
292710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
292810e230b6Smaya
292910e230b6Smaya   dw[1] =
293010e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
293110e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
293210e230b6Smaya
293310e230b6Smaya   dw[2] =
293410e230b6Smaya      __gen_uint(values->ConstantBufferDx9GenerateStall, 5, 5) |
293510e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
293610e230b6Smaya}
293710e230b6Smaya
293810e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_GS_length_bias      2
293910e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_GS_header  \
294010e230b6Smaya   .DWordLength                         =      1,  \
294110e230b6Smaya   ._3DCommandSubOpcode                 =     53,  \
294210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
294310e230b6Smaya   .CommandSubType                      =      3,  \
294410e230b6Smaya   .CommandType                         =      3
294510e230b6Smaya
294610e230b6Smayastruct GEN8_3DSTATE_GATHER_CONSTANT_GS {
294710e230b6Smaya   uint32_t                             DWordLength;
294810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
294910e230b6Smaya   uint32_t                             _3DCommandOpcode;
295010e230b6Smaya   uint32_t                             CommandSubType;
295110e230b6Smaya   uint32_t                             CommandType;
295210e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
295310e230b6Smaya   uint32_t                             ConstantBufferValid;
295410e230b6Smaya   bool                                 ConstantBufferDx9GenerateStall;
295510e230b6Smaya   uint64_t                             GatherBufferOffset;
295610e230b6Smaya   /* variable length fields follow */
295710e230b6Smaya};
295810e230b6Smaya
295910e230b6Smayastatic inline void
296010e230b6SmayaGEN8_3DSTATE_GATHER_CONSTANT_GS_pack(__attribute__((unused)) __gen_user_data *data,
296110e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
296210e230b6Smaya                                     __attribute__((unused)) const struct GEN8_3DSTATE_GATHER_CONSTANT_GS * restrict values)
296310e230b6Smaya{
296410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
296510e230b6Smaya
296610e230b6Smaya   dw[0] =
296710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
296810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
296910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
297010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
297110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
297210e230b6Smaya
297310e230b6Smaya   dw[1] =
297410e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
297510e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
297610e230b6Smaya
297710e230b6Smaya   dw[2] =
297810e230b6Smaya      __gen_uint(values->ConstantBufferDx9GenerateStall, 5, 5) |
297910e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
298010e230b6Smaya}
298110e230b6Smaya
298210e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_HS_length_bias      2
298310e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_HS_header  \
298410e230b6Smaya   .DWordLength                         =      1,  \
298510e230b6Smaya   ._3DCommandSubOpcode                 =     54,  \
298610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
298710e230b6Smaya   .CommandSubType                      =      3,  \
298810e230b6Smaya   .CommandType                         =      3
298910e230b6Smaya
299010e230b6Smayastruct GEN8_3DSTATE_GATHER_CONSTANT_HS {
299110e230b6Smaya   uint32_t                             DWordLength;
299210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
299310e230b6Smaya   uint32_t                             _3DCommandOpcode;
299410e230b6Smaya   uint32_t                             CommandSubType;
299510e230b6Smaya   uint32_t                             CommandType;
299610e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
299710e230b6Smaya   uint32_t                             ConstantBufferValid;
299810e230b6Smaya   bool                                 ConstantBufferDx9GenerateStall;
299910e230b6Smaya   uint64_t                             GatherBufferOffset;
300010e230b6Smaya   /* variable length fields follow */
300110e230b6Smaya};
300210e230b6Smaya
300310e230b6Smayastatic inline void
300410e230b6SmayaGEN8_3DSTATE_GATHER_CONSTANT_HS_pack(__attribute__((unused)) __gen_user_data *data,
300510e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
300610e230b6Smaya                                     __attribute__((unused)) const struct GEN8_3DSTATE_GATHER_CONSTANT_HS * restrict values)
300710e230b6Smaya{
300810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
300910e230b6Smaya
301010e230b6Smaya   dw[0] =
301110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
301210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
301310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
301410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
301510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
301610e230b6Smaya
301710e230b6Smaya   dw[1] =
301810e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
301910e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
302010e230b6Smaya
302110e230b6Smaya   dw[2] =
302210e230b6Smaya      __gen_uint(values->ConstantBufferDx9GenerateStall, 5, 5) |
302310e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
302410e230b6Smaya}
302510e230b6Smaya
302610e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_PS_length_bias      2
302710e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_PS_header  \
302810e230b6Smaya   .DWordLength                         =      1,  \
302910e230b6Smaya   ._3DCommandSubOpcode                 =     56,  \
303010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
303110e230b6Smaya   .CommandSubType                      =      3,  \
303210e230b6Smaya   .CommandType                         =      3
303310e230b6Smaya
303410e230b6Smayastruct GEN8_3DSTATE_GATHER_CONSTANT_PS {
303510e230b6Smaya   uint32_t                             DWordLength;
303610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
303710e230b6Smaya   uint32_t                             _3DCommandOpcode;
303810e230b6Smaya   uint32_t                             CommandSubType;
303910e230b6Smaya   uint32_t                             CommandType;
304010e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
304110e230b6Smaya   uint32_t                             ConstantBufferValid;
304210e230b6Smaya   bool                                 ConstantBufferDx9Enable;
304310e230b6Smaya   bool                                 ConstantBufferDx9GenerateStall;
304410e230b6Smaya   uint64_t                             GatherBufferOffset;
304510e230b6Smaya   /* variable length fields follow */
304610e230b6Smaya};
304710e230b6Smaya
304810e230b6Smayastatic inline void
304910e230b6SmayaGEN8_3DSTATE_GATHER_CONSTANT_PS_pack(__attribute__((unused)) __gen_user_data *data,
305010e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
305110e230b6Smaya                                     __attribute__((unused)) const struct GEN8_3DSTATE_GATHER_CONSTANT_PS * restrict values)
305210e230b6Smaya{
305310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
305410e230b6Smaya
305510e230b6Smaya   dw[0] =
305610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
305710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
305810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
305910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
306010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
306110e230b6Smaya
306210e230b6Smaya   dw[1] =
306310e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
306410e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
306510e230b6Smaya
306610e230b6Smaya   dw[2] =
306710e230b6Smaya      __gen_uint(values->ConstantBufferDx9Enable, 4, 4) |
306810e230b6Smaya      __gen_uint(values->ConstantBufferDx9GenerateStall, 5, 5) |
306910e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
307010e230b6Smaya}
307110e230b6Smaya
307210e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_VS_length_bias      2
307310e230b6Smaya#define GEN8_3DSTATE_GATHER_CONSTANT_VS_header  \
307410e230b6Smaya   .DWordLength                         =      0,  \
307510e230b6Smaya   ._3DCommandSubOpcode                 =     52,  \
307610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
307710e230b6Smaya   .CommandSubType                      =      3,  \
307810e230b6Smaya   .CommandType                         =      3
307910e230b6Smaya
308010e230b6Smayastruct GEN8_3DSTATE_GATHER_CONSTANT_VS {
308110e230b6Smaya   uint32_t                             DWordLength;
308210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
308310e230b6Smaya   uint32_t                             _3DCommandOpcode;
308410e230b6Smaya   uint32_t                             CommandSubType;
308510e230b6Smaya   uint32_t                             CommandType;
308610e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
308710e230b6Smaya   uint32_t                             ConstantBufferValid;
308810e230b6Smaya   bool                                 ConstantBufferDx9Enable;
308910e230b6Smaya   bool                                 ConstantBufferDx9GenerateStall;
309010e230b6Smaya   uint64_t                             GatherBufferOffset;
309110e230b6Smaya   /* variable length fields follow */
309210e230b6Smaya};
309310e230b6Smaya
309410e230b6Smayastatic inline void
309510e230b6SmayaGEN8_3DSTATE_GATHER_CONSTANT_VS_pack(__attribute__((unused)) __gen_user_data *data,
309610e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
309710e230b6Smaya                                     __attribute__((unused)) const struct GEN8_3DSTATE_GATHER_CONSTANT_VS * restrict values)
309810e230b6Smaya{
309910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
310010e230b6Smaya
310110e230b6Smaya   dw[0] =
310210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
310310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
310410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
310510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
310610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
310710e230b6Smaya
310810e230b6Smaya   dw[1] =
310910e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
311010e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
311110e230b6Smaya
311210e230b6Smaya   dw[2] =
311310e230b6Smaya      __gen_uint(values->ConstantBufferDx9Enable, 4, 4) |
311410e230b6Smaya      __gen_uint(values->ConstantBufferDx9GenerateStall, 5, 5) |
311510e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
311610e230b6Smaya}
311710e230b6Smaya
311810e230b6Smaya#define GEN8_3DSTATE_GATHER_POOL_ALLOC_length      4
311910e230b6Smaya#define GEN8_3DSTATE_GATHER_POOL_ALLOC_length_bias      2
312010e230b6Smaya#define GEN8_3DSTATE_GATHER_POOL_ALLOC_header   \
312110e230b6Smaya   .DWordLength                         =      2,  \
312210e230b6Smaya   ._3DCommandSubOpcode                 =     26,  \
312310e230b6Smaya   ._3DCommandOpcode                    =      1,  \
312410e230b6Smaya   .CommandSubType                      =      3,  \
312510e230b6Smaya   .CommandType                         =      3
312610e230b6Smaya
312710e230b6Smayastruct GEN8_3DSTATE_GATHER_POOL_ALLOC {
312810e230b6Smaya   uint32_t                             DWordLength;
312910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
313010e230b6Smaya   uint32_t                             _3DCommandOpcode;
313110e230b6Smaya   uint32_t                             CommandSubType;
313210e230b6Smaya   uint32_t                             CommandType;
313310e230b6Smaya   uint32_t                             MOCS;
313410e230b6Smaya   bool                                 GatherPoolEnable;
313510e230b6Smaya   __gen_address_type                   GatherPoolBaseAddress;
313610e230b6Smaya   uint32_t                             GatherPoolBufferSize;
313710e230b6Smaya};
313810e230b6Smaya
313910e230b6Smayastatic inline void
314010e230b6SmayaGEN8_3DSTATE_GATHER_POOL_ALLOC_pack(__attribute__((unused)) __gen_user_data *data,
314110e230b6Smaya                                    __attribute__((unused)) void * restrict dst,
314210e230b6Smaya                                    __attribute__((unused)) const struct GEN8_3DSTATE_GATHER_POOL_ALLOC * restrict values)
314310e230b6Smaya{
314410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
314510e230b6Smaya
314610e230b6Smaya   dw[0] =
314710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
314810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
314910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
315010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
315110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
315210e230b6Smaya
315310e230b6Smaya   const uint64_t v1 =
315410e230b6Smaya      __gen_uint(values->MOCS, 0, 6) |
315510e230b6Smaya      __gen_uint(values->GatherPoolEnable, 11, 11);
315610e230b6Smaya   const uint64_t v1_address =
315710e230b6Smaya      __gen_combine_address(data, &dw[1], values->GatherPoolBaseAddress, v1);
315810e230b6Smaya   dw[1] = v1_address;
315910e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
316010e230b6Smaya
316110e230b6Smaya   dw[3] =
316210e230b6Smaya      __gen_uint(values->GatherPoolBufferSize, 12, 31);
316310e230b6Smaya}
316410e230b6Smaya
316510e230b6Smaya#define GEN8_3DSTATE_GS_length                10
316610e230b6Smaya#define GEN8_3DSTATE_GS_length_bias            2
316710e230b6Smaya#define GEN8_3DSTATE_GS_header                  \
316810e230b6Smaya   .DWordLength                         =      8,  \
316910e230b6Smaya   ._3DCommandSubOpcode                 =     17,  \
317010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
317110e230b6Smaya   .CommandSubType                      =      3,  \
317210e230b6Smaya   .CommandType                         =      3
317310e230b6Smaya
317410e230b6Smayastruct GEN8_3DSTATE_GS {
317510e230b6Smaya   uint32_t                             DWordLength;
317610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
317710e230b6Smaya   uint32_t                             _3DCommandOpcode;
317810e230b6Smaya   uint32_t                             CommandSubType;
317910e230b6Smaya   uint32_t                             CommandType;
318010e230b6Smaya   uint64_t                             KernelStartPointer;
318110e230b6Smaya   uint32_t                             ExpectedVertexCount;
318210e230b6Smaya   bool                                 SoftwareExceptionEnable;
318310e230b6Smaya   bool                                 MaskStackExceptionEnable;
318410e230b6Smaya   bool                                 AccessesUAV;
318510e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
318610e230b6Smaya   uint32_t                             FloatingPointMode;
318710e230b6Smaya#define IEEE754                                  0
318810e230b6Smaya#define Alternate                                1
318910e230b6Smaya   uint32_t                             ThreadDispatchPriority;
319010e230b6Smaya#define High                                     1
319110e230b6Smaya   uint32_t                             BindingTableEntryCount;
319210e230b6Smaya   uint32_t                             SamplerCount;
319310e230b6Smaya#define NoSamplers                               0
319410e230b6Smaya#define _14Samplers                              1
319510e230b6Smaya#define _58Samplers                              2
319610e230b6Smaya#define _912Samplers                             3
319710e230b6Smaya#define _1316Samplers                            4
319810e230b6Smaya   bool                                 VectorMaskEnable;
319910e230b6Smaya   bool                                 SingleProgramFlow;
320010e230b6Smaya   uint32_t                             PerThreadScratchSpace;
320110e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
320210e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForURBData;
320310e230b6Smaya   uint32_t                             VertexURBEntryReadOffset;
320410e230b6Smaya   bool                                 IncludeVertexHandles;
320510e230b6Smaya   uint32_t                             VertexURBEntryReadLength;
320610e230b6Smaya   enum GEN8_3D_Prim_Topo_Type          OutputTopology;
320710e230b6Smaya   uint32_t                             OutputVertexSize;
320810e230b6Smaya   bool                                 Enable;
320910e230b6Smaya   bool                                 DiscardAdjacency;
321010e230b6Smaya   uint32_t                             ReorderMode;
321110e230b6Smaya#define LEADING                                  0
321210e230b6Smaya#define TRAILING                                 1
321310e230b6Smaya   uint32_t                             Hint;
321410e230b6Smaya   bool                                 IncludePrimitiveID;
321510e230b6Smaya   uint32_t                             InvocationsIncrementValue;
321610e230b6Smaya   bool                                 StatisticsEnable;
321710e230b6Smaya   uint32_t                             DispatchMode;
321810e230b6Smaya#define DISPATCH_MODE_DualInstance               1
321910e230b6Smaya#define DISPATCH_MODE_DualObject                 2
322010e230b6Smaya#define DISPATCH_MODE_SIMD8                      3
322110e230b6Smaya   uint32_t                             DefaultStreamId;
322210e230b6Smaya   uint32_t                             InstanceControl;
322310e230b6Smaya   uint32_t                             ControlDataHeaderSize;
322410e230b6Smaya   uint32_t                             MaximumNumberofThreads;
322510e230b6Smaya   uint32_t                             StaticOutputVertexCount;
322610e230b6Smaya   bool                                 StaticOutput;
322710e230b6Smaya   uint32_t                             ControlDataFormat;
322810e230b6Smaya#define CUT                                      0
322910e230b6Smaya#define SID                                      1
323010e230b6Smaya   uint32_t                             UserClipDistanceCullTestEnableBitmask;
323110e230b6Smaya   uint32_t                             UserClipDistanceClipTestEnableBitmask;
323210e230b6Smaya   uint32_t                             VertexURBEntryOutputLength;
323310e230b6Smaya   uint32_t                             VertexURBEntryOutputReadOffset;
323410e230b6Smaya};
323510e230b6Smaya
323610e230b6Smayastatic inline void
323710e230b6SmayaGEN8_3DSTATE_GS_pack(__attribute__((unused)) __gen_user_data *data,
323810e230b6Smaya                     __attribute__((unused)) void * restrict dst,
323910e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_GS * restrict values)
324010e230b6Smaya{
324110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
324210e230b6Smaya
324310e230b6Smaya   dw[0] =
324410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
324510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
324610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
324710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
324810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
324910e230b6Smaya
325010e230b6Smaya   const uint64_t v1 =
325110e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 63);
325210e230b6Smaya   dw[1] = v1;
325310e230b6Smaya   dw[2] = v1 >> 32;
325410e230b6Smaya
325510e230b6Smaya   dw[3] =
325610e230b6Smaya      __gen_uint(values->ExpectedVertexCount, 0, 5) |
325710e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
325810e230b6Smaya      __gen_uint(values->MaskStackExceptionEnable, 11, 11) |
325910e230b6Smaya      __gen_uint(values->AccessesUAV, 12, 12) |
326010e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
326110e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
326210e230b6Smaya      __gen_uint(values->ThreadDispatchPriority, 17, 17) |
326310e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
326410e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29) |
326510e230b6Smaya      __gen_uint(values->VectorMaskEnable, 30, 30) |
326610e230b6Smaya      __gen_uint(values->SingleProgramFlow, 31, 31);
326710e230b6Smaya
326810e230b6Smaya   const uint64_t v4 =
326910e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
327010e230b6Smaya   const uint64_t v4_address =
327110e230b6Smaya      __gen_combine_address(data, &dw[4], values->ScratchSpaceBasePointer, v4);
327210e230b6Smaya   dw[4] = v4_address;
327310e230b6Smaya   dw[5] = (v4_address >> 32) | (v4 >> 32);
327410e230b6Smaya
327510e230b6Smaya   dw[6] =
327610e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForURBData, 0, 3) |
327710e230b6Smaya      __gen_uint(values->VertexURBEntryReadOffset, 4, 9) |
327810e230b6Smaya      __gen_uint(values->IncludeVertexHandles, 10, 10) |
327910e230b6Smaya      __gen_uint(values->VertexURBEntryReadLength, 11, 16) |
328010e230b6Smaya      __gen_uint(values->OutputTopology, 17, 22) |
328110e230b6Smaya      __gen_uint(values->OutputVertexSize, 23, 28);
328210e230b6Smaya
328310e230b6Smaya   dw[7] =
328410e230b6Smaya      __gen_uint(values->Enable, 0, 0) |
328510e230b6Smaya      __gen_uint(values->DiscardAdjacency, 1, 1) |
328610e230b6Smaya      __gen_uint(values->ReorderMode, 2, 2) |
328710e230b6Smaya      __gen_uint(values->Hint, 3, 3) |
328810e230b6Smaya      __gen_uint(values->IncludePrimitiveID, 4, 4) |
328910e230b6Smaya      __gen_uint(values->InvocationsIncrementValue, 5, 9) |
329010e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
329110e230b6Smaya      __gen_uint(values->DispatchMode, 11, 12) |
329210e230b6Smaya      __gen_uint(values->DefaultStreamId, 13, 14) |
329310e230b6Smaya      __gen_uint(values->InstanceControl, 15, 19) |
329410e230b6Smaya      __gen_uint(values->ControlDataHeaderSize, 20, 23) |
329510e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 24, 31);
329610e230b6Smaya
329710e230b6Smaya   dw[8] =
329810e230b6Smaya      __gen_uint(values->StaticOutputVertexCount, 16, 26) |
329910e230b6Smaya      __gen_uint(values->StaticOutput, 30, 30) |
330010e230b6Smaya      __gen_uint(values->ControlDataFormat, 31, 31);
330110e230b6Smaya
330210e230b6Smaya   dw[9] =
330310e230b6Smaya      __gen_uint(values->UserClipDistanceCullTestEnableBitmask, 0, 7) |
330410e230b6Smaya      __gen_uint(values->UserClipDistanceClipTestEnableBitmask, 8, 15) |
330510e230b6Smaya      __gen_uint(values->VertexURBEntryOutputLength, 16, 20) |
330610e230b6Smaya      __gen_uint(values->VertexURBEntryOutputReadOffset, 21, 26);
330710e230b6Smaya}
330810e230b6Smaya
330910e230b6Smaya#define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length      5
331010e230b6Smaya#define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length_bias      2
331110e230b6Smaya#define GEN8_3DSTATE_HIER_DEPTH_BUFFER_header   \
331210e230b6Smaya   .DWordLength                         =      3,  \
331310e230b6Smaya   ._3DCommandSubOpcode                 =      7,  \
331410e230b6Smaya   ._3DCommandOpcode                    =      0,  \
331510e230b6Smaya   .CommandSubType                      =      3,  \
331610e230b6Smaya   .CommandType                         =      3
331710e230b6Smaya
331810e230b6Smayastruct GEN8_3DSTATE_HIER_DEPTH_BUFFER {
331910e230b6Smaya   uint32_t                             DWordLength;
332010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
332110e230b6Smaya   uint32_t                             _3DCommandOpcode;
332210e230b6Smaya   uint32_t                             CommandSubType;
332310e230b6Smaya   uint32_t                             CommandType;
332410e230b6Smaya   uint32_t                             SurfacePitch;
332510e230b6Smaya   uint32_t                             MOCS;
332610e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
332710e230b6Smaya   uint32_t                             SurfaceQPitch;
332810e230b6Smaya};
332910e230b6Smaya
333010e230b6Smayastatic inline void
333110e230b6SmayaGEN8_3DSTATE_HIER_DEPTH_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
333210e230b6Smaya                                    __attribute__((unused)) void * restrict dst,
333310e230b6Smaya                                    __attribute__((unused)) const struct GEN8_3DSTATE_HIER_DEPTH_BUFFER * restrict values)
333410e230b6Smaya{
333510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
333610e230b6Smaya
333710e230b6Smaya   dw[0] =
333810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
333910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
334010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
334110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
334210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
334310e230b6Smaya
334410e230b6Smaya   dw[1] =
334510e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 16) |
334610e230b6Smaya      __gen_uint(values->MOCS, 25, 31);
334710e230b6Smaya
334810e230b6Smaya   const uint64_t v2_address =
334910e230b6Smaya      __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0);
335010e230b6Smaya   dw[2] = v2_address;
335110e230b6Smaya   dw[3] = v2_address >> 32;
335210e230b6Smaya
335310e230b6Smaya   dw[4] =
335410e230b6Smaya      __gen_uint(values->SurfaceQPitch, 0, 14);
335510e230b6Smaya}
335610e230b6Smaya
335710e230b6Smaya#define GEN8_3DSTATE_HS_length                 9
335810e230b6Smaya#define GEN8_3DSTATE_HS_length_bias            2
335910e230b6Smaya#define GEN8_3DSTATE_HS_header                  \
336010e230b6Smaya   .DWordLength                         =      7,  \
336110e230b6Smaya   ._3DCommandSubOpcode                 =     27,  \
336210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
336310e230b6Smaya   .CommandSubType                      =      3,  \
336410e230b6Smaya   .CommandType                         =      3
336510e230b6Smaya
336610e230b6Smayastruct GEN8_3DSTATE_HS {
336710e230b6Smaya   uint32_t                             DWordLength;
336810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
336910e230b6Smaya   uint32_t                             _3DCommandOpcode;
337010e230b6Smaya   uint32_t                             CommandSubType;
337110e230b6Smaya   uint32_t                             CommandType;
337210e230b6Smaya   bool                                 SoftwareExceptionEnable;
337310e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
337410e230b6Smaya   uint32_t                             FloatingPointMode;
337510e230b6Smaya#define IEEE754                                  0
337610e230b6Smaya#define alternate                                1
337710e230b6Smaya   uint32_t                             ThreadDispatchPriority;
337810e230b6Smaya#define High                                     1
337910e230b6Smaya   uint32_t                             BindingTableEntryCount;
338010e230b6Smaya   uint32_t                             SamplerCount;
338110e230b6Smaya#define NoSamplers                               0
338210e230b6Smaya#define _14Samplers                              1
338310e230b6Smaya#define _58Samplers                              2
338410e230b6Smaya#define _912Samplers                             3
338510e230b6Smaya#define _1316Samplers                            4
338610e230b6Smaya   uint32_t                             InstanceCount;
338710e230b6Smaya   uint32_t                             MaximumNumberofThreads;
338810e230b6Smaya   bool                                 StatisticsEnable;
338910e230b6Smaya   bool                                 Enable;
339010e230b6Smaya   uint64_t                             KernelStartPointer;
339110e230b6Smaya   uint32_t                             PerThreadScratchSpace;
339210e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
339310e230b6Smaya   uint32_t                             VertexURBEntryReadOffset;
339410e230b6Smaya   uint32_t                             VertexURBEntryReadLength;
339510e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForURBData;
339610e230b6Smaya   bool                                 IncludeVertexHandles;
339710e230b6Smaya   bool                                 AccessesUAV;
339810e230b6Smaya   bool                                 VectorMaskEnable;
339910e230b6Smaya   bool                                 SingleProgramFlow;
340010e230b6Smaya};
340110e230b6Smaya
340210e230b6Smayastatic inline void
340310e230b6SmayaGEN8_3DSTATE_HS_pack(__attribute__((unused)) __gen_user_data *data,
340410e230b6Smaya                     __attribute__((unused)) void * restrict dst,
340510e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_HS * restrict values)
340610e230b6Smaya{
340710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
340810e230b6Smaya
340910e230b6Smaya   dw[0] =
341010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
341110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
341210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
341310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
341410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
341510e230b6Smaya
341610e230b6Smaya   dw[1] =
341710e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 12, 12) |
341810e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
341910e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
342010e230b6Smaya      __gen_uint(values->ThreadDispatchPriority, 17, 17) |
342110e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
342210e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29);
342310e230b6Smaya
342410e230b6Smaya   dw[2] =
342510e230b6Smaya      __gen_uint(values->InstanceCount, 0, 3) |
342610e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 8, 16) |
342710e230b6Smaya      __gen_uint(values->StatisticsEnable, 29, 29) |
342810e230b6Smaya      __gen_uint(values->Enable, 31, 31);
342910e230b6Smaya
343010e230b6Smaya   const uint64_t v3 =
343110e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 63);
343210e230b6Smaya   dw[3] = v3;
343310e230b6Smaya   dw[4] = v3 >> 32;
343410e230b6Smaya
343510e230b6Smaya   const uint64_t v5 =
343610e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
343710e230b6Smaya   const uint64_t v5_address =
343810e230b6Smaya      __gen_combine_address(data, &dw[5], values->ScratchSpaceBasePointer, v5);
343910e230b6Smaya   dw[5] = v5_address;
344010e230b6Smaya   dw[6] = (v5_address >> 32) | (v5 >> 32);
344110e230b6Smaya
344210e230b6Smaya   dw[7] =
344310e230b6Smaya      __gen_uint(values->VertexURBEntryReadOffset, 4, 9) |
344410e230b6Smaya      __gen_uint(values->VertexURBEntryReadLength, 11, 16) |
344510e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForURBData, 19, 23) |
344610e230b6Smaya      __gen_uint(values->IncludeVertexHandles, 24, 24) |
344710e230b6Smaya      __gen_uint(values->AccessesUAV, 25, 25) |
344810e230b6Smaya      __gen_uint(values->VectorMaskEnable, 26, 26) |
344910e230b6Smaya      __gen_uint(values->SingleProgramFlow, 27, 27);
345010e230b6Smaya
345110e230b6Smaya   dw[8] = 0;
345210e230b6Smaya}
345310e230b6Smaya
345410e230b6Smaya#define GEN8_3DSTATE_INDEX_BUFFER_length       5
345510e230b6Smaya#define GEN8_3DSTATE_INDEX_BUFFER_length_bias      2
345610e230b6Smaya#define GEN8_3DSTATE_INDEX_BUFFER_header        \
345710e230b6Smaya   .DWordLength                         =      3,  \
345810e230b6Smaya   ._3DCommandSubOpcode                 =     10,  \
345910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
346010e230b6Smaya   .CommandSubType                      =      3,  \
346110e230b6Smaya   .CommandType                         =      3
346210e230b6Smaya
346310e230b6Smayastruct GEN8_3DSTATE_INDEX_BUFFER {
346410e230b6Smaya   uint32_t                             DWordLength;
346510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
346610e230b6Smaya   uint32_t                             _3DCommandOpcode;
346710e230b6Smaya   uint32_t                             CommandSubType;
346810e230b6Smaya   uint32_t                             CommandType;
346910e230b6Smaya   uint32_t                             MOCS;
347010e230b6Smaya   uint32_t                             IndexFormat;
347110e230b6Smaya#define INDEX_BYTE                               0
347210e230b6Smaya#define INDEX_WORD                               1
347310e230b6Smaya#define INDEX_DWORD                              2
347410e230b6Smaya   __gen_address_type                   BufferStartingAddress;
347510e230b6Smaya   uint32_t                             BufferSize;
347610e230b6Smaya};
347710e230b6Smaya
347810e230b6Smayastatic inline void
347910e230b6SmayaGEN8_3DSTATE_INDEX_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
348010e230b6Smaya                               __attribute__((unused)) void * restrict dst,
348110e230b6Smaya                               __attribute__((unused)) const struct GEN8_3DSTATE_INDEX_BUFFER * restrict values)
348210e230b6Smaya{
348310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
348410e230b6Smaya
348510e230b6Smaya   dw[0] =
348610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
348710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
348810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
348910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
349010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
349110e230b6Smaya
349210e230b6Smaya   dw[1] =
349310e230b6Smaya      __gen_uint(values->MOCS, 0, 6) |
349410e230b6Smaya      __gen_uint(values->IndexFormat, 8, 9);
349510e230b6Smaya
349610e230b6Smaya   const uint64_t v2_address =
349710e230b6Smaya      __gen_combine_address(data, &dw[2], values->BufferStartingAddress, 0);
349810e230b6Smaya   dw[2] = v2_address;
349910e230b6Smaya   dw[3] = v2_address >> 32;
350010e230b6Smaya
350110e230b6Smaya   dw[4] =
350210e230b6Smaya      __gen_uint(values->BufferSize, 0, 31);
350310e230b6Smaya}
350410e230b6Smaya
350510e230b6Smaya#define GEN8_3DSTATE_LINE_STIPPLE_length       3
350610e230b6Smaya#define GEN8_3DSTATE_LINE_STIPPLE_length_bias      2
350710e230b6Smaya#define GEN8_3DSTATE_LINE_STIPPLE_header        \
350810e230b6Smaya   .DWordLength                         =      1,  \
350910e230b6Smaya   ._3DCommandSubOpcode                 =      8,  \
351010e230b6Smaya   ._3DCommandOpcode                    =      1,  \
351110e230b6Smaya   .CommandSubType                      =      3,  \
351210e230b6Smaya   .CommandType                         =      3
351310e230b6Smaya
351410e230b6Smayastruct GEN8_3DSTATE_LINE_STIPPLE {
351510e230b6Smaya   uint32_t                             DWordLength;
351610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
351710e230b6Smaya   uint32_t                             _3DCommandOpcode;
351810e230b6Smaya   uint32_t                             CommandSubType;
351910e230b6Smaya   uint32_t                             CommandType;
352010e230b6Smaya   uint32_t                             LineStipplePattern;
352110e230b6Smaya   uint32_t                             CurrentStippleIndex;
352210e230b6Smaya   uint32_t                             CurrentRepeatCounter;
352310e230b6Smaya   bool                                 ModifyEnableCurrentRepeatCounterCurrentStippleIndex;
352410e230b6Smaya   uint32_t                             LineStippleRepeatCount;
352510e230b6Smaya   float                                LineStippleInverseRepeatCount;
352610e230b6Smaya};
352710e230b6Smaya
352810e230b6Smayastatic inline void
352910e230b6SmayaGEN8_3DSTATE_LINE_STIPPLE_pack(__attribute__((unused)) __gen_user_data *data,
353010e230b6Smaya                               __attribute__((unused)) void * restrict dst,
353110e230b6Smaya                               __attribute__((unused)) const struct GEN8_3DSTATE_LINE_STIPPLE * restrict values)
353210e230b6Smaya{
353310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
353410e230b6Smaya
353510e230b6Smaya   dw[0] =
353610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
353710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
353810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
353910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
354010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
354110e230b6Smaya
354210e230b6Smaya   dw[1] =
354310e230b6Smaya      __gen_uint(values->LineStipplePattern, 0, 15) |
354410e230b6Smaya      __gen_uint(values->CurrentStippleIndex, 16, 19) |
354510e230b6Smaya      __gen_uint(values->CurrentRepeatCounter, 21, 29) |
354610e230b6Smaya      __gen_uint(values->ModifyEnableCurrentRepeatCounterCurrentStippleIndex, 31, 31);
354710e230b6Smaya
354810e230b6Smaya   dw[2] =
354910e230b6Smaya      __gen_uint(values->LineStippleRepeatCount, 0, 8) |
355010e230b6Smaya      __gen_ufixed(values->LineStippleInverseRepeatCount, 15, 31, 16);
355110e230b6Smaya}
355210e230b6Smaya
355310e230b6Smaya#define GEN8_3DSTATE_MONOFILTER_SIZE_length      2
355410e230b6Smaya#define GEN8_3DSTATE_MONOFILTER_SIZE_length_bias      2
355510e230b6Smaya#define GEN8_3DSTATE_MONOFILTER_SIZE_header     \
355610e230b6Smaya   .DWordLength                         =      0,  \
355710e230b6Smaya   ._3DCommandSubOpcode                 =     17,  \
355810e230b6Smaya   ._3DCommandOpcode                    =      1,  \
355910e230b6Smaya   .CommandSubType                      =      3,  \
356010e230b6Smaya   .CommandType                         =      3
356110e230b6Smaya
356210e230b6Smayastruct GEN8_3DSTATE_MONOFILTER_SIZE {
356310e230b6Smaya   uint32_t                             DWordLength;
356410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
356510e230b6Smaya   uint32_t                             _3DCommandOpcode;
356610e230b6Smaya   uint32_t                             CommandSubType;
356710e230b6Smaya   uint32_t                             CommandType;
356810e230b6Smaya   uint32_t                             MonochromeFilterHeight;
356910e230b6Smaya   uint32_t                             MonochromeFilterWidth;
357010e230b6Smaya};
357110e230b6Smaya
357210e230b6Smayastatic inline void
357310e230b6SmayaGEN8_3DSTATE_MONOFILTER_SIZE_pack(__attribute__((unused)) __gen_user_data *data,
357410e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
357510e230b6Smaya                                  __attribute__((unused)) const struct GEN8_3DSTATE_MONOFILTER_SIZE * restrict values)
357610e230b6Smaya{
357710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
357810e230b6Smaya
357910e230b6Smaya   dw[0] =
358010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
358110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
358210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
358310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
358410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
358510e230b6Smaya
358610e230b6Smaya   dw[1] =
358710e230b6Smaya      __gen_uint(values->MonochromeFilterHeight, 0, 2) |
358810e230b6Smaya      __gen_uint(values->MonochromeFilterWidth, 3, 5);
358910e230b6Smaya}
359010e230b6Smaya
359110e230b6Smaya#define GEN8_3DSTATE_MULTISAMPLE_length        2
359210e230b6Smaya#define GEN8_3DSTATE_MULTISAMPLE_length_bias      2
359310e230b6Smaya#define GEN8_3DSTATE_MULTISAMPLE_header         \
359410e230b6Smaya   .DWordLength                         =      0,  \
359510e230b6Smaya   ._3DCommandSubOpcode                 =     13,  \
359610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
359710e230b6Smaya   .CommandSubType                      =      3,  \
359810e230b6Smaya   .CommandType                         =      3
359910e230b6Smaya
360010e230b6Smayastruct GEN8_3DSTATE_MULTISAMPLE {
360110e230b6Smaya   uint32_t                             DWordLength;
360210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
360310e230b6Smaya   uint32_t                             _3DCommandOpcode;
360410e230b6Smaya   uint32_t                             CommandSubType;
360510e230b6Smaya   uint32_t                             CommandType;
360610e230b6Smaya   uint32_t                             NumberofMultisamples;
360710e230b6Smaya   uint32_t                             PixelLocation;
360810e230b6Smaya#define CENTER                                   0
360910e230b6Smaya#define UL_CORNER                                1
361010e230b6Smaya   bool                                 PixelPositionOffsetEnable;
361110e230b6Smaya};
361210e230b6Smaya
361310e230b6Smayastatic inline void
361410e230b6SmayaGEN8_3DSTATE_MULTISAMPLE_pack(__attribute__((unused)) __gen_user_data *data,
361510e230b6Smaya                              __attribute__((unused)) void * restrict dst,
361610e230b6Smaya                              __attribute__((unused)) const struct GEN8_3DSTATE_MULTISAMPLE * restrict values)
361710e230b6Smaya{
361810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
361910e230b6Smaya
362010e230b6Smaya   dw[0] =
362110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
362210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
362310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
362410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
362510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
362610e230b6Smaya
362710e230b6Smaya   dw[1] =
362810e230b6Smaya      __gen_uint(values->NumberofMultisamples, 1, 3) |
362910e230b6Smaya      __gen_uint(values->PixelLocation, 4, 4) |
363010e230b6Smaya      __gen_uint(values->PixelPositionOffsetEnable, 5, 5);
363110e230b6Smaya}
363210e230b6Smaya
363310e230b6Smaya#define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length      2
363410e230b6Smaya#define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length_bias      2
363510e230b6Smaya#define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_header \
363610e230b6Smaya   .DWordLength                         =      0,  \
363710e230b6Smaya   ._3DCommandSubOpcode                 =      6,  \
363810e230b6Smaya   ._3DCommandOpcode                    =      1,  \
363910e230b6Smaya   .CommandSubType                      =      3,  \
364010e230b6Smaya   .CommandType                         =      3
364110e230b6Smaya
364210e230b6Smayastruct GEN8_3DSTATE_POLY_STIPPLE_OFFSET {
364310e230b6Smaya   uint32_t                             DWordLength;
364410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
364510e230b6Smaya   uint32_t                             _3DCommandOpcode;
364610e230b6Smaya   uint32_t                             CommandSubType;
364710e230b6Smaya   uint32_t                             CommandType;
364810e230b6Smaya   uint32_t                             PolygonStippleYOffset;
364910e230b6Smaya   uint32_t                             PolygonStippleXOffset;
365010e230b6Smaya};
365110e230b6Smaya
365210e230b6Smayastatic inline void
365310e230b6SmayaGEN8_3DSTATE_POLY_STIPPLE_OFFSET_pack(__attribute__((unused)) __gen_user_data *data,
365410e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
365510e230b6Smaya                                      __attribute__((unused)) const struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET * restrict values)
365610e230b6Smaya{
365710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
365810e230b6Smaya
365910e230b6Smaya   dw[0] =
366010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
366110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
366210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
366310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
366410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
366510e230b6Smaya
366610e230b6Smaya   dw[1] =
366710e230b6Smaya      __gen_uint(values->PolygonStippleYOffset, 0, 4) |
366810e230b6Smaya      __gen_uint(values->PolygonStippleXOffset, 8, 12);
366910e230b6Smaya}
367010e230b6Smaya
367110e230b6Smaya#define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length     33
367210e230b6Smaya#define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length_bias      2
367310e230b6Smaya#define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_header\
367410e230b6Smaya   .DWordLength                         =     31,  \
367510e230b6Smaya   ._3DCommandSubOpcode                 =      7,  \
367610e230b6Smaya   ._3DCommandOpcode                    =      1,  \
367710e230b6Smaya   .CommandSubType                      =      3,  \
367810e230b6Smaya   .CommandType                         =      3
367910e230b6Smaya
368010e230b6Smayastruct GEN8_3DSTATE_POLY_STIPPLE_PATTERN {
368110e230b6Smaya   uint32_t                             DWordLength;
368210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
368310e230b6Smaya   uint32_t                             _3DCommandOpcode;
368410e230b6Smaya   uint32_t                             CommandSubType;
368510e230b6Smaya   uint32_t                             CommandType;
368610e230b6Smaya   uint32_t                             PatternRow[32];
368710e230b6Smaya};
368810e230b6Smaya
368910e230b6Smayastatic inline void
369010e230b6SmayaGEN8_3DSTATE_POLY_STIPPLE_PATTERN_pack(__attribute__((unused)) __gen_user_data *data,
369110e230b6Smaya                                       __attribute__((unused)) void * restrict dst,
369210e230b6Smaya                                       __attribute__((unused)) const struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN * restrict values)
369310e230b6Smaya{
369410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
369510e230b6Smaya
369610e230b6Smaya   dw[0] =
369710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
369810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
369910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
370010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
370110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
370210e230b6Smaya
370310e230b6Smaya   dw[1] =
370410e230b6Smaya      __gen_uint(values->PatternRow[0], 0, 31);
370510e230b6Smaya
370610e230b6Smaya   dw[2] =
370710e230b6Smaya      __gen_uint(values->PatternRow[1], 0, 31);
370810e230b6Smaya
370910e230b6Smaya   dw[3] =
371010e230b6Smaya      __gen_uint(values->PatternRow[2], 0, 31);
371110e230b6Smaya
371210e230b6Smaya   dw[4] =
371310e230b6Smaya      __gen_uint(values->PatternRow[3], 0, 31);
371410e230b6Smaya
371510e230b6Smaya   dw[5] =
371610e230b6Smaya      __gen_uint(values->PatternRow[4], 0, 31);
371710e230b6Smaya
371810e230b6Smaya   dw[6] =
371910e230b6Smaya      __gen_uint(values->PatternRow[5], 0, 31);
372010e230b6Smaya
372110e230b6Smaya   dw[7] =
372210e230b6Smaya      __gen_uint(values->PatternRow[6], 0, 31);
372310e230b6Smaya
372410e230b6Smaya   dw[8] =
372510e230b6Smaya      __gen_uint(values->PatternRow[7], 0, 31);
372610e230b6Smaya
372710e230b6Smaya   dw[9] =
372810e230b6Smaya      __gen_uint(values->PatternRow[8], 0, 31);
372910e230b6Smaya
373010e230b6Smaya   dw[10] =
373110e230b6Smaya      __gen_uint(values->PatternRow[9], 0, 31);
373210e230b6Smaya
373310e230b6Smaya   dw[11] =
373410e230b6Smaya      __gen_uint(values->PatternRow[10], 0, 31);
373510e230b6Smaya
373610e230b6Smaya   dw[12] =
373710e230b6Smaya      __gen_uint(values->PatternRow[11], 0, 31);
373810e230b6Smaya
373910e230b6Smaya   dw[13] =
374010e230b6Smaya      __gen_uint(values->PatternRow[12], 0, 31);
374110e230b6Smaya
374210e230b6Smaya   dw[14] =
374310e230b6Smaya      __gen_uint(values->PatternRow[13], 0, 31);
374410e230b6Smaya
374510e230b6Smaya   dw[15] =
374610e230b6Smaya      __gen_uint(values->PatternRow[14], 0, 31);
374710e230b6Smaya
374810e230b6Smaya   dw[16] =
374910e230b6Smaya      __gen_uint(values->PatternRow[15], 0, 31);
375010e230b6Smaya
375110e230b6Smaya   dw[17] =
375210e230b6Smaya      __gen_uint(values->PatternRow[16], 0, 31);
375310e230b6Smaya
375410e230b6Smaya   dw[18] =
375510e230b6Smaya      __gen_uint(values->PatternRow[17], 0, 31);
375610e230b6Smaya
375710e230b6Smaya   dw[19] =
375810e230b6Smaya      __gen_uint(values->PatternRow[18], 0, 31);
375910e230b6Smaya
376010e230b6Smaya   dw[20] =
376110e230b6Smaya      __gen_uint(values->PatternRow[19], 0, 31);
376210e230b6Smaya
376310e230b6Smaya   dw[21] =
376410e230b6Smaya      __gen_uint(values->PatternRow[20], 0, 31);
376510e230b6Smaya
376610e230b6Smaya   dw[22] =
376710e230b6Smaya      __gen_uint(values->PatternRow[21], 0, 31);
376810e230b6Smaya
376910e230b6Smaya   dw[23] =
377010e230b6Smaya      __gen_uint(values->PatternRow[22], 0, 31);
377110e230b6Smaya
377210e230b6Smaya   dw[24] =
377310e230b6Smaya      __gen_uint(values->PatternRow[23], 0, 31);
377410e230b6Smaya
377510e230b6Smaya   dw[25] =
377610e230b6Smaya      __gen_uint(values->PatternRow[24], 0, 31);
377710e230b6Smaya
377810e230b6Smaya   dw[26] =
377910e230b6Smaya      __gen_uint(values->PatternRow[25], 0, 31);
378010e230b6Smaya
378110e230b6Smaya   dw[27] =
378210e230b6Smaya      __gen_uint(values->PatternRow[26], 0, 31);
378310e230b6Smaya
378410e230b6Smaya   dw[28] =
378510e230b6Smaya      __gen_uint(values->PatternRow[27], 0, 31);
378610e230b6Smaya
378710e230b6Smaya   dw[29] =
378810e230b6Smaya      __gen_uint(values->PatternRow[28], 0, 31);
378910e230b6Smaya
379010e230b6Smaya   dw[30] =
379110e230b6Smaya      __gen_uint(values->PatternRow[29], 0, 31);
379210e230b6Smaya
379310e230b6Smaya   dw[31] =
379410e230b6Smaya      __gen_uint(values->PatternRow[30], 0, 31);
379510e230b6Smaya
379610e230b6Smaya   dw[32] =
379710e230b6Smaya      __gen_uint(values->PatternRow[31], 0, 31);
379810e230b6Smaya}
379910e230b6Smaya
380010e230b6Smaya#define GEN8_3DSTATE_PS_length                12
380110e230b6Smaya#define GEN8_3DSTATE_PS_length_bias            2
380210e230b6Smaya#define GEN8_3DSTATE_PS_header                  \
380310e230b6Smaya   .DWordLength                         =     10,  \
380410e230b6Smaya   ._3DCommandSubOpcode                 =     32,  \
380510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
380610e230b6Smaya   .CommandSubType                      =      3,  \
380710e230b6Smaya   .CommandType                         =      3
380810e230b6Smaya
380910e230b6Smayastruct GEN8_3DSTATE_PS {
381010e230b6Smaya   uint32_t                             DWordLength;
381110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
381210e230b6Smaya   uint32_t                             _3DCommandOpcode;
381310e230b6Smaya   uint32_t                             CommandSubType;
381410e230b6Smaya   uint32_t                             CommandType;
381510e230b6Smaya   uint64_t                             KernelStartPointer0;
381610e230b6Smaya   bool                                 SoftwareExceptionEnable;
381710e230b6Smaya   bool                                 MaskStackExceptionEnable;
381810e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
381910e230b6Smaya   uint32_t                             RoundingMode;
382010e230b6Smaya#define RTNE                                     0
382110e230b6Smaya#define RU                                       1
382210e230b6Smaya#define RD                                       2
382310e230b6Smaya#define RTZ                                      3
382410e230b6Smaya   uint32_t                             FloatingPointMode;
382510e230b6Smaya#define IEEE754                                  0
382610e230b6Smaya#define Alternate                                1
382710e230b6Smaya   uint32_t                             ThreadDispatchPriority;
382810e230b6Smaya#define High                                     1
382910e230b6Smaya   uint32_t                             BindingTableEntryCount;
383010e230b6Smaya   uint32_t                             SinglePrecisionDenormalMode;
383110e230b6Smaya#define FlushedtoZero                            0
383210e230b6Smaya#define Retained                                 1
383310e230b6Smaya   uint32_t                             SamplerCount;
383410e230b6Smaya#define NoSamplers                               0
383510e230b6Smaya#define _14Samplers                              1
383610e230b6Smaya#define _58Samplers                              2
383710e230b6Smaya#define _912Samplers                             3
383810e230b6Smaya#define _1316Samplers                            4
383910e230b6Smaya   bool                                 VectorMaskEnable;
384010e230b6Smaya   bool                                 SingleProgramFlow;
384110e230b6Smaya   uint32_t                             PerThreadScratchSpace;
384210e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
384310e230b6Smaya   bool                                 _8PixelDispatchEnable;
384410e230b6Smaya   bool                                 _16PixelDispatchEnable;
384510e230b6Smaya   bool                                 _32PixelDispatchEnable;
384610e230b6Smaya   uint32_t                             PositionXYOffsetSelect;
384710e230b6Smaya#define POSOFFSET_NONE                           0
384810e230b6Smaya#define POSOFFSET_CENTROID                       2
384910e230b6Smaya#define POSOFFSET_SAMPLE                         3
385010e230b6Smaya   bool                                 RenderTargetResolveEnable;
385110e230b6Smaya   bool                                 RenderTargetFastClearEnable;
385210e230b6Smaya   bool                                 PushConstantEnable;
385310e230b6Smaya   uint32_t                             MaximumNumberofThreadsPerPSD;
385410e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForConstantSetupData2;
385510e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForConstantSetupData1;
385610e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForConstantSetupData0;
385710e230b6Smaya   uint64_t                             KernelStartPointer1;
385810e230b6Smaya   uint64_t                             KernelStartPointer2;
385910e230b6Smaya};
386010e230b6Smaya
386110e230b6Smayastatic inline void
386210e230b6SmayaGEN8_3DSTATE_PS_pack(__attribute__((unused)) __gen_user_data *data,
386310e230b6Smaya                     __attribute__((unused)) void * restrict dst,
386410e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_PS * restrict values)
386510e230b6Smaya{
386610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
386710e230b6Smaya
386810e230b6Smaya   dw[0] =
386910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
387010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
387110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
387210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
387310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
387410e230b6Smaya
387510e230b6Smaya   const uint64_t v1 =
387610e230b6Smaya      __gen_offset(values->KernelStartPointer0, 6, 63);
387710e230b6Smaya   dw[1] = v1;
387810e230b6Smaya   dw[2] = v1 >> 32;
387910e230b6Smaya
388010e230b6Smaya   dw[3] =
388110e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
388210e230b6Smaya      __gen_uint(values->MaskStackExceptionEnable, 11, 11) |
388310e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
388410e230b6Smaya      __gen_uint(values->RoundingMode, 14, 15) |
388510e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
388610e230b6Smaya      __gen_uint(values->ThreadDispatchPriority, 17, 17) |
388710e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
388810e230b6Smaya      __gen_uint(values->SinglePrecisionDenormalMode, 26, 26) |
388910e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29) |
389010e230b6Smaya      __gen_uint(values->VectorMaskEnable, 30, 30) |
389110e230b6Smaya      __gen_uint(values->SingleProgramFlow, 31, 31);
389210e230b6Smaya
389310e230b6Smaya   const uint64_t v4 =
389410e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
389510e230b6Smaya   const uint64_t v4_address =
389610e230b6Smaya      __gen_combine_address(data, &dw[4], values->ScratchSpaceBasePointer, v4);
389710e230b6Smaya   dw[4] = v4_address;
389810e230b6Smaya   dw[5] = (v4_address >> 32) | (v4 >> 32);
389910e230b6Smaya
390010e230b6Smaya   dw[6] =
390110e230b6Smaya      __gen_uint(values->_8PixelDispatchEnable, 0, 0) |
390210e230b6Smaya      __gen_uint(values->_16PixelDispatchEnable, 1, 1) |
390310e230b6Smaya      __gen_uint(values->_32PixelDispatchEnable, 2, 2) |
390410e230b6Smaya      __gen_uint(values->PositionXYOffsetSelect, 3, 4) |
390510e230b6Smaya      __gen_uint(values->RenderTargetResolveEnable, 6, 6) |
390610e230b6Smaya      __gen_uint(values->RenderTargetFastClearEnable, 8, 8) |
390710e230b6Smaya      __gen_uint(values->PushConstantEnable, 11, 11) |
390810e230b6Smaya      __gen_uint(values->MaximumNumberofThreadsPerPSD, 23, 31);
390910e230b6Smaya
391010e230b6Smaya   dw[7] =
391110e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData2, 0, 6) |
391210e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData1, 8, 14) |
391310e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData0, 16, 22);
391410e230b6Smaya
391510e230b6Smaya   const uint64_t v8 =
391610e230b6Smaya      __gen_offset(values->KernelStartPointer1, 6, 63);
391710e230b6Smaya   dw[8] = v8;
391810e230b6Smaya   dw[9] = v8 >> 32;
391910e230b6Smaya
392010e230b6Smaya   const uint64_t v10 =
392110e230b6Smaya      __gen_offset(values->KernelStartPointer2, 6, 63);
392210e230b6Smaya   dw[10] = v10;
392310e230b6Smaya   dw[11] = v10 >> 32;
392410e230b6Smaya}
392510e230b6Smaya
392610e230b6Smaya#define GEN8_3DSTATE_PS_BLEND_length           2
392710e230b6Smaya#define GEN8_3DSTATE_PS_BLEND_length_bias      2
392810e230b6Smaya#define GEN8_3DSTATE_PS_BLEND_header            \
392910e230b6Smaya   .DWordLength                         =      0,  \
393010e230b6Smaya   ._3DCommandSubOpcode                 =     77,  \
393110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
393210e230b6Smaya   .CommandSubType                      =      3,  \
393310e230b6Smaya   .CommandType                         =      3
393410e230b6Smaya
393510e230b6Smayastruct GEN8_3DSTATE_PS_BLEND {
393610e230b6Smaya   uint32_t                             DWordLength;
393710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
393810e230b6Smaya   uint32_t                             _3DCommandOpcode;
393910e230b6Smaya   uint32_t                             CommandSubType;
394010e230b6Smaya   uint32_t                             CommandType;
394110e230b6Smaya   bool                                 IndependentAlphaBlendEnable;
394210e230b6Smaya   bool                                 AlphaTestEnable;
394310e230b6Smaya   uint32_t                             DestinationBlendFactor;
394410e230b6Smaya   uint32_t                             SourceBlendFactor;
394510e230b6Smaya   uint32_t                             DestinationAlphaBlendFactor;
394610e230b6Smaya   uint32_t                             SourceAlphaBlendFactor;
394710e230b6Smaya   bool                                 ColorBufferBlendEnable;
394810e230b6Smaya   bool                                 HasWriteableRT;
394910e230b6Smaya   bool                                 AlphaToCoverageEnable;
395010e230b6Smaya};
395110e230b6Smaya
395210e230b6Smayastatic inline void
395310e230b6SmayaGEN8_3DSTATE_PS_BLEND_pack(__attribute__((unused)) __gen_user_data *data,
395410e230b6Smaya                           __attribute__((unused)) void * restrict dst,
395510e230b6Smaya                           __attribute__((unused)) const struct GEN8_3DSTATE_PS_BLEND * restrict values)
395610e230b6Smaya{
395710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
395810e230b6Smaya
395910e230b6Smaya   dw[0] =
396010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
396110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
396210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
396310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
396410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
396510e230b6Smaya
396610e230b6Smaya   dw[1] =
396710e230b6Smaya      __gen_uint(values->IndependentAlphaBlendEnable, 7, 7) |
396810e230b6Smaya      __gen_uint(values->AlphaTestEnable, 8, 8) |
396910e230b6Smaya      __gen_uint(values->DestinationBlendFactor, 9, 13) |
397010e230b6Smaya      __gen_uint(values->SourceBlendFactor, 14, 18) |
397110e230b6Smaya      __gen_uint(values->DestinationAlphaBlendFactor, 19, 23) |
397210e230b6Smaya      __gen_uint(values->SourceAlphaBlendFactor, 24, 28) |
397310e230b6Smaya      __gen_uint(values->ColorBufferBlendEnable, 29, 29) |
397410e230b6Smaya      __gen_uint(values->HasWriteableRT, 30, 30) |
397510e230b6Smaya      __gen_uint(values->AlphaToCoverageEnable, 31, 31);
397610e230b6Smaya}
397710e230b6Smaya
397810e230b6Smaya#define GEN8_3DSTATE_PS_EXTRA_length           2
397910e230b6Smaya#define GEN8_3DSTATE_PS_EXTRA_length_bias      2
398010e230b6Smaya#define GEN8_3DSTATE_PS_EXTRA_header            \
398110e230b6Smaya   .DWordLength                         =      0,  \
398210e230b6Smaya   ._3DCommandSubOpcode                 =     79,  \
398310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
398410e230b6Smaya   .CommandSubType                      =      3,  \
398510e230b6Smaya   .CommandType                         =      3
398610e230b6Smaya
398710e230b6Smayastruct GEN8_3DSTATE_PS_EXTRA {
398810e230b6Smaya   uint32_t                             DWordLength;
398910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
399010e230b6Smaya   uint32_t                             _3DCommandOpcode;
399110e230b6Smaya   uint32_t                             CommandSubType;
399210e230b6Smaya   uint32_t                             CommandType;
399310e230b6Smaya   bool                                 PixelShaderUsesInputCoverageMask;
399410e230b6Smaya   bool                                 PixelShaderHasUAV;
399510e230b6Smaya   bool                                 PixelShaderIsPerSample;
399610e230b6Smaya   bool                                 PixelShaderDisablesAlphaToCoverage;
399710e230b6Smaya   bool                                 AttributeEnable;
399810e230b6Smaya   bool                                 PixelShaderUsesSourceW;
399910e230b6Smaya   bool                                 PixelShaderUsesSourceDepth;
400010e230b6Smaya   bool                                 ForceComputedDepth;
400110e230b6Smaya   uint32_t                             PixelShaderComputedDepthMode;
400210e230b6Smaya#define PSCDEPTH_OFF                             0
400310e230b6Smaya#define PSCDEPTH_ON                              1
400410e230b6Smaya#define PSCDEPTH_ON_GE                           2
400510e230b6Smaya#define PSCDEPTH_ON_LE                           3
400610e230b6Smaya   bool                                 PixelShaderKillsPixel;
400710e230b6Smaya   bool                                 oMaskPresenttoRenderTarget;
400810e230b6Smaya   bool                                 PixelShaderDoesnotwritetoRT;
400910e230b6Smaya   bool                                 PixelShaderValid;
401010e230b6Smaya};
401110e230b6Smaya
401210e230b6Smayastatic inline void
401310e230b6SmayaGEN8_3DSTATE_PS_EXTRA_pack(__attribute__((unused)) __gen_user_data *data,
401410e230b6Smaya                           __attribute__((unused)) void * restrict dst,
401510e230b6Smaya                           __attribute__((unused)) const struct GEN8_3DSTATE_PS_EXTRA * restrict values)
401610e230b6Smaya{
401710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
401810e230b6Smaya
401910e230b6Smaya   dw[0] =
402010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
402110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
402210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
402310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
402410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
402510e230b6Smaya
402610e230b6Smaya   dw[1] =
402710e230b6Smaya      __gen_uint(values->PixelShaderUsesInputCoverageMask, 1, 1) |
402810e230b6Smaya      __gen_uint(values->PixelShaderHasUAV, 2, 2) |
402910e230b6Smaya      __gen_uint(values->PixelShaderIsPerSample, 6, 6) |
403010e230b6Smaya      __gen_uint(values->PixelShaderDisablesAlphaToCoverage, 7, 7) |
403110e230b6Smaya      __gen_uint(values->AttributeEnable, 8, 8) |
403210e230b6Smaya      __gen_uint(values->PixelShaderUsesSourceW, 23, 23) |
403310e230b6Smaya      __gen_uint(values->PixelShaderUsesSourceDepth, 24, 24) |
403410e230b6Smaya      __gen_uint(values->ForceComputedDepth, 25, 25) |
403510e230b6Smaya      __gen_uint(values->PixelShaderComputedDepthMode, 26, 27) |
403610e230b6Smaya      __gen_uint(values->PixelShaderKillsPixel, 28, 28) |
403710e230b6Smaya      __gen_uint(values->oMaskPresenttoRenderTarget, 29, 29) |
403810e230b6Smaya      __gen_uint(values->PixelShaderDoesnotwritetoRT, 30, 30) |
403910e230b6Smaya      __gen_uint(values->PixelShaderValid, 31, 31);
404010e230b6Smaya}
404110e230b6Smaya
404210e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length      2
404310e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length_bias      2
404410e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_header\
404510e230b6Smaya   .DWordLength                         =      0,  \
404610e230b6Smaya   ._3DCommandSubOpcode                 =     20,  \
404710e230b6Smaya   ._3DCommandOpcode                    =      1,  \
404810e230b6Smaya   .CommandSubType                      =      3,  \
404910e230b6Smaya   .CommandType                         =      3
405010e230b6Smaya
405110e230b6Smayastruct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS {
405210e230b6Smaya   uint32_t                             DWordLength;
405310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
405410e230b6Smaya   uint32_t                             _3DCommandOpcode;
405510e230b6Smaya   uint32_t                             CommandSubType;
405610e230b6Smaya   uint32_t                             CommandType;
405710e230b6Smaya   uint32_t                             ConstantBufferSize;
405810e230b6Smaya   uint32_t                             ConstantBufferOffset;
405910e230b6Smaya};
406010e230b6Smaya
406110e230b6Smayastatic inline void
406210e230b6SmayaGEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_pack(__attribute__((unused)) __gen_user_data *data,
406310e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
406410e230b6Smaya                                         __attribute__((unused)) const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS * restrict values)
406510e230b6Smaya{
406610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
406710e230b6Smaya
406810e230b6Smaya   dw[0] =
406910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
407010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
407110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
407210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
407310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
407410e230b6Smaya
407510e230b6Smaya   dw[1] =
407610e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
407710e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
407810e230b6Smaya}
407910e230b6Smaya
408010e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length      2
408110e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length_bias      2
408210e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_header\
408310e230b6Smaya   .DWordLength                         =      0,  \
408410e230b6Smaya   ._3DCommandSubOpcode                 =     21,  \
408510e230b6Smaya   ._3DCommandOpcode                    =      1,  \
408610e230b6Smaya   .CommandSubType                      =      3,  \
408710e230b6Smaya   .CommandType                         =      3
408810e230b6Smaya
408910e230b6Smayastruct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS {
409010e230b6Smaya   uint32_t                             DWordLength;
409110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
409210e230b6Smaya   uint32_t                             _3DCommandOpcode;
409310e230b6Smaya   uint32_t                             CommandSubType;
409410e230b6Smaya   uint32_t                             CommandType;
409510e230b6Smaya   uint32_t                             ConstantBufferSize;
409610e230b6Smaya   uint32_t                             ConstantBufferOffset;
409710e230b6Smaya};
409810e230b6Smaya
409910e230b6Smayastatic inline void
410010e230b6SmayaGEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_pack(__attribute__((unused)) __gen_user_data *data,
410110e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
410210e230b6Smaya                                         __attribute__((unused)) const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS * restrict values)
410310e230b6Smaya{
410410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
410510e230b6Smaya
410610e230b6Smaya   dw[0] =
410710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
410810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
410910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
411010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
411110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
411210e230b6Smaya
411310e230b6Smaya   dw[1] =
411410e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
411510e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
411610e230b6Smaya}
411710e230b6Smaya
411810e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length      2
411910e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length_bias      2
412010e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_header\
412110e230b6Smaya   .DWordLength                         =      0,  \
412210e230b6Smaya   ._3DCommandSubOpcode                 =     19,  \
412310e230b6Smaya   ._3DCommandOpcode                    =      1,  \
412410e230b6Smaya   .CommandSubType                      =      3,  \
412510e230b6Smaya   .CommandType                         =      3
412610e230b6Smaya
412710e230b6Smayastruct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS {
412810e230b6Smaya   uint32_t                             DWordLength;
412910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
413010e230b6Smaya   uint32_t                             _3DCommandOpcode;
413110e230b6Smaya   uint32_t                             CommandSubType;
413210e230b6Smaya   uint32_t                             CommandType;
413310e230b6Smaya   uint32_t                             ConstantBufferSize;
413410e230b6Smaya   uint32_t                             ConstantBufferOffset;
413510e230b6Smaya};
413610e230b6Smaya
413710e230b6Smayastatic inline void
413810e230b6SmayaGEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_pack(__attribute__((unused)) __gen_user_data *data,
413910e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
414010e230b6Smaya                                         __attribute__((unused)) const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS * restrict values)
414110e230b6Smaya{
414210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
414310e230b6Smaya
414410e230b6Smaya   dw[0] =
414510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
414610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
414710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
414810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
414910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
415010e230b6Smaya
415110e230b6Smaya   dw[1] =
415210e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
415310e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
415410e230b6Smaya}
415510e230b6Smaya
415610e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length      2
415710e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length_bias      2
415810e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_header\
415910e230b6Smaya   .DWordLength                         =      0,  \
416010e230b6Smaya   ._3DCommandSubOpcode                 =     22,  \
416110e230b6Smaya   ._3DCommandOpcode                    =      1,  \
416210e230b6Smaya   .CommandSubType                      =      3,  \
416310e230b6Smaya   .CommandType                         =      3
416410e230b6Smaya
416510e230b6Smayastruct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS {
416610e230b6Smaya   uint32_t                             DWordLength;
416710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
416810e230b6Smaya   uint32_t                             _3DCommandOpcode;
416910e230b6Smaya   uint32_t                             CommandSubType;
417010e230b6Smaya   uint32_t                             CommandType;
417110e230b6Smaya   uint32_t                             ConstantBufferSize;
417210e230b6Smaya   uint32_t                             ConstantBufferOffset;
417310e230b6Smaya};
417410e230b6Smaya
417510e230b6Smayastatic inline void
417610e230b6SmayaGEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_pack(__attribute__((unused)) __gen_user_data *data,
417710e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
417810e230b6Smaya                                         __attribute__((unused)) const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS * restrict values)
417910e230b6Smaya{
418010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
418110e230b6Smaya
418210e230b6Smaya   dw[0] =
418310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
418410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
418510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
418610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
418710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
418810e230b6Smaya
418910e230b6Smaya   dw[1] =
419010e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
419110e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
419210e230b6Smaya}
419310e230b6Smaya
419410e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length      2
419510e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length_bias      2
419610e230b6Smaya#define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_header\
419710e230b6Smaya   .DWordLength                         =      0,  \
419810e230b6Smaya   ._3DCommandSubOpcode                 =     18,  \
419910e230b6Smaya   ._3DCommandOpcode                    =      1,  \
420010e230b6Smaya   .CommandSubType                      =      3,  \
420110e230b6Smaya   .CommandType                         =      3
420210e230b6Smaya
420310e230b6Smayastruct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS {
420410e230b6Smaya   uint32_t                             DWordLength;
420510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
420610e230b6Smaya   uint32_t                             _3DCommandOpcode;
420710e230b6Smaya   uint32_t                             CommandSubType;
420810e230b6Smaya   uint32_t                             CommandType;
420910e230b6Smaya   uint32_t                             ConstantBufferSize;
421010e230b6Smaya   uint32_t                             ConstantBufferOffset;
421110e230b6Smaya};
421210e230b6Smaya
421310e230b6Smayastatic inline void
421410e230b6SmayaGEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_pack(__attribute__((unused)) __gen_user_data *data,
421510e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
421610e230b6Smaya                                         __attribute__((unused)) const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS * restrict values)
421710e230b6Smaya{
421810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
421910e230b6Smaya
422010e230b6Smaya   dw[0] =
422110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
422210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
422310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
422410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
422510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
422610e230b6Smaya
422710e230b6Smaya   dw[1] =
422810e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
422910e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
423010e230b6Smaya}
423110e230b6Smaya
423210e230b6Smaya#define GEN8_3DSTATE_RASTER_length             5
423310e230b6Smaya#define GEN8_3DSTATE_RASTER_length_bias        2
423410e230b6Smaya#define GEN8_3DSTATE_RASTER_header              \
423510e230b6Smaya   .DWordLength                         =      3,  \
423610e230b6Smaya   ._3DCommandSubOpcode                 =     80,  \
423710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
423810e230b6Smaya   .CommandSubType                      =      3,  \
423910e230b6Smaya   .CommandType                         =      3
424010e230b6Smaya
424110e230b6Smayastruct GEN8_3DSTATE_RASTER {
424210e230b6Smaya   uint32_t                             DWordLength;
424310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
424410e230b6Smaya   uint32_t                             _3DCommandOpcode;
424510e230b6Smaya   uint32_t                             CommandSubType;
424610e230b6Smaya   uint32_t                             CommandType;
424710e230b6Smaya   bool                                 ViewportZClipTestEnable;
424810e230b6Smaya   bool                                 ScissorRectangleEnable;
424910e230b6Smaya   bool                                 AntialiasingEnable;
425010e230b6Smaya   uint32_t                             BackFaceFillMode;
425110e230b6Smaya#define FILL_MODE_SOLID                          0
425210e230b6Smaya#define FILL_MODE_WIREFRAME                      1
425310e230b6Smaya#define FILL_MODE_POINT                          2
425410e230b6Smaya   uint32_t                             FrontFaceFillMode;
425510e230b6Smaya#define FILL_MODE_SOLID                          0
425610e230b6Smaya#define FILL_MODE_WIREFRAME                      1
425710e230b6Smaya#define FILL_MODE_POINT                          2
425810e230b6Smaya   bool                                 GlobalDepthOffsetEnablePoint;
425910e230b6Smaya   bool                                 GlobalDepthOffsetEnableWireframe;
426010e230b6Smaya   bool                                 GlobalDepthOffsetEnableSolid;
426110e230b6Smaya   uint32_t                             DXMultisampleRasterizationMode;
426210e230b6Smaya#define MSRASTMODE_OFF_PIXEL                     0
426310e230b6Smaya#define MSRASTMODE_OFF_PATTERN                   1
426410e230b6Smaya#define MSRASTMODE_ON_PIXEL                      2
426510e230b6Smaya#define MSRASTMODE_ON_PATTERN                    3
426610e230b6Smaya   bool                                 DXMultisampleRasterizationEnable;
426710e230b6Smaya   bool                                 SmoothPointEnable;
426810e230b6Smaya   uint32_t                             ForceMultisampling;
426910e230b6Smaya   uint32_t                             CullMode;
427010e230b6Smaya#define CULLMODE_BOTH                            0
427110e230b6Smaya#define CULLMODE_NONE                            1
427210e230b6Smaya#define CULLMODE_FRONT                           2
427310e230b6Smaya#define CULLMODE_BACK                            3
427410e230b6Smaya   uint32_t                             ForcedSampleCount;
427510e230b6Smaya#define FSC_NUMRASTSAMPLES_0                     0
427610e230b6Smaya#define FSC_NUMRASTSAMPLES_1                     1
427710e230b6Smaya#define FSC_NUMRASTSAMPLES_2                     2
427810e230b6Smaya#define FSC_NUMRASTSAMPLES_4                     3
427910e230b6Smaya#define FSC_NUMRASTSAMPLES_8                     4
428010e230b6Smaya#define FSC_NUMRASTSAMPLES_16                    5
428110e230b6Smaya   uint32_t                             FrontWinding;
428210e230b6Smaya#define Clockwise                                0
428310e230b6Smaya#define CounterClockwise                         1
428410e230b6Smaya   uint32_t                             APIMode;
428510e230b6Smaya#define DX9OGL                                   0
428610e230b6Smaya#define DX100                                    1
428710e230b6Smaya#define DX101                                    2
428810e230b6Smaya   float                                GlobalDepthOffsetConstant;
428910e230b6Smaya   float                                GlobalDepthOffsetScale;
429010e230b6Smaya   float                                GlobalDepthOffsetClamp;
429110e230b6Smaya};
429210e230b6Smaya
429310e230b6Smayastatic inline void
429410e230b6SmayaGEN8_3DSTATE_RASTER_pack(__attribute__((unused)) __gen_user_data *data,
429510e230b6Smaya                         __attribute__((unused)) void * restrict dst,
429610e230b6Smaya                         __attribute__((unused)) const struct GEN8_3DSTATE_RASTER * restrict values)
429710e230b6Smaya{
429810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
429910e230b6Smaya
430010e230b6Smaya   dw[0] =
430110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
430210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
430310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
430410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
430510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
430610e230b6Smaya
430710e230b6Smaya   dw[1] =
430810e230b6Smaya      __gen_uint(values->ViewportZClipTestEnable, 0, 0) |
430910e230b6Smaya      __gen_uint(values->ScissorRectangleEnable, 1, 1) |
431010e230b6Smaya      __gen_uint(values->AntialiasingEnable, 2, 2) |
431110e230b6Smaya      __gen_uint(values->BackFaceFillMode, 3, 4) |
431210e230b6Smaya      __gen_uint(values->FrontFaceFillMode, 5, 6) |
431310e230b6Smaya      __gen_uint(values->GlobalDepthOffsetEnablePoint, 7, 7) |
431410e230b6Smaya      __gen_uint(values->GlobalDepthOffsetEnableWireframe, 8, 8) |
431510e230b6Smaya      __gen_uint(values->GlobalDepthOffsetEnableSolid, 9, 9) |
431610e230b6Smaya      __gen_uint(values->DXMultisampleRasterizationMode, 10, 11) |
431710e230b6Smaya      __gen_uint(values->DXMultisampleRasterizationEnable, 12, 12) |
431810e230b6Smaya      __gen_uint(values->SmoothPointEnable, 13, 13) |
431910e230b6Smaya      __gen_uint(values->ForceMultisampling, 14, 14) |
432010e230b6Smaya      __gen_uint(values->CullMode, 16, 17) |
432110e230b6Smaya      __gen_uint(values->ForcedSampleCount, 18, 20) |
432210e230b6Smaya      __gen_uint(values->FrontWinding, 21, 21) |
432310e230b6Smaya      __gen_uint(values->APIMode, 22, 23);
432410e230b6Smaya
432510e230b6Smaya   dw[2] =
432610e230b6Smaya      __gen_float(values->GlobalDepthOffsetConstant);
432710e230b6Smaya
432810e230b6Smaya   dw[3] =
432910e230b6Smaya      __gen_float(values->GlobalDepthOffsetScale);
433010e230b6Smaya
433110e230b6Smaya   dw[4] =
433210e230b6Smaya      __gen_float(values->GlobalDepthOffsetClamp);
433310e230b6Smaya}
433410e230b6Smaya
433510e230b6Smaya#define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_length_bias      2
433610e230b6Smaya#define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_header\
433710e230b6Smaya   ._3DCommandSubOpcode                 =      2,  \
433810e230b6Smaya   ._3DCommandOpcode                    =      1,  \
433910e230b6Smaya   .CommandSubType                      =      3,  \
434010e230b6Smaya   .CommandType                         =      3
434110e230b6Smaya
434210e230b6Smayastruct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0 {
434310e230b6Smaya   uint32_t                             DWordLength;
434410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
434510e230b6Smaya   uint32_t                             _3DCommandOpcode;
434610e230b6Smaya   uint32_t                             CommandSubType;
434710e230b6Smaya   uint32_t                             CommandType;
434810e230b6Smaya   /* variable length fields follow */
434910e230b6Smaya};
435010e230b6Smaya
435110e230b6Smayastatic inline void
435210e230b6SmayaGEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_pack(__attribute__((unused)) __gen_user_data *data,
435310e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
435410e230b6Smaya                                        __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0 * restrict values)
435510e230b6Smaya{
435610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
435710e230b6Smaya
435810e230b6Smaya   dw[0] =
435910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
436010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
436110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
436210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
436310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
436410e230b6Smaya}
436510e230b6Smaya
436610e230b6Smaya#define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_length_bias      2
436710e230b6Smaya#define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_header\
436810e230b6Smaya   .DWordLength                         =      0,  \
436910e230b6Smaya   ._3DCommandSubOpcode                 =     12,  \
437010e230b6Smaya   ._3DCommandOpcode                    =      1,  \
437110e230b6Smaya   .CommandSubType                      =      3,  \
437210e230b6Smaya   .CommandType                         =      3
437310e230b6Smaya
437410e230b6Smayastruct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1 {
437510e230b6Smaya   uint32_t                             DWordLength;
437610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
437710e230b6Smaya   uint32_t                             _3DCommandOpcode;
437810e230b6Smaya   uint32_t                             CommandSubType;
437910e230b6Smaya   uint32_t                             CommandType;
438010e230b6Smaya   /* variable length fields follow */
438110e230b6Smaya};
438210e230b6Smaya
438310e230b6Smayastatic inline void
438410e230b6SmayaGEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_pack(__attribute__((unused)) __gen_user_data *data,
438510e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
438610e230b6Smaya                                        __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1 * restrict values)
438710e230b6Smaya{
438810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
438910e230b6Smaya
439010e230b6Smaya   dw[0] =
439110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
439210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
439310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
439410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
439510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
439610e230b6Smaya}
439710e230b6Smaya
439810e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length      2
439910e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length_bias      2
440010e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_header\
440110e230b6Smaya   .DWordLength                         =      0,  \
440210e230b6Smaya   ._3DCommandSubOpcode                 =     45,  \
440310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
440410e230b6Smaya   .CommandSubType                      =      3,  \
440510e230b6Smaya   .CommandType                         =      3
440610e230b6Smaya
440710e230b6Smayastruct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS {
440810e230b6Smaya   uint32_t                             DWordLength;
440910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
441010e230b6Smaya   uint32_t                             _3DCommandOpcode;
441110e230b6Smaya   uint32_t                             CommandSubType;
441210e230b6Smaya   uint32_t                             CommandType;
441310e230b6Smaya   uint64_t                             PointertoDSSamplerState;
441410e230b6Smaya};
441510e230b6Smaya
441610e230b6Smayastatic inline void
441710e230b6SmayaGEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_pack(__attribute__((unused)) __gen_user_data *data,
441810e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
441910e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS * restrict values)
442010e230b6Smaya{
442110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
442210e230b6Smaya
442310e230b6Smaya   dw[0] =
442410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
442510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
442610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
442710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
442810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
442910e230b6Smaya
443010e230b6Smaya   dw[1] =
443110e230b6Smaya      __gen_offset(values->PointertoDSSamplerState, 5, 31);
443210e230b6Smaya}
443310e230b6Smaya
443410e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length      2
443510e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length_bias      2
443610e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_header\
443710e230b6Smaya   .DWordLength                         =      0,  \
443810e230b6Smaya   ._3DCommandSubOpcode                 =     46,  \
443910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
444010e230b6Smaya   .CommandSubType                      =      3,  \
444110e230b6Smaya   .CommandType                         =      3
444210e230b6Smaya
444310e230b6Smayastruct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS {
444410e230b6Smaya   uint32_t                             DWordLength;
444510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
444610e230b6Smaya   uint32_t                             _3DCommandOpcode;
444710e230b6Smaya   uint32_t                             CommandSubType;
444810e230b6Smaya   uint32_t                             CommandType;
444910e230b6Smaya   uint64_t                             PointertoGSSamplerState;
445010e230b6Smaya};
445110e230b6Smaya
445210e230b6Smayastatic inline void
445310e230b6SmayaGEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_pack(__attribute__((unused)) __gen_user_data *data,
445410e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
445510e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS * restrict values)
445610e230b6Smaya{
445710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
445810e230b6Smaya
445910e230b6Smaya   dw[0] =
446010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
446110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
446210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
446310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
446410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
446510e230b6Smaya
446610e230b6Smaya   dw[1] =
446710e230b6Smaya      __gen_offset(values->PointertoGSSamplerState, 5, 31);
446810e230b6Smaya}
446910e230b6Smaya
447010e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length      2
447110e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length_bias      2
447210e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_header\
447310e230b6Smaya   .DWordLength                         =      0,  \
447410e230b6Smaya   ._3DCommandSubOpcode                 =     44,  \
447510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
447610e230b6Smaya   .CommandSubType                      =      3,  \
447710e230b6Smaya   .CommandType                         =      3
447810e230b6Smaya
447910e230b6Smayastruct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS {
448010e230b6Smaya   uint32_t                             DWordLength;
448110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
448210e230b6Smaya   uint32_t                             _3DCommandOpcode;
448310e230b6Smaya   uint32_t                             CommandSubType;
448410e230b6Smaya   uint32_t                             CommandType;
448510e230b6Smaya   uint64_t                             PointertoHSSamplerState;
448610e230b6Smaya};
448710e230b6Smaya
448810e230b6Smayastatic inline void
448910e230b6SmayaGEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_pack(__attribute__((unused)) __gen_user_data *data,
449010e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
449110e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS * restrict values)
449210e230b6Smaya{
449310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
449410e230b6Smaya
449510e230b6Smaya   dw[0] =
449610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
449710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
449810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
449910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
450010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
450110e230b6Smaya
450210e230b6Smaya   dw[1] =
450310e230b6Smaya      __gen_offset(values->PointertoHSSamplerState, 5, 31);
450410e230b6Smaya}
450510e230b6Smaya
450610e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length      2
450710e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length_bias      2
450810e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_header\
450910e230b6Smaya   .DWordLength                         =      0,  \
451010e230b6Smaya   ._3DCommandSubOpcode                 =     47,  \
451110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
451210e230b6Smaya   .CommandSubType                      =      3,  \
451310e230b6Smaya   .CommandType                         =      3
451410e230b6Smaya
451510e230b6Smayastruct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS {
451610e230b6Smaya   uint32_t                             DWordLength;
451710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
451810e230b6Smaya   uint32_t                             _3DCommandOpcode;
451910e230b6Smaya   uint32_t                             CommandSubType;
452010e230b6Smaya   uint32_t                             CommandType;
452110e230b6Smaya   uint64_t                             PointertoPSSamplerState;
452210e230b6Smaya};
452310e230b6Smaya
452410e230b6Smayastatic inline void
452510e230b6SmayaGEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_pack(__attribute__((unused)) __gen_user_data *data,
452610e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
452710e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS * restrict values)
452810e230b6Smaya{
452910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
453010e230b6Smaya
453110e230b6Smaya   dw[0] =
453210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
453310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
453410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
453510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
453610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
453710e230b6Smaya
453810e230b6Smaya   dw[1] =
453910e230b6Smaya      __gen_offset(values->PointertoPSSamplerState, 5, 31);
454010e230b6Smaya}
454110e230b6Smaya
454210e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length      2
454310e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length_bias      2
454410e230b6Smaya#define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_header\
454510e230b6Smaya   .DWordLength                         =      0,  \
454610e230b6Smaya   ._3DCommandSubOpcode                 =     43,  \
454710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
454810e230b6Smaya   .CommandSubType                      =      3,  \
454910e230b6Smaya   .CommandType                         =      3
455010e230b6Smaya
455110e230b6Smayastruct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS {
455210e230b6Smaya   uint32_t                             DWordLength;
455310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
455410e230b6Smaya   uint32_t                             _3DCommandOpcode;
455510e230b6Smaya   uint32_t                             CommandSubType;
455610e230b6Smaya   uint32_t                             CommandType;
455710e230b6Smaya   uint64_t                             PointertoVSSamplerState;
455810e230b6Smaya};
455910e230b6Smaya
456010e230b6Smayastatic inline void
456110e230b6SmayaGEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_pack(__attribute__((unused)) __gen_user_data *data,
456210e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
456310e230b6Smaya                                            __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS * restrict values)
456410e230b6Smaya{
456510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
456610e230b6Smaya
456710e230b6Smaya   dw[0] =
456810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
456910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
457010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
457110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
457210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
457310e230b6Smaya
457410e230b6Smaya   dw[1] =
457510e230b6Smaya      __gen_offset(values->PointertoVSSamplerState, 5, 31);
457610e230b6Smaya}
457710e230b6Smaya
457810e230b6Smaya#define GEN8_3DSTATE_SAMPLE_MASK_length        2
457910e230b6Smaya#define GEN8_3DSTATE_SAMPLE_MASK_length_bias      2
458010e230b6Smaya#define GEN8_3DSTATE_SAMPLE_MASK_header         \
458110e230b6Smaya   .DWordLength                         =      0,  \
458210e230b6Smaya   ._3DCommandSubOpcode                 =     24,  \
458310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
458410e230b6Smaya   .CommandSubType                      =      3,  \
458510e230b6Smaya   .CommandType                         =      3
458610e230b6Smaya
458710e230b6Smayastruct GEN8_3DSTATE_SAMPLE_MASK {
458810e230b6Smaya   uint32_t                             DWordLength;
458910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
459010e230b6Smaya   uint32_t                             _3DCommandOpcode;
459110e230b6Smaya   uint32_t                             CommandSubType;
459210e230b6Smaya   uint32_t                             CommandType;
459310e230b6Smaya   uint32_t                             SampleMask;
459410e230b6Smaya};
459510e230b6Smaya
459610e230b6Smayastatic inline void
459710e230b6SmayaGEN8_3DSTATE_SAMPLE_MASK_pack(__attribute__((unused)) __gen_user_data *data,
459810e230b6Smaya                              __attribute__((unused)) void * restrict dst,
459910e230b6Smaya                              __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLE_MASK * restrict values)
460010e230b6Smaya{
460110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
460210e230b6Smaya
460310e230b6Smaya   dw[0] =
460410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
460510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
460610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
460710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
460810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
460910e230b6Smaya
461010e230b6Smaya   dw[1] =
461110e230b6Smaya      __gen_uint(values->SampleMask, 0, 15);
461210e230b6Smaya}
461310e230b6Smaya
461410e230b6Smaya#define GEN8_3DSTATE_SAMPLE_PATTERN_length      9
461510e230b6Smaya#define GEN8_3DSTATE_SAMPLE_PATTERN_length_bias      2
461610e230b6Smaya#define GEN8_3DSTATE_SAMPLE_PATTERN_header      \
461710e230b6Smaya   .DWordLength                         =      7,  \
461810e230b6Smaya   ._3DCommandSubOpcode                 =     28,  \
461910e230b6Smaya   ._3DCommandOpcode                    =      1,  \
462010e230b6Smaya   .CommandSubType                      =      3,  \
462110e230b6Smaya   .CommandType                         =      3
462210e230b6Smaya
462310e230b6Smayastruct GEN8_3DSTATE_SAMPLE_PATTERN {
462410e230b6Smaya   uint32_t                             DWordLength;
462510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
462610e230b6Smaya   uint32_t                             _3DCommandOpcode;
462710e230b6Smaya   uint32_t                             CommandSubType;
462810e230b6Smaya   uint32_t                             CommandType;
462910e230b6Smaya   float                                _8xSample4YOffset;
463010e230b6Smaya   float                                _8xSample4XOffset;
463110e230b6Smaya   float                                _8xSample5YOffset;
463210e230b6Smaya   float                                _8xSample5XOffset;
463310e230b6Smaya   float                                _8xSample6YOffset;
463410e230b6Smaya   float                                _8xSample6XOffset;
463510e230b6Smaya   float                                _8xSample7YOffset;
463610e230b6Smaya   float                                _8xSample7XOffset;
463710e230b6Smaya   float                                _8xSample0YOffset;
463810e230b6Smaya   float                                _8xSample0XOffset;
463910e230b6Smaya   float                                _8xSample1YOffset;
464010e230b6Smaya   float                                _8xSample1XOffset;
464110e230b6Smaya   float                                _8xSample2YOffset;
464210e230b6Smaya   float                                _8xSample2XOffset;
464310e230b6Smaya   float                                _8xSample3YOffset;
464410e230b6Smaya   float                                _8xSample3XOffset;
464510e230b6Smaya   float                                _4xSample0YOffset;
464610e230b6Smaya   float                                _4xSample0XOffset;
464710e230b6Smaya   float                                _4xSample1YOffset;
464810e230b6Smaya   float                                _4xSample1XOffset;
464910e230b6Smaya   float                                _4xSample2YOffset;
465010e230b6Smaya   float                                _4xSample2XOffset;
465110e230b6Smaya   float                                _4xSample3YOffset;
465210e230b6Smaya   float                                _4xSample3XOffset;
465310e230b6Smaya   float                                _2xSample0YOffset;
465410e230b6Smaya   float                                _2xSample0XOffset;
465510e230b6Smaya   float                                _2xSample1YOffset;
465610e230b6Smaya   float                                _2xSample1XOffset;
465710e230b6Smaya   float                                _1xSample0YOffset;
465810e230b6Smaya   float                                _1xSample0XOffset;
465910e230b6Smaya};
466010e230b6Smaya
466110e230b6Smayastatic inline void
466210e230b6SmayaGEN8_3DSTATE_SAMPLE_PATTERN_pack(__attribute__((unused)) __gen_user_data *data,
466310e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
466410e230b6Smaya                                 __attribute__((unused)) const struct GEN8_3DSTATE_SAMPLE_PATTERN * restrict values)
466510e230b6Smaya{
466610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
466710e230b6Smaya
466810e230b6Smaya   dw[0] =
466910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
467010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
467110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
467210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
467310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
467410e230b6Smaya
467510e230b6Smaya   dw[1] = 0;
467610e230b6Smaya
467710e230b6Smaya   dw[2] = 0;
467810e230b6Smaya
467910e230b6Smaya   dw[3] = 0;
468010e230b6Smaya
468110e230b6Smaya   dw[4] = 0;
468210e230b6Smaya
468310e230b6Smaya   dw[5] =
468410e230b6Smaya      __gen_ufixed(values->_8xSample4YOffset, 0, 3, 4) |
468510e230b6Smaya      __gen_ufixed(values->_8xSample4XOffset, 4, 7, 4) |
468610e230b6Smaya      __gen_ufixed(values->_8xSample5YOffset, 8, 11, 4) |
468710e230b6Smaya      __gen_ufixed(values->_8xSample5XOffset, 12, 15, 4) |
468810e230b6Smaya      __gen_ufixed(values->_8xSample6YOffset, 16, 19, 4) |
468910e230b6Smaya      __gen_ufixed(values->_8xSample6XOffset, 20, 23, 4) |
469010e230b6Smaya      __gen_ufixed(values->_8xSample7YOffset, 24, 27, 4) |
469110e230b6Smaya      __gen_ufixed(values->_8xSample7XOffset, 28, 31, 4);
469210e230b6Smaya
469310e230b6Smaya   dw[6] =
469410e230b6Smaya      __gen_ufixed(values->_8xSample0YOffset, 0, 3, 4) |
469510e230b6Smaya      __gen_ufixed(values->_8xSample0XOffset, 4, 7, 4) |
469610e230b6Smaya      __gen_ufixed(values->_8xSample1YOffset, 8, 11, 4) |
469710e230b6Smaya      __gen_ufixed(values->_8xSample1XOffset, 12, 15, 4) |
469810e230b6Smaya      __gen_ufixed(values->_8xSample2YOffset, 16, 19, 4) |
469910e230b6Smaya      __gen_ufixed(values->_8xSample2XOffset, 20, 23, 4) |
470010e230b6Smaya      __gen_ufixed(values->_8xSample3YOffset, 24, 27, 4) |
470110e230b6Smaya      __gen_ufixed(values->_8xSample3XOffset, 28, 31, 4);
470210e230b6Smaya
470310e230b6Smaya   dw[7] =
470410e230b6Smaya      __gen_ufixed(values->_4xSample0YOffset, 0, 3, 4) |
470510e230b6Smaya      __gen_ufixed(values->_4xSample0XOffset, 4, 7, 4) |
470610e230b6Smaya      __gen_ufixed(values->_4xSample1YOffset, 8, 11, 4) |
470710e230b6Smaya      __gen_ufixed(values->_4xSample1XOffset, 12, 15, 4) |
470810e230b6Smaya      __gen_ufixed(values->_4xSample2YOffset, 16, 19, 4) |
470910e230b6Smaya      __gen_ufixed(values->_4xSample2XOffset, 20, 23, 4) |
471010e230b6Smaya      __gen_ufixed(values->_4xSample3YOffset, 24, 27, 4) |
471110e230b6Smaya      __gen_ufixed(values->_4xSample3XOffset, 28, 31, 4);
471210e230b6Smaya
471310e230b6Smaya   dw[8] =
471410e230b6Smaya      __gen_ufixed(values->_2xSample0YOffset, 0, 3, 4) |
471510e230b6Smaya      __gen_ufixed(values->_2xSample0XOffset, 4, 7, 4) |
471610e230b6Smaya      __gen_ufixed(values->_2xSample1YOffset, 8, 11, 4) |
471710e230b6Smaya      __gen_ufixed(values->_2xSample1XOffset, 12, 15, 4) |
471810e230b6Smaya      __gen_ufixed(values->_1xSample0YOffset, 16, 19, 4) |
471910e230b6Smaya      __gen_ufixed(values->_1xSample0XOffset, 20, 23, 4);
472010e230b6Smaya}
472110e230b6Smaya
472210e230b6Smaya#define GEN8_3DSTATE_SBE_length                4
472310e230b6Smaya#define GEN8_3DSTATE_SBE_length_bias           2
472410e230b6Smaya#define GEN8_3DSTATE_SBE_header                 \
472510e230b6Smaya   .DWordLength                         =      2,  \
472610e230b6Smaya   ._3DCommandSubOpcode                 =     31,  \
472710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
472810e230b6Smaya   .CommandSubType                      =      3,  \
472910e230b6Smaya   .CommandType                         =      3
473010e230b6Smaya
473110e230b6Smayastruct GEN8_3DSTATE_SBE {
473210e230b6Smaya   uint32_t                             DWordLength;
473310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
473410e230b6Smaya   uint32_t                             _3DCommandOpcode;
473510e230b6Smaya   uint32_t                             CommandSubType;
473610e230b6Smaya   uint32_t                             CommandType;
473710e230b6Smaya   uint32_t                             PrimitiveIDOverrideAttributeSelect;
473810e230b6Smaya   uint32_t                             VertexURBEntryReadOffset;
473910e230b6Smaya   uint32_t                             VertexURBEntryReadLength;
474010e230b6Smaya   bool                                 PrimitiveIDOverrideComponentX;
474110e230b6Smaya   bool                                 PrimitiveIDOverrideComponentY;
474210e230b6Smaya   bool                                 PrimitiveIDOverrideComponentZ;
474310e230b6Smaya   bool                                 PrimitiveIDOverrideComponentW;
474410e230b6Smaya   uint32_t                             PointSpriteTextureCoordinateOrigin;
474510e230b6Smaya#define UPPERLEFT                                0
474610e230b6Smaya#define LOWERLEFT                                1
474710e230b6Smaya   bool                                 AttributeSwizzleEnable;
474810e230b6Smaya   uint32_t                             NumberofSFOutputAttributes;
474910e230b6Smaya   bool                                 ForceVertexURBEntryReadOffset;
475010e230b6Smaya   bool                                 ForceVertexURBEntryReadLength;
475110e230b6Smaya   uint32_t                             PointSpriteTextureCoordinateEnable;
475210e230b6Smaya   uint32_t                             ConstantInterpolationEnable;
475310e230b6Smaya};
475410e230b6Smaya
475510e230b6Smayastatic inline void
475610e230b6SmayaGEN8_3DSTATE_SBE_pack(__attribute__((unused)) __gen_user_data *data,
475710e230b6Smaya                      __attribute__((unused)) void * restrict dst,
475810e230b6Smaya                      __attribute__((unused)) const struct GEN8_3DSTATE_SBE * restrict values)
475910e230b6Smaya{
476010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
476110e230b6Smaya
476210e230b6Smaya   dw[0] =
476310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
476410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
476510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
476610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
476710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
476810e230b6Smaya
476910e230b6Smaya   dw[1] =
477010e230b6Smaya      __gen_uint(values->PrimitiveIDOverrideAttributeSelect, 0, 4) |
477110e230b6Smaya      __gen_uint(values->VertexURBEntryReadOffset, 5, 10) |
477210e230b6Smaya      __gen_uint(values->VertexURBEntryReadLength, 11, 15) |
477310e230b6Smaya      __gen_uint(values->PrimitiveIDOverrideComponentX, 16, 16) |
477410e230b6Smaya      __gen_uint(values->PrimitiveIDOverrideComponentY, 17, 17) |
477510e230b6Smaya      __gen_uint(values->PrimitiveIDOverrideComponentZ, 18, 18) |
477610e230b6Smaya      __gen_uint(values->PrimitiveIDOverrideComponentW, 19, 19) |
477710e230b6Smaya      __gen_uint(values->PointSpriteTextureCoordinateOrigin, 20, 20) |
477810e230b6Smaya      __gen_uint(values->AttributeSwizzleEnable, 21, 21) |
477910e230b6Smaya      __gen_uint(values->NumberofSFOutputAttributes, 22, 27) |
478010e230b6Smaya      __gen_uint(values->ForceVertexURBEntryReadOffset, 28, 28) |
478110e230b6Smaya      __gen_uint(values->ForceVertexURBEntryReadLength, 29, 29);
478210e230b6Smaya
478310e230b6Smaya   dw[2] =
478410e230b6Smaya      __gen_uint(values->PointSpriteTextureCoordinateEnable, 0, 31);
478510e230b6Smaya
478610e230b6Smaya   dw[3] =
478710e230b6Smaya      __gen_uint(values->ConstantInterpolationEnable, 0, 31);
478810e230b6Smaya}
478910e230b6Smaya
479010e230b6Smaya#define GEN8_3DSTATE_SBE_SWIZ_length          11
479110e230b6Smaya#define GEN8_3DSTATE_SBE_SWIZ_length_bias      2
479210e230b6Smaya#define GEN8_3DSTATE_SBE_SWIZ_header            \
479310e230b6Smaya   .DWordLength                         =      9,  \
479410e230b6Smaya   ._3DCommandSubOpcode                 =     81,  \
479510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
479610e230b6Smaya   .CommandSubType                      =      3,  \
479710e230b6Smaya   .CommandType                         =      3
479810e230b6Smaya
479910e230b6Smayastruct GEN8_3DSTATE_SBE_SWIZ {
480010e230b6Smaya   uint32_t                             DWordLength;
480110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
480210e230b6Smaya   uint32_t                             _3DCommandOpcode;
480310e230b6Smaya   uint32_t                             CommandSubType;
480410e230b6Smaya   uint32_t                             CommandType;
480510e230b6Smaya   struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL Attribute[16];
480610e230b6Smaya   uint32_t                             AttributeWrapShortestEnables[16];
480710e230b6Smaya};
480810e230b6Smaya
480910e230b6Smayastatic inline void
481010e230b6SmayaGEN8_3DSTATE_SBE_SWIZ_pack(__attribute__((unused)) __gen_user_data *data,
481110e230b6Smaya                           __attribute__((unused)) void * restrict dst,
481210e230b6Smaya                           __attribute__((unused)) const struct GEN8_3DSTATE_SBE_SWIZ * restrict values)
481310e230b6Smaya{
481410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
481510e230b6Smaya
481610e230b6Smaya   dw[0] =
481710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
481810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
481910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
482010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
482110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
482210e230b6Smaya
482310e230b6Smaya   uint32_t v1_0;
482410e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v1_0, &values->Attribute[0]);
482510e230b6Smaya
482610e230b6Smaya   uint32_t v1_1;
482710e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v1_1, &values->Attribute[1]);
482810e230b6Smaya
482910e230b6Smaya   dw[1] =
483010e230b6Smaya      __gen_uint(v1_0, 0, 15) |
483110e230b6Smaya      __gen_uint(v1_1, 16, 31);
483210e230b6Smaya
483310e230b6Smaya   uint32_t v2_0;
483410e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v2_0, &values->Attribute[2]);
483510e230b6Smaya
483610e230b6Smaya   uint32_t v2_1;
483710e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v2_1, &values->Attribute[3]);
483810e230b6Smaya
483910e230b6Smaya   dw[2] =
484010e230b6Smaya      __gen_uint(v2_0, 0, 15) |
484110e230b6Smaya      __gen_uint(v2_1, 16, 31);
484210e230b6Smaya
484310e230b6Smaya   uint32_t v3_0;
484410e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v3_0, &values->Attribute[4]);
484510e230b6Smaya
484610e230b6Smaya   uint32_t v3_1;
484710e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v3_1, &values->Attribute[5]);
484810e230b6Smaya
484910e230b6Smaya   dw[3] =
485010e230b6Smaya      __gen_uint(v3_0, 0, 15) |
485110e230b6Smaya      __gen_uint(v3_1, 16, 31);
485210e230b6Smaya
485310e230b6Smaya   uint32_t v4_0;
485410e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v4_0, &values->Attribute[6]);
485510e230b6Smaya
485610e230b6Smaya   uint32_t v4_1;
485710e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v4_1, &values->Attribute[7]);
485810e230b6Smaya
485910e230b6Smaya   dw[4] =
486010e230b6Smaya      __gen_uint(v4_0, 0, 15) |
486110e230b6Smaya      __gen_uint(v4_1, 16, 31);
486210e230b6Smaya
486310e230b6Smaya   uint32_t v5_0;
486410e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v5_0, &values->Attribute[8]);
486510e230b6Smaya
486610e230b6Smaya   uint32_t v5_1;
486710e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v5_1, &values->Attribute[9]);
486810e230b6Smaya
486910e230b6Smaya   dw[5] =
487010e230b6Smaya      __gen_uint(v5_0, 0, 15) |
487110e230b6Smaya      __gen_uint(v5_1, 16, 31);
487210e230b6Smaya
487310e230b6Smaya   uint32_t v6_0;
487410e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v6_0, &values->Attribute[10]);
487510e230b6Smaya
487610e230b6Smaya   uint32_t v6_1;
487710e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v6_1, &values->Attribute[11]);
487810e230b6Smaya
487910e230b6Smaya   dw[6] =
488010e230b6Smaya      __gen_uint(v6_0, 0, 15) |
488110e230b6Smaya      __gen_uint(v6_1, 16, 31);
488210e230b6Smaya
488310e230b6Smaya   uint32_t v7_0;
488410e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v7_0, &values->Attribute[12]);
488510e230b6Smaya
488610e230b6Smaya   uint32_t v7_1;
488710e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v7_1, &values->Attribute[13]);
488810e230b6Smaya
488910e230b6Smaya   dw[7] =
489010e230b6Smaya      __gen_uint(v7_0, 0, 15) |
489110e230b6Smaya      __gen_uint(v7_1, 16, 31);
489210e230b6Smaya
489310e230b6Smaya   uint32_t v8_0;
489410e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v8_0, &values->Attribute[14]);
489510e230b6Smaya
489610e230b6Smaya   uint32_t v8_1;
489710e230b6Smaya   GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v8_1, &values->Attribute[15]);
489810e230b6Smaya
489910e230b6Smaya   dw[8] =
490010e230b6Smaya      __gen_uint(v8_0, 0, 15) |
490110e230b6Smaya      __gen_uint(v8_1, 16, 31);
490210e230b6Smaya
490310e230b6Smaya   dw[9] =
490410e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[0], 0, 3) |
490510e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[1], 4, 7) |
490610e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[2], 8, 11) |
490710e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[3], 12, 15) |
490810e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[4], 16, 19) |
490910e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[5], 20, 23) |
491010e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[6], 24, 27) |
491110e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[7], 28, 31);
491210e230b6Smaya
491310e230b6Smaya   dw[10] =
491410e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[8], 0, 3) |
491510e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[9], 4, 7) |
491610e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[10], 8, 11) |
491710e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[11], 12, 15) |
491810e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[12], 16, 19) |
491910e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[13], 20, 23) |
492010e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[14], 24, 27) |
492110e230b6Smaya      __gen_uint(values->AttributeWrapShortestEnables[15], 28, 31);
492210e230b6Smaya}
492310e230b6Smaya
492410e230b6Smaya#define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length      2
492510e230b6Smaya#define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length_bias      2
492610e230b6Smaya#define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_header\
492710e230b6Smaya   .DWordLength                         =      0,  \
492810e230b6Smaya   ._3DCommandSubOpcode                 =     15,  \
492910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
493010e230b6Smaya   .CommandSubType                      =      3,  \
493110e230b6Smaya   .CommandType                         =      3
493210e230b6Smaya
493310e230b6Smayastruct GEN8_3DSTATE_SCISSOR_STATE_POINTERS {
493410e230b6Smaya   uint32_t                             DWordLength;
493510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
493610e230b6Smaya   uint32_t                             _3DCommandOpcode;
493710e230b6Smaya   uint32_t                             CommandSubType;
493810e230b6Smaya   uint32_t                             CommandType;
493910e230b6Smaya   uint64_t                             ScissorRectPointer;
494010e230b6Smaya};
494110e230b6Smaya
494210e230b6Smayastatic inline void
494310e230b6SmayaGEN8_3DSTATE_SCISSOR_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data,
494410e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
494510e230b6Smaya                                         __attribute__((unused)) const struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS * restrict values)
494610e230b6Smaya{
494710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
494810e230b6Smaya
494910e230b6Smaya   dw[0] =
495010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
495110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
495210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
495310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
495410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
495510e230b6Smaya
495610e230b6Smaya   dw[1] =
495710e230b6Smaya      __gen_offset(values->ScissorRectPointer, 5, 31);
495810e230b6Smaya}
495910e230b6Smaya
496010e230b6Smaya#define GEN8_3DSTATE_SF_length                 4
496110e230b6Smaya#define GEN8_3DSTATE_SF_length_bias            2
496210e230b6Smaya#define GEN8_3DSTATE_SF_header                  \
496310e230b6Smaya   .DWordLength                         =      2,  \
496410e230b6Smaya   ._3DCommandSubOpcode                 =     19,  \
496510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
496610e230b6Smaya   .CommandSubType                      =      3,  \
496710e230b6Smaya   .CommandType                         =      3
496810e230b6Smaya
496910e230b6Smayastruct GEN8_3DSTATE_SF {
497010e230b6Smaya   uint32_t                             DWordLength;
497110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
497210e230b6Smaya   uint32_t                             _3DCommandOpcode;
497310e230b6Smaya   uint32_t                             CommandSubType;
497410e230b6Smaya   uint32_t                             CommandType;
497510e230b6Smaya   bool                                 ViewportTransformEnable;
497610e230b6Smaya   bool                                 StatisticsEnable;
497710e230b6Smaya   bool                                 LegacyGlobalDepthBiasEnable;
497810e230b6Smaya   float                                CHVLineWidth;
497910e230b6Smaya   uint32_t                             LineEndCapAntialiasingRegionWidth;
498010e230b6Smaya#define _05pixels                                0
498110e230b6Smaya#define _10pixels                                1
498210e230b6Smaya#define _20pixels                                2
498310e230b6Smaya#define _40pixels                                3
498410e230b6Smaya   float                                LineWidth;
498510e230b6Smaya   float                                PointWidth;
498610e230b6Smaya   uint32_t                             PointWidthSource;
498710e230b6Smaya#define Vertex                                   0
498810e230b6Smaya#define State                                    1
498910e230b6Smaya   uint32_t                             VertexSubPixelPrecisionSelect;
499010e230b6Smaya#define _8Bit                                    0
499110e230b6Smaya#define _4Bit                                    1
499210e230b6Smaya   bool                                 SmoothPointEnable;
499310e230b6Smaya   uint32_t                             AALineDistanceMode;
499410e230b6Smaya#define AALINEDISTANCE_TRUE                      1
499510e230b6Smaya   uint32_t                             TriangleFanProvokingVertexSelect;
499610e230b6Smaya   uint32_t                             LineStripListProvokingVertexSelect;
499710e230b6Smaya   uint32_t                             TriangleStripListProvokingVertexSelect;
499810e230b6Smaya   bool                                 LastPixelEnable;
499910e230b6Smaya};
500010e230b6Smaya
500110e230b6Smayastatic inline void
500210e230b6SmayaGEN8_3DSTATE_SF_pack(__attribute__((unused)) __gen_user_data *data,
500310e230b6Smaya                     __attribute__((unused)) void * restrict dst,
500410e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_SF * restrict values)
500510e230b6Smaya{
500610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
500710e230b6Smaya
500810e230b6Smaya   dw[0] =
500910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
501010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
501110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
501210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
501310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
501410e230b6Smaya
501510e230b6Smaya   dw[1] =
501610e230b6Smaya      __gen_uint(values->ViewportTransformEnable, 1, 1) |
501710e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
501810e230b6Smaya      __gen_uint(values->LegacyGlobalDepthBiasEnable, 11, 11) |
501910e230b6Smaya      __gen_ufixed(values->CHVLineWidth, 12, 29, 7);
502010e230b6Smaya
502110e230b6Smaya   dw[2] =
502210e230b6Smaya      __gen_uint(values->LineEndCapAntialiasingRegionWidth, 16, 17) |
502310e230b6Smaya      __gen_ufixed(values->LineWidth, 18, 27, 7);
502410e230b6Smaya
502510e230b6Smaya   dw[3] =
502610e230b6Smaya      __gen_ufixed(values->PointWidth, 0, 10, 3) |
502710e230b6Smaya      __gen_uint(values->PointWidthSource, 11, 11) |
502810e230b6Smaya      __gen_uint(values->VertexSubPixelPrecisionSelect, 12, 12) |
502910e230b6Smaya      __gen_uint(values->SmoothPointEnable, 13, 13) |
503010e230b6Smaya      __gen_uint(values->AALineDistanceMode, 14, 14) |
503110e230b6Smaya      __gen_uint(values->TriangleFanProvokingVertexSelect, 25, 26) |
503210e230b6Smaya      __gen_uint(values->LineStripListProvokingVertexSelect, 27, 28) |
503310e230b6Smaya      __gen_uint(values->TriangleStripListProvokingVertexSelect, 29, 30) |
503410e230b6Smaya      __gen_uint(values->LastPixelEnable, 31, 31);
503510e230b6Smaya}
503610e230b6Smaya
503710e230b6Smaya#define GEN8_3DSTATE_SO_BUFFER_length          8
503810e230b6Smaya#define GEN8_3DSTATE_SO_BUFFER_length_bias      2
503910e230b6Smaya#define GEN8_3DSTATE_SO_BUFFER_header           \
504010e230b6Smaya   .DWordLength                         =      6,  \
504110e230b6Smaya   ._3DCommandSubOpcode                 =     24,  \
504210e230b6Smaya   ._3DCommandOpcode                    =      1,  \
504310e230b6Smaya   .CommandSubType                      =      3,  \
504410e230b6Smaya   .CommandType                         =      3
504510e230b6Smaya
504610e230b6Smayastruct GEN8_3DSTATE_SO_BUFFER {
504710e230b6Smaya   uint32_t                             DWordLength;
504810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
504910e230b6Smaya   uint32_t                             _3DCommandOpcode;
505010e230b6Smaya   uint32_t                             CommandSubType;
505110e230b6Smaya   uint32_t                             CommandType;
505210e230b6Smaya   bool                                 StreamOutputBufferOffsetAddressEnable;
505310e230b6Smaya   bool                                 StreamOffsetWriteEnable;
505410e230b6Smaya   uint32_t                             MOCS;
505510e230b6Smaya   uint32_t                             SOBufferIndex;
505610e230b6Smaya   bool                                 SOBufferEnable;
505710e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
505810e230b6Smaya   uint32_t                             SurfaceSize;
505910e230b6Smaya   __gen_address_type                   StreamOutputBufferOffsetAddress;
506010e230b6Smaya   uint32_t                             StreamOffset;
506110e230b6Smaya};
506210e230b6Smaya
506310e230b6Smayastatic inline void
506410e230b6SmayaGEN8_3DSTATE_SO_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
506510e230b6Smaya                            __attribute__((unused)) void * restrict dst,
506610e230b6Smaya                            __attribute__((unused)) const struct GEN8_3DSTATE_SO_BUFFER * restrict values)
506710e230b6Smaya{
506810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
506910e230b6Smaya
507010e230b6Smaya   dw[0] =
507110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
507210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
507310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
507410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
507510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
507610e230b6Smaya
507710e230b6Smaya   dw[1] =
507810e230b6Smaya      __gen_uint(values->StreamOutputBufferOffsetAddressEnable, 20, 20) |
507910e230b6Smaya      __gen_uint(values->StreamOffsetWriteEnable, 21, 21) |
508010e230b6Smaya      __gen_uint(values->MOCS, 22, 28) |
508110e230b6Smaya      __gen_uint(values->SOBufferIndex, 29, 30) |
508210e230b6Smaya      __gen_uint(values->SOBufferEnable, 31, 31);
508310e230b6Smaya
508410e230b6Smaya   const uint64_t v2_address =
508510e230b6Smaya      __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0);
508610e230b6Smaya   dw[2] = v2_address;
508710e230b6Smaya   dw[3] = v2_address >> 32;
508810e230b6Smaya
508910e230b6Smaya   dw[4] =
509010e230b6Smaya      __gen_uint(values->SurfaceSize, 0, 29);
509110e230b6Smaya
509210e230b6Smaya   const uint64_t v5_address =
509310e230b6Smaya      __gen_combine_address(data, &dw[5], values->StreamOutputBufferOffsetAddress, 0);
509410e230b6Smaya   dw[5] = v5_address;
509510e230b6Smaya   dw[6] = v5_address >> 32;
509610e230b6Smaya
509710e230b6Smaya   dw[7] =
509810e230b6Smaya      __gen_uint(values->StreamOffset, 0, 31);
509910e230b6Smaya}
510010e230b6Smaya
510110e230b6Smaya#define GEN8_3DSTATE_SO_DECL_LIST_length_bias      2
510210e230b6Smaya#define GEN8_3DSTATE_SO_DECL_LIST_header        \
510310e230b6Smaya   ._3DCommandSubOpcode                 =     23,  \
510410e230b6Smaya   ._3DCommandOpcode                    =      1,  \
510510e230b6Smaya   .CommandSubType                      =      3,  \
510610e230b6Smaya   .CommandType                         =      3
510710e230b6Smaya
510810e230b6Smayastruct GEN8_3DSTATE_SO_DECL_LIST {
510910e230b6Smaya   uint32_t                             DWordLength;
511010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
511110e230b6Smaya   uint32_t                             _3DCommandOpcode;
511210e230b6Smaya   uint32_t                             CommandSubType;
511310e230b6Smaya   uint32_t                             CommandType;
511410e230b6Smaya   uint32_t                             StreamtoBufferSelects0;
511510e230b6Smaya   uint32_t                             StreamtoBufferSelects1;
511610e230b6Smaya   uint32_t                             StreamtoBufferSelects2;
511710e230b6Smaya   uint32_t                             StreamtoBufferSelects3;
511810e230b6Smaya   uint32_t                             NumEntries0;
511910e230b6Smaya   uint32_t                             NumEntries1;
512010e230b6Smaya   uint32_t                             NumEntries2;
512110e230b6Smaya   uint32_t                             NumEntries3;
512210e230b6Smaya   /* variable length fields follow */
512310e230b6Smaya};
512410e230b6Smaya
512510e230b6Smayastatic inline void
512610e230b6SmayaGEN8_3DSTATE_SO_DECL_LIST_pack(__attribute__((unused)) __gen_user_data *data,
512710e230b6Smaya                               __attribute__((unused)) void * restrict dst,
512810e230b6Smaya                               __attribute__((unused)) const struct GEN8_3DSTATE_SO_DECL_LIST * restrict values)
512910e230b6Smaya{
513010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
513110e230b6Smaya
513210e230b6Smaya   dw[0] =
513310e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
513410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
513510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
513610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
513710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
513810e230b6Smaya
513910e230b6Smaya   dw[1] =
514010e230b6Smaya      __gen_uint(values->StreamtoBufferSelects0, 0, 3) |
514110e230b6Smaya      __gen_uint(values->StreamtoBufferSelects1, 4, 7) |
514210e230b6Smaya      __gen_uint(values->StreamtoBufferSelects2, 8, 11) |
514310e230b6Smaya      __gen_uint(values->StreamtoBufferSelects3, 12, 15);
514410e230b6Smaya
514510e230b6Smaya   dw[2] =
514610e230b6Smaya      __gen_uint(values->NumEntries0, 0, 7) |
514710e230b6Smaya      __gen_uint(values->NumEntries1, 8, 15) |
514810e230b6Smaya      __gen_uint(values->NumEntries2, 16, 23) |
514910e230b6Smaya      __gen_uint(values->NumEntries3, 24, 31);
515010e230b6Smaya}
515110e230b6Smaya
515210e230b6Smaya#define GEN8_3DSTATE_STENCIL_BUFFER_length      5
515310e230b6Smaya#define GEN8_3DSTATE_STENCIL_BUFFER_length_bias      2
515410e230b6Smaya#define GEN8_3DSTATE_STENCIL_BUFFER_header      \
515510e230b6Smaya   .DWordLength                         =      3,  \
515610e230b6Smaya   ._3DCommandSubOpcode                 =      6,  \
515710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
515810e230b6Smaya   .CommandSubType                      =      3,  \
515910e230b6Smaya   .CommandType                         =      3
516010e230b6Smaya
516110e230b6Smayastruct GEN8_3DSTATE_STENCIL_BUFFER {
516210e230b6Smaya   uint32_t                             DWordLength;
516310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
516410e230b6Smaya   uint32_t                             _3DCommandOpcode;
516510e230b6Smaya   uint32_t                             CommandSubType;
516610e230b6Smaya   uint32_t                             CommandType;
516710e230b6Smaya   uint32_t                             SurfacePitch;
516810e230b6Smaya   uint32_t                             MOCS;
516910e230b6Smaya   bool                                 StencilBufferEnable;
517010e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
517110e230b6Smaya   uint32_t                             SurfaceQPitch;
517210e230b6Smaya};
517310e230b6Smaya
517410e230b6Smayastatic inline void
517510e230b6SmayaGEN8_3DSTATE_STENCIL_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
517610e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
517710e230b6Smaya                                 __attribute__((unused)) const struct GEN8_3DSTATE_STENCIL_BUFFER * restrict values)
517810e230b6Smaya{
517910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
518010e230b6Smaya
518110e230b6Smaya   dw[0] =
518210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
518310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
518410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
518510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
518610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
518710e230b6Smaya
518810e230b6Smaya   dw[1] =
518910e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 16) |
519010e230b6Smaya      __gen_uint(values->MOCS, 22, 28) |
519110e230b6Smaya      __gen_uint(values->StencilBufferEnable, 31, 31);
519210e230b6Smaya
519310e230b6Smaya   const uint64_t v2_address =
519410e230b6Smaya      __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0);
519510e230b6Smaya   dw[2] = v2_address;
519610e230b6Smaya   dw[3] = v2_address >> 32;
519710e230b6Smaya
519810e230b6Smaya   dw[4] =
519910e230b6Smaya      __gen_uint(values->SurfaceQPitch, 0, 14);
520010e230b6Smaya}
520110e230b6Smaya
520210e230b6Smaya#define GEN8_3DSTATE_STREAMOUT_length          5
520310e230b6Smaya#define GEN8_3DSTATE_STREAMOUT_length_bias      2
520410e230b6Smaya#define GEN8_3DSTATE_STREAMOUT_header           \
520510e230b6Smaya   .DWordLength                         =      3,  \
520610e230b6Smaya   ._3DCommandSubOpcode                 =     30,  \
520710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
520810e230b6Smaya   .CommandSubType                      =      3,  \
520910e230b6Smaya   .CommandType                         =      3
521010e230b6Smaya
521110e230b6Smayastruct GEN8_3DSTATE_STREAMOUT {
521210e230b6Smaya   uint32_t                             DWordLength;
521310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
521410e230b6Smaya   uint32_t                             _3DCommandOpcode;
521510e230b6Smaya   uint32_t                             CommandSubType;
521610e230b6Smaya   uint32_t                             CommandType;
521710e230b6Smaya   uint32_t                             ForceRendering;
521810e230b6Smaya#define Resreved                                 1
521910e230b6Smaya#define Force_Off                                2
522010e230b6Smaya#define Force_on                                 3
522110e230b6Smaya   bool                                 SOStatisticsEnable;
522210e230b6Smaya   uint32_t                             ReorderMode;
522310e230b6Smaya#define LEADING                                  0
522410e230b6Smaya#define TRAILING                                 1
522510e230b6Smaya   uint32_t                             RenderStreamSelect;
522610e230b6Smaya   bool                                 RenderingDisable;
522710e230b6Smaya   bool                                 SOFunctionEnable;
522810e230b6Smaya   uint32_t                             Stream0VertexReadLength;
522910e230b6Smaya   uint32_t                             Stream0VertexReadOffset;
523010e230b6Smaya   uint32_t                             Stream1VertexReadLength;
523110e230b6Smaya   uint32_t                             Stream1VertexReadOffset;
523210e230b6Smaya   uint32_t                             Stream2VertexReadLength;
523310e230b6Smaya   uint32_t                             Stream2VertexReadOffset;
523410e230b6Smaya   uint32_t                             Stream3VertexReadLength;
523510e230b6Smaya   uint32_t                             Stream3VertexReadOffset;
523610e230b6Smaya   uint32_t                             Buffer0SurfacePitch;
523710e230b6Smaya   uint32_t                             Buffer1SurfacePitch;
523810e230b6Smaya   uint32_t                             Buffer2SurfacePitch;
523910e230b6Smaya   uint32_t                             Buffer3SurfacePitch;
524010e230b6Smaya};
524110e230b6Smaya
524210e230b6Smayastatic inline void
524310e230b6SmayaGEN8_3DSTATE_STREAMOUT_pack(__attribute__((unused)) __gen_user_data *data,
524410e230b6Smaya                            __attribute__((unused)) void * restrict dst,
524510e230b6Smaya                            __attribute__((unused)) const struct GEN8_3DSTATE_STREAMOUT * restrict values)
524610e230b6Smaya{
524710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
524810e230b6Smaya
524910e230b6Smaya   dw[0] =
525010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
525110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
525210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
525310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
525410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
525510e230b6Smaya
525610e230b6Smaya   dw[1] =
525710e230b6Smaya      __gen_uint(values->ForceRendering, 23, 24) |
525810e230b6Smaya      __gen_uint(values->SOStatisticsEnable, 25, 25) |
525910e230b6Smaya      __gen_uint(values->ReorderMode, 26, 26) |
526010e230b6Smaya      __gen_uint(values->RenderStreamSelect, 27, 28) |
526110e230b6Smaya      __gen_uint(values->RenderingDisable, 30, 30) |
526210e230b6Smaya      __gen_uint(values->SOFunctionEnable, 31, 31);
526310e230b6Smaya
526410e230b6Smaya   dw[2] =
526510e230b6Smaya      __gen_uint(values->Stream0VertexReadLength, 0, 4) |
526610e230b6Smaya      __gen_uint(values->Stream0VertexReadOffset, 5, 5) |
526710e230b6Smaya      __gen_uint(values->Stream1VertexReadLength, 8, 12) |
526810e230b6Smaya      __gen_uint(values->Stream1VertexReadOffset, 13, 13) |
526910e230b6Smaya      __gen_uint(values->Stream2VertexReadLength, 16, 20) |
527010e230b6Smaya      __gen_uint(values->Stream2VertexReadOffset, 21, 21) |
527110e230b6Smaya      __gen_uint(values->Stream3VertexReadLength, 24, 28) |
527210e230b6Smaya      __gen_uint(values->Stream3VertexReadOffset, 29, 29);
527310e230b6Smaya
527410e230b6Smaya   dw[3] =
527510e230b6Smaya      __gen_uint(values->Buffer0SurfacePitch, 0, 11) |
527610e230b6Smaya      __gen_uint(values->Buffer1SurfacePitch, 16, 27);
527710e230b6Smaya
527810e230b6Smaya   dw[4] =
527910e230b6Smaya      __gen_uint(values->Buffer2SurfacePitch, 0, 11) |
528010e230b6Smaya      __gen_uint(values->Buffer3SurfacePitch, 16, 27);
528110e230b6Smaya}
528210e230b6Smaya
528310e230b6Smaya#define GEN8_3DSTATE_TE_length                 4
528410e230b6Smaya#define GEN8_3DSTATE_TE_length_bias            2
528510e230b6Smaya#define GEN8_3DSTATE_TE_header                  \
528610e230b6Smaya   .DWordLength                         =      2,  \
528710e230b6Smaya   ._3DCommandSubOpcode                 =     28,  \
528810e230b6Smaya   ._3DCommandOpcode                    =      0,  \
528910e230b6Smaya   .CommandSubType                      =      3,  \
529010e230b6Smaya   .CommandType                         =      3
529110e230b6Smaya
529210e230b6Smayastruct GEN8_3DSTATE_TE {
529310e230b6Smaya   uint32_t                             DWordLength;
529410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
529510e230b6Smaya   uint32_t                             _3DCommandOpcode;
529610e230b6Smaya   uint32_t                             CommandSubType;
529710e230b6Smaya   uint32_t                             CommandType;
529810e230b6Smaya   bool                                 TEEnable;
529910e230b6Smaya   uint32_t                             TEMode;
530010e230b6Smaya#define HW_TESS                                  0
530110e230b6Smaya#define SW_TESS                                  1
530210e230b6Smaya   uint32_t                             TEDomain;
530310e230b6Smaya#define QUAD                                     0
530410e230b6Smaya#define TRI                                      1
530510e230b6Smaya#define ISOLINE                                  2
530610e230b6Smaya   uint32_t                             OutputTopology;
530710e230b6Smaya#define OUTPUT_POINT                             0
530810e230b6Smaya#define OUTPUT_LINE                              1
530910e230b6Smaya#define OUTPUT_TRI_CW                            2
531010e230b6Smaya#define OUTPUT_TRI_CCW                           3
531110e230b6Smaya   uint32_t                             Partitioning;
531210e230b6Smaya#define INTEGER                                  0
531310e230b6Smaya#define ODD_FRACTIONAL                           1
531410e230b6Smaya#define EVEN_FRACTIONAL                          2
531510e230b6Smaya   float                                MaximumTessellationFactorOdd;
531610e230b6Smaya   float                                MaximumTessellationFactorNotOdd;
531710e230b6Smaya};
531810e230b6Smaya
531910e230b6Smayastatic inline void
532010e230b6SmayaGEN8_3DSTATE_TE_pack(__attribute__((unused)) __gen_user_data *data,
532110e230b6Smaya                     __attribute__((unused)) void * restrict dst,
532210e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_TE * restrict values)
532310e230b6Smaya{
532410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
532510e230b6Smaya
532610e230b6Smaya   dw[0] =
532710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
532810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
532910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
533010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
533110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
533210e230b6Smaya
533310e230b6Smaya   dw[1] =
533410e230b6Smaya      __gen_uint(values->TEEnable, 0, 0) |
533510e230b6Smaya      __gen_uint(values->TEMode, 1, 2) |
533610e230b6Smaya      __gen_uint(values->TEDomain, 4, 5) |
533710e230b6Smaya      __gen_uint(values->OutputTopology, 8, 9) |
533810e230b6Smaya      __gen_uint(values->Partitioning, 12, 13);
533910e230b6Smaya
534010e230b6Smaya   dw[2] =
534110e230b6Smaya      __gen_float(values->MaximumTessellationFactorOdd);
534210e230b6Smaya
534310e230b6Smaya   dw[3] =
534410e230b6Smaya      __gen_float(values->MaximumTessellationFactorNotOdd);
534510e230b6Smaya}
534610e230b6Smaya
534710e230b6Smaya#define GEN8_3DSTATE_URB_DS_length             2
534810e230b6Smaya#define GEN8_3DSTATE_URB_DS_length_bias        2
534910e230b6Smaya#define GEN8_3DSTATE_URB_DS_header              \
535010e230b6Smaya   .DWordLength                         =      0,  \
535110e230b6Smaya   ._3DCommandSubOpcode                 =     50,  \
535210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
535310e230b6Smaya   .CommandSubType                      =      3,  \
535410e230b6Smaya   .CommandType                         =      3
535510e230b6Smaya
535610e230b6Smayastruct GEN8_3DSTATE_URB_DS {
535710e230b6Smaya   uint32_t                             DWordLength;
535810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
535910e230b6Smaya   uint32_t                             _3DCommandOpcode;
536010e230b6Smaya   uint32_t                             CommandSubType;
536110e230b6Smaya   uint32_t                             CommandType;
536210e230b6Smaya   uint32_t                             DSNumberofURBEntries;
536310e230b6Smaya   uint32_t                             DSURBEntryAllocationSize;
536410e230b6Smaya   uint32_t                             DSURBStartingAddress;
536510e230b6Smaya};
536610e230b6Smaya
536710e230b6Smayastatic inline void
536810e230b6SmayaGEN8_3DSTATE_URB_DS_pack(__attribute__((unused)) __gen_user_data *data,
536910e230b6Smaya                         __attribute__((unused)) void * restrict dst,
537010e230b6Smaya                         __attribute__((unused)) const struct GEN8_3DSTATE_URB_DS * restrict values)
537110e230b6Smaya{
537210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
537310e230b6Smaya
537410e230b6Smaya   dw[0] =
537510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
537610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
537710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
537810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
537910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
538010e230b6Smaya
538110e230b6Smaya   dw[1] =
538210e230b6Smaya      __gen_uint(values->DSNumberofURBEntries, 0, 15) |
538310e230b6Smaya      __gen_uint(values->DSURBEntryAllocationSize, 16, 24) |
538410e230b6Smaya      __gen_uint(values->DSURBStartingAddress, 25, 31);
538510e230b6Smaya}
538610e230b6Smaya
538710e230b6Smaya#define GEN8_3DSTATE_URB_GS_length             2
538810e230b6Smaya#define GEN8_3DSTATE_URB_GS_length_bias        2
538910e230b6Smaya#define GEN8_3DSTATE_URB_GS_header              \
539010e230b6Smaya   .DWordLength                         =      0,  \
539110e230b6Smaya   ._3DCommandSubOpcode                 =     51,  \
539210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
539310e230b6Smaya   .CommandSubType                      =      3,  \
539410e230b6Smaya   .CommandType                         =      3
539510e230b6Smaya
539610e230b6Smayastruct GEN8_3DSTATE_URB_GS {
539710e230b6Smaya   uint32_t                             DWordLength;
539810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
539910e230b6Smaya   uint32_t                             _3DCommandOpcode;
540010e230b6Smaya   uint32_t                             CommandSubType;
540110e230b6Smaya   uint32_t                             CommandType;
540210e230b6Smaya   uint32_t                             GSNumberofURBEntries;
540310e230b6Smaya   uint32_t                             GSURBEntryAllocationSize;
540410e230b6Smaya   uint32_t                             GSURBStartingAddress;
540510e230b6Smaya};
540610e230b6Smaya
540710e230b6Smayastatic inline void
540810e230b6SmayaGEN8_3DSTATE_URB_GS_pack(__attribute__((unused)) __gen_user_data *data,
540910e230b6Smaya                         __attribute__((unused)) void * restrict dst,
541010e230b6Smaya                         __attribute__((unused)) const struct GEN8_3DSTATE_URB_GS * restrict values)
541110e230b6Smaya{
541210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
541310e230b6Smaya
541410e230b6Smaya   dw[0] =
541510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
541610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
541710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
541810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
541910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
542010e230b6Smaya
542110e230b6Smaya   dw[1] =
542210e230b6Smaya      __gen_uint(values->GSNumberofURBEntries, 0, 15) |
542310e230b6Smaya      __gen_uint(values->GSURBEntryAllocationSize, 16, 24) |
542410e230b6Smaya      __gen_uint(values->GSURBStartingAddress, 25, 31);
542510e230b6Smaya}
542610e230b6Smaya
542710e230b6Smaya#define GEN8_3DSTATE_URB_HS_length             2
542810e230b6Smaya#define GEN8_3DSTATE_URB_HS_length_bias        2
542910e230b6Smaya#define GEN8_3DSTATE_URB_HS_header              \
543010e230b6Smaya   .DWordLength                         =      0,  \
543110e230b6Smaya   ._3DCommandSubOpcode                 =     49,  \
543210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
543310e230b6Smaya   .CommandSubType                      =      3,  \
543410e230b6Smaya   .CommandType                         =      3
543510e230b6Smaya
543610e230b6Smayastruct GEN8_3DSTATE_URB_HS {
543710e230b6Smaya   uint32_t                             DWordLength;
543810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
543910e230b6Smaya   uint32_t                             _3DCommandOpcode;
544010e230b6Smaya   uint32_t                             CommandSubType;
544110e230b6Smaya   uint32_t                             CommandType;
544210e230b6Smaya   uint32_t                             HSNumberofURBEntries;
544310e230b6Smaya   uint32_t                             HSURBEntryAllocationSize;
544410e230b6Smaya   uint32_t                             HSURBStartingAddress;
544510e230b6Smaya};
544610e230b6Smaya
544710e230b6Smayastatic inline void
544810e230b6SmayaGEN8_3DSTATE_URB_HS_pack(__attribute__((unused)) __gen_user_data *data,
544910e230b6Smaya                         __attribute__((unused)) void * restrict dst,
545010e230b6Smaya                         __attribute__((unused)) const struct GEN8_3DSTATE_URB_HS * restrict values)
545110e230b6Smaya{
545210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
545310e230b6Smaya
545410e230b6Smaya   dw[0] =
545510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
545610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
545710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
545810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
545910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
546010e230b6Smaya
546110e230b6Smaya   dw[1] =
546210e230b6Smaya      __gen_uint(values->HSNumberofURBEntries, 0, 15) |
546310e230b6Smaya      __gen_uint(values->HSURBEntryAllocationSize, 16, 24) |
546410e230b6Smaya      __gen_uint(values->HSURBStartingAddress, 25, 31);
546510e230b6Smaya}
546610e230b6Smaya
546710e230b6Smaya#define GEN8_3DSTATE_URB_VS_length             2
546810e230b6Smaya#define GEN8_3DSTATE_URB_VS_length_bias        2
546910e230b6Smaya#define GEN8_3DSTATE_URB_VS_header              \
547010e230b6Smaya   .DWordLength                         =      0,  \
547110e230b6Smaya   ._3DCommandSubOpcode                 =     48,  \
547210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
547310e230b6Smaya   .CommandSubType                      =      3,  \
547410e230b6Smaya   .CommandType                         =      3
547510e230b6Smaya
547610e230b6Smayastruct GEN8_3DSTATE_URB_VS {
547710e230b6Smaya   uint32_t                             DWordLength;
547810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
547910e230b6Smaya   uint32_t                             _3DCommandOpcode;
548010e230b6Smaya   uint32_t                             CommandSubType;
548110e230b6Smaya   uint32_t                             CommandType;
548210e230b6Smaya   uint32_t                             VSNumberofURBEntries;
548310e230b6Smaya   uint32_t                             VSURBEntryAllocationSize;
548410e230b6Smaya   uint32_t                             VSURBStartingAddress;
548510e230b6Smaya};
548610e230b6Smaya
548710e230b6Smayastatic inline void
548810e230b6SmayaGEN8_3DSTATE_URB_VS_pack(__attribute__((unused)) __gen_user_data *data,
548910e230b6Smaya                         __attribute__((unused)) void * restrict dst,
549010e230b6Smaya                         __attribute__((unused)) const struct GEN8_3DSTATE_URB_VS * restrict values)
549110e230b6Smaya{
549210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
549310e230b6Smaya
549410e230b6Smaya   dw[0] =
549510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
549610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
549710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
549810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
549910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
550010e230b6Smaya
550110e230b6Smaya   dw[1] =
550210e230b6Smaya      __gen_uint(values->VSNumberofURBEntries, 0, 15) |
550310e230b6Smaya      __gen_uint(values->VSURBEntryAllocationSize, 16, 24) |
550410e230b6Smaya      __gen_uint(values->VSURBStartingAddress, 25, 31);
550510e230b6Smaya}
550610e230b6Smaya
550710e230b6Smaya#define GEN8_3DSTATE_VERTEX_BUFFERS_length_bias      2
550810e230b6Smaya#define GEN8_3DSTATE_VERTEX_BUFFERS_header      \
550910e230b6Smaya   .DWordLength                         =      3,  \
551010e230b6Smaya   ._3DCommandSubOpcode                 =      8,  \
551110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
551210e230b6Smaya   .CommandSubType                      =      3,  \
551310e230b6Smaya   .CommandType                         =      3
551410e230b6Smaya
551510e230b6Smayastruct GEN8_3DSTATE_VERTEX_BUFFERS {
551610e230b6Smaya   uint32_t                             DWordLength;
551710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
551810e230b6Smaya   uint32_t                             _3DCommandOpcode;
551910e230b6Smaya   uint32_t                             CommandSubType;
552010e230b6Smaya   uint32_t                             CommandType;
552110e230b6Smaya   /* variable length fields follow */
552210e230b6Smaya};
552310e230b6Smaya
552410e230b6Smayastatic inline void
552510e230b6SmayaGEN8_3DSTATE_VERTEX_BUFFERS_pack(__attribute__((unused)) __gen_user_data *data,
552610e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
552710e230b6Smaya                                 __attribute__((unused)) const struct GEN8_3DSTATE_VERTEX_BUFFERS * restrict values)
552810e230b6Smaya{
552910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
553010e230b6Smaya
553110e230b6Smaya   dw[0] =
553210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
553310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
553410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
553510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
553610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
553710e230b6Smaya}
553810e230b6Smaya
553910e230b6Smaya#define GEN8_3DSTATE_VERTEX_ELEMENTS_length_bias      2
554010e230b6Smaya#define GEN8_3DSTATE_VERTEX_ELEMENTS_header     \
554110e230b6Smaya   .DWordLength                         =      1,  \
554210e230b6Smaya   ._3DCommandSubOpcode                 =      9,  \
554310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
554410e230b6Smaya   .CommandSubType                      =      3,  \
554510e230b6Smaya   .CommandType                         =      3
554610e230b6Smaya
554710e230b6Smayastruct GEN8_3DSTATE_VERTEX_ELEMENTS {
554810e230b6Smaya   uint32_t                             DWordLength;
554910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
555010e230b6Smaya   uint32_t                             _3DCommandOpcode;
555110e230b6Smaya   uint32_t                             CommandSubType;
555210e230b6Smaya   uint32_t                             CommandType;
555310e230b6Smaya   /* variable length fields follow */
555410e230b6Smaya};
555510e230b6Smaya
555610e230b6Smayastatic inline void
555710e230b6SmayaGEN8_3DSTATE_VERTEX_ELEMENTS_pack(__attribute__((unused)) __gen_user_data *data,
555810e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
555910e230b6Smaya                                  __attribute__((unused)) const struct GEN8_3DSTATE_VERTEX_ELEMENTS * restrict values)
556010e230b6Smaya{
556110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
556210e230b6Smaya
556310e230b6Smaya   dw[0] =
556410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
556510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
556610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
556710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
556810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
556910e230b6Smaya}
557010e230b6Smaya
557110e230b6Smaya#define GEN8_3DSTATE_VF_length                 2
557210e230b6Smaya#define GEN8_3DSTATE_VF_length_bias            2
557310e230b6Smaya#define GEN8_3DSTATE_VF_header                  \
557410e230b6Smaya   .DWordLength                         =      0,  \
557510e230b6Smaya   ._3DCommandSubOpcode                 =     12,  \
557610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
557710e230b6Smaya   .CommandSubType                      =      3,  \
557810e230b6Smaya   .CommandType                         =      3
557910e230b6Smaya
558010e230b6Smayastruct GEN8_3DSTATE_VF {
558110e230b6Smaya   uint32_t                             DWordLength;
558210e230b6Smaya   bool                                 IndexedDrawCutIndexEnable;
558310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
558410e230b6Smaya   uint32_t                             _3DCommandOpcode;
558510e230b6Smaya   uint32_t                             CommandSubType;
558610e230b6Smaya   uint32_t                             CommandType;
558710e230b6Smaya   uint32_t                             CutIndex;
558810e230b6Smaya};
558910e230b6Smaya
559010e230b6Smayastatic inline void
559110e230b6SmayaGEN8_3DSTATE_VF_pack(__attribute__((unused)) __gen_user_data *data,
559210e230b6Smaya                     __attribute__((unused)) void * restrict dst,
559310e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_VF * restrict values)
559410e230b6Smaya{
559510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
559610e230b6Smaya
559710e230b6Smaya   dw[0] =
559810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
559910e230b6Smaya      __gen_uint(values->IndexedDrawCutIndexEnable, 8, 8) |
560010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
560110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
560210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
560310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
560410e230b6Smaya
560510e230b6Smaya   dw[1] =
560610e230b6Smaya      __gen_uint(values->CutIndex, 0, 31);
560710e230b6Smaya}
560810e230b6Smaya
560910e230b6Smaya#define GEN8_3DSTATE_VF_INSTANCING_length      3
561010e230b6Smaya#define GEN8_3DSTATE_VF_INSTANCING_length_bias      2
561110e230b6Smaya#define GEN8_3DSTATE_VF_INSTANCING_header       \
561210e230b6Smaya   .DWordLength                         =      1,  \
561310e230b6Smaya   ._3DCommandSubOpcode                 =     73,  \
561410e230b6Smaya   ._3DCommandOpcode                    =      0,  \
561510e230b6Smaya   .CommandSubType                      =      3,  \
561610e230b6Smaya   .CommandType                         =      3
561710e230b6Smaya
561810e230b6Smayastruct GEN8_3DSTATE_VF_INSTANCING {
561910e230b6Smaya   uint32_t                             DWordLength;
562010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
562110e230b6Smaya   uint32_t                             _3DCommandOpcode;
562210e230b6Smaya   uint32_t                             CommandSubType;
562310e230b6Smaya   uint32_t                             CommandType;
562410e230b6Smaya   uint32_t                             VertexElementIndex;
562510e230b6Smaya   bool                                 InstancingEnable;
562610e230b6Smaya   uint32_t                             InstanceDataStepRate;
562710e230b6Smaya};
562810e230b6Smaya
562910e230b6Smayastatic inline void
563010e230b6SmayaGEN8_3DSTATE_VF_INSTANCING_pack(__attribute__((unused)) __gen_user_data *data,
563110e230b6Smaya                                __attribute__((unused)) void * restrict dst,
563210e230b6Smaya                                __attribute__((unused)) const struct GEN8_3DSTATE_VF_INSTANCING * restrict values)
563310e230b6Smaya{
563410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
563510e230b6Smaya
563610e230b6Smaya   dw[0] =
563710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
563810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
563910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
564010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
564110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
564210e230b6Smaya
564310e230b6Smaya   dw[1] =
564410e230b6Smaya      __gen_uint(values->VertexElementIndex, 0, 5) |
564510e230b6Smaya      __gen_uint(values->InstancingEnable, 8, 8);
564610e230b6Smaya
564710e230b6Smaya   dw[2] =
564810e230b6Smaya      __gen_uint(values->InstanceDataStepRate, 0, 31);
564910e230b6Smaya}
565010e230b6Smaya
565110e230b6Smaya#define GEN8_3DSTATE_VF_SGVS_length            2
565210e230b6Smaya#define GEN8_3DSTATE_VF_SGVS_length_bias       2
565310e230b6Smaya#define GEN8_3DSTATE_VF_SGVS_header             \
565410e230b6Smaya   .DWordLength                         =      0,  \
565510e230b6Smaya   ._3DCommandSubOpcode                 =     74,  \
565610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
565710e230b6Smaya   .CommandSubType                      =      3,  \
565810e230b6Smaya   .CommandType                         =      3
565910e230b6Smaya
566010e230b6Smayastruct GEN8_3DSTATE_VF_SGVS {
566110e230b6Smaya   uint32_t                             DWordLength;
566210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
566310e230b6Smaya   uint32_t                             _3DCommandOpcode;
566410e230b6Smaya   uint32_t                             CommandSubType;
566510e230b6Smaya   uint32_t                             CommandType;
566610e230b6Smaya   uint32_t                             VertexIDElementOffset;
566710e230b6Smaya   uint32_t                             VertexIDComponentNumber;
566810e230b6Smaya#define COMP_0                                   0
566910e230b6Smaya#define COMP_1                                   1
567010e230b6Smaya#define COMP_2                                   2
567110e230b6Smaya#define COMP_3                                   3
567210e230b6Smaya   bool                                 VertexIDEnable;
567310e230b6Smaya   uint32_t                             InstanceIDElementOffset;
567410e230b6Smaya   uint32_t                             InstanceIDComponentNumber;
567510e230b6Smaya#define COMP_0                                   0
567610e230b6Smaya#define COMP_1                                   1
567710e230b6Smaya#define COMP_2                                   2
567810e230b6Smaya#define COMP_3                                   3
567910e230b6Smaya   bool                                 InstanceIDEnable;
568010e230b6Smaya};
568110e230b6Smaya
568210e230b6Smayastatic inline void
568310e230b6SmayaGEN8_3DSTATE_VF_SGVS_pack(__attribute__((unused)) __gen_user_data *data,
568410e230b6Smaya                          __attribute__((unused)) void * restrict dst,
568510e230b6Smaya                          __attribute__((unused)) const struct GEN8_3DSTATE_VF_SGVS * restrict values)
568610e230b6Smaya{
568710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
568810e230b6Smaya
568910e230b6Smaya   dw[0] =
569010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
569110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
569210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
569310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
569410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
569510e230b6Smaya
569610e230b6Smaya   dw[1] =
569710e230b6Smaya      __gen_uint(values->VertexIDElementOffset, 0, 5) |
569810e230b6Smaya      __gen_uint(values->VertexIDComponentNumber, 13, 14) |
569910e230b6Smaya      __gen_uint(values->VertexIDEnable, 15, 15) |
570010e230b6Smaya      __gen_uint(values->InstanceIDElementOffset, 16, 21) |
570110e230b6Smaya      __gen_uint(values->InstanceIDComponentNumber, 29, 30) |
570210e230b6Smaya      __gen_uint(values->InstanceIDEnable, 31, 31);
570310e230b6Smaya}
570410e230b6Smaya
570510e230b6Smaya#define GEN8_3DSTATE_VF_STATISTICS_length      1
570610e230b6Smaya#define GEN8_3DSTATE_VF_STATISTICS_length_bias      1
570710e230b6Smaya#define GEN8_3DSTATE_VF_STATISTICS_header       \
570810e230b6Smaya   ._3DCommandSubOpcode                 =     11,  \
570910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
571010e230b6Smaya   .CommandSubType                      =      1,  \
571110e230b6Smaya   .CommandType                         =      3
571210e230b6Smaya
571310e230b6Smayastruct GEN8_3DSTATE_VF_STATISTICS {
571410e230b6Smaya   bool                                 StatisticsEnable;
571510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
571610e230b6Smaya   uint32_t                             _3DCommandOpcode;
571710e230b6Smaya   uint32_t                             CommandSubType;
571810e230b6Smaya   uint32_t                             CommandType;
571910e230b6Smaya};
572010e230b6Smaya
572110e230b6Smayastatic inline void
572210e230b6SmayaGEN8_3DSTATE_VF_STATISTICS_pack(__attribute__((unused)) __gen_user_data *data,
572310e230b6Smaya                                __attribute__((unused)) void * restrict dst,
572410e230b6Smaya                                __attribute__((unused)) const struct GEN8_3DSTATE_VF_STATISTICS * restrict values)
572510e230b6Smaya{
572610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
572710e230b6Smaya
572810e230b6Smaya   dw[0] =
572910e230b6Smaya      __gen_uint(values->StatisticsEnable, 0, 0) |
573010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
573110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
573210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
573310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
573410e230b6Smaya}
573510e230b6Smaya
573610e230b6Smaya#define GEN8_3DSTATE_VF_TOPOLOGY_length        2
573710e230b6Smaya#define GEN8_3DSTATE_VF_TOPOLOGY_length_bias      2
573810e230b6Smaya#define GEN8_3DSTATE_VF_TOPOLOGY_header         \
573910e230b6Smaya   .DWordLength                         =      0,  \
574010e230b6Smaya   ._3DCommandSubOpcode                 =     75,  \
574110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
574210e230b6Smaya   .CommandSubType                      =      3,  \
574310e230b6Smaya   .CommandType                         =      3
574410e230b6Smaya
574510e230b6Smayastruct GEN8_3DSTATE_VF_TOPOLOGY {
574610e230b6Smaya   uint32_t                             DWordLength;
574710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
574810e230b6Smaya   uint32_t                             _3DCommandOpcode;
574910e230b6Smaya   uint32_t                             CommandSubType;
575010e230b6Smaya   uint32_t                             CommandType;
575110e230b6Smaya   enum GEN8_3D_Prim_Topo_Type          PrimitiveTopologyType;
575210e230b6Smaya};
575310e230b6Smaya
575410e230b6Smayastatic inline void
575510e230b6SmayaGEN8_3DSTATE_VF_TOPOLOGY_pack(__attribute__((unused)) __gen_user_data *data,
575610e230b6Smaya                              __attribute__((unused)) void * restrict dst,
575710e230b6Smaya                              __attribute__((unused)) const struct GEN8_3DSTATE_VF_TOPOLOGY * restrict values)
575810e230b6Smaya{
575910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
576010e230b6Smaya
576110e230b6Smaya   dw[0] =
576210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
576310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
576410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
576510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
576610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
576710e230b6Smaya
576810e230b6Smaya   dw[1] =
576910e230b6Smaya      __gen_uint(values->PrimitiveTopologyType, 0, 5);
577010e230b6Smaya}
577110e230b6Smaya
577210e230b6Smaya#define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length      2
577310e230b6Smaya#define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length_bias      2
577410e230b6Smaya#define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_header\
577510e230b6Smaya   .DWordLength                         =      0,  \
577610e230b6Smaya   ._3DCommandSubOpcode                 =     35,  \
577710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
577810e230b6Smaya   .CommandSubType                      =      3,  \
577910e230b6Smaya   .CommandType                         =      3
578010e230b6Smaya
578110e230b6Smayastruct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC {
578210e230b6Smaya   uint32_t                             DWordLength;
578310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
578410e230b6Smaya   uint32_t                             _3DCommandOpcode;
578510e230b6Smaya   uint32_t                             CommandSubType;
578610e230b6Smaya   uint32_t                             CommandType;
578710e230b6Smaya   uint64_t                             CCViewportPointer;
578810e230b6Smaya};
578910e230b6Smaya
579010e230b6Smayastatic inline void
579110e230b6SmayaGEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_pack(__attribute__((unused)) __gen_user_data *data,
579210e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
579310e230b6Smaya                                             __attribute__((unused)) const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC * restrict values)
579410e230b6Smaya{
579510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
579610e230b6Smaya
579710e230b6Smaya   dw[0] =
579810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
579910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
580010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
580110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
580210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
580310e230b6Smaya
580410e230b6Smaya   dw[1] =
580510e230b6Smaya      __gen_offset(values->CCViewportPointer, 5, 31);
580610e230b6Smaya}
580710e230b6Smaya
580810e230b6Smaya#define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length      2
580910e230b6Smaya#define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length_bias      2
581010e230b6Smaya#define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_header\
581110e230b6Smaya   .DWordLength                         =      0,  \
581210e230b6Smaya   ._3DCommandSubOpcode                 =     33,  \
581310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
581410e230b6Smaya   .CommandSubType                      =      3,  \
581510e230b6Smaya   .CommandType                         =      3
581610e230b6Smaya
581710e230b6Smayastruct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP {
581810e230b6Smaya   uint32_t                             DWordLength;
581910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
582010e230b6Smaya   uint32_t                             _3DCommandOpcode;
582110e230b6Smaya   uint32_t                             CommandSubType;
582210e230b6Smaya   uint32_t                             CommandType;
582310e230b6Smaya   uint64_t                             SFClipViewportPointer;
582410e230b6Smaya};
582510e230b6Smaya
582610e230b6Smayastatic inline void
582710e230b6SmayaGEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_pack(__attribute__((unused)) __gen_user_data *data,
582810e230b6Smaya                                                  __attribute__((unused)) void * restrict dst,
582910e230b6Smaya                                                  __attribute__((unused)) const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP * restrict values)
583010e230b6Smaya{
583110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
583210e230b6Smaya
583310e230b6Smaya   dw[0] =
583410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
583510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
583610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
583710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
583810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
583910e230b6Smaya
584010e230b6Smaya   dw[1] =
584110e230b6Smaya      __gen_offset(values->SFClipViewportPointer, 6, 31);
584210e230b6Smaya}
584310e230b6Smaya
584410e230b6Smaya#define GEN8_3DSTATE_VS_length                 9
584510e230b6Smaya#define GEN8_3DSTATE_VS_length_bias            2
584610e230b6Smaya#define GEN8_3DSTATE_VS_header                  \
584710e230b6Smaya   .DWordLength                         =      7,  \
584810e230b6Smaya   ._3DCommandSubOpcode                 =     16,  \
584910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
585010e230b6Smaya   .CommandSubType                      =      3,  \
585110e230b6Smaya   .CommandType                         =      3
585210e230b6Smaya
585310e230b6Smayastruct GEN8_3DSTATE_VS {
585410e230b6Smaya   uint32_t                             DWordLength;
585510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
585610e230b6Smaya   uint32_t                             _3DCommandOpcode;
585710e230b6Smaya   uint32_t                             CommandSubType;
585810e230b6Smaya   uint32_t                             CommandType;
585910e230b6Smaya   uint64_t                             KernelStartPointer;
586010e230b6Smaya   bool                                 SoftwareExceptionEnable;
586110e230b6Smaya   bool                                 AccessesUAV;
586210e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
586310e230b6Smaya   uint32_t                             FloatingPointMode;
586410e230b6Smaya#define IEEE754                                  0
586510e230b6Smaya#define Alternate                                1
586610e230b6Smaya   uint32_t                             ThreadDispatchPriority;
586710e230b6Smaya#define High                                     1
586810e230b6Smaya   uint32_t                             BindingTableEntryCount;
586910e230b6Smaya   uint32_t                             SamplerCount;
587010e230b6Smaya#define NoSamplers                               0
587110e230b6Smaya#define _14Samplers                              1
587210e230b6Smaya#define _58Samplers                              2
587310e230b6Smaya#define _912Samplers                             3
587410e230b6Smaya#define _1316Samplers                            4
587510e230b6Smaya   bool                                 VectorMaskEnable;
587610e230b6Smaya   bool                                 SingleVertexDispatch;
587710e230b6Smaya   uint32_t                             PerThreadScratchSpace;
587810e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
587910e230b6Smaya   uint32_t                             VertexURBEntryReadOffset;
588010e230b6Smaya   uint32_t                             VertexURBEntryReadLength;
588110e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForURBData;
588210e230b6Smaya   bool                                 Enable;
588310e230b6Smaya   bool                                 VertexCacheDisable;
588410e230b6Smaya   bool                                 SIMD8DispatchEnable;
588510e230b6Smaya   bool                                 StatisticsEnable;
588610e230b6Smaya   uint32_t                             MaximumNumberofThreads;
588710e230b6Smaya   uint32_t                             UserClipDistanceCullTestEnableBitmask;
588810e230b6Smaya   uint32_t                             UserClipDistanceClipTestEnableBitmask;
588910e230b6Smaya   uint32_t                             VertexURBEntryOutputLength;
589010e230b6Smaya   uint32_t                             VertexURBEntryOutputReadOffset;
589110e230b6Smaya};
589210e230b6Smaya
589310e230b6Smayastatic inline void
589410e230b6SmayaGEN8_3DSTATE_VS_pack(__attribute__((unused)) __gen_user_data *data,
589510e230b6Smaya                     __attribute__((unused)) void * restrict dst,
589610e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_VS * restrict values)
589710e230b6Smaya{
589810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
589910e230b6Smaya
590010e230b6Smaya   dw[0] =
590110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
590210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
590310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
590410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
590510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
590610e230b6Smaya
590710e230b6Smaya   const uint64_t v1 =
590810e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 63);
590910e230b6Smaya   dw[1] = v1;
591010e230b6Smaya   dw[2] = v1 >> 32;
591110e230b6Smaya
591210e230b6Smaya   dw[3] =
591310e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
591410e230b6Smaya      __gen_uint(values->AccessesUAV, 12, 12) |
591510e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
591610e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
591710e230b6Smaya      __gen_uint(values->ThreadDispatchPriority, 17, 17) |
591810e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
591910e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29) |
592010e230b6Smaya      __gen_uint(values->VectorMaskEnable, 30, 30) |
592110e230b6Smaya      __gen_uint(values->SingleVertexDispatch, 31, 31);
592210e230b6Smaya
592310e230b6Smaya   const uint64_t v4 =
592410e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
592510e230b6Smaya   const uint64_t v4_address =
592610e230b6Smaya      __gen_combine_address(data, &dw[4], values->ScratchSpaceBasePointer, v4);
592710e230b6Smaya   dw[4] = v4_address;
592810e230b6Smaya   dw[5] = (v4_address >> 32) | (v4 >> 32);
592910e230b6Smaya
593010e230b6Smaya   dw[6] =
593110e230b6Smaya      __gen_uint(values->VertexURBEntryReadOffset, 4, 9) |
593210e230b6Smaya      __gen_uint(values->VertexURBEntryReadLength, 11, 16) |
593310e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForURBData, 20, 24);
593410e230b6Smaya
593510e230b6Smaya   dw[7] =
593610e230b6Smaya      __gen_uint(values->Enable, 0, 0) |
593710e230b6Smaya      __gen_uint(values->VertexCacheDisable, 1, 1) |
593810e230b6Smaya      __gen_uint(values->SIMD8DispatchEnable, 2, 2) |
593910e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
594010e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 23, 31);
594110e230b6Smaya
594210e230b6Smaya   dw[8] =
594310e230b6Smaya      __gen_uint(values->UserClipDistanceCullTestEnableBitmask, 0, 7) |
594410e230b6Smaya      __gen_uint(values->UserClipDistanceClipTestEnableBitmask, 8, 15) |
594510e230b6Smaya      __gen_uint(values->VertexURBEntryOutputLength, 16, 20) |
594610e230b6Smaya      __gen_uint(values->VertexURBEntryOutputReadOffset, 21, 26);
594710e230b6Smaya}
594810e230b6Smaya
594910e230b6Smaya#define GEN8_3DSTATE_WM_length                 2
595010e230b6Smaya#define GEN8_3DSTATE_WM_length_bias            2
595110e230b6Smaya#define GEN8_3DSTATE_WM_header                  \
595210e230b6Smaya   .DWordLength                         =      0,  \
595310e230b6Smaya   ._3DCommandSubOpcode                 =     20,  \
595410e230b6Smaya   ._3DCommandOpcode                    =      0,  \
595510e230b6Smaya   .CommandSubType                      =      3,  \
595610e230b6Smaya   .CommandType                         =      3
595710e230b6Smaya
595810e230b6Smayastruct GEN8_3DSTATE_WM {
595910e230b6Smaya   uint32_t                             DWordLength;
596010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
596110e230b6Smaya   uint32_t                             _3DCommandOpcode;
596210e230b6Smaya   uint32_t                             CommandSubType;
596310e230b6Smaya   uint32_t                             CommandType;
596410e230b6Smaya   uint32_t                             ForceKillPixelEnable;
596510e230b6Smaya#define ForceOff                                 1
596610e230b6Smaya#define ForceON                                  2
596710e230b6Smaya   uint32_t                             PointRasterizationRule;
596810e230b6Smaya#define RASTRULE_UPPER_LEFT                      0
596910e230b6Smaya#define RASTRULE_UPPER_RIGHT                     1
597010e230b6Smaya   bool                                 LineStippleEnable;
597110e230b6Smaya   bool                                 PolygonStippleEnable;
597210e230b6Smaya   uint32_t                             LineAntialiasingRegionWidth;
597310e230b6Smaya#define _05pixels                                0
597410e230b6Smaya#define _10pixels                                1
597510e230b6Smaya#define _20pixels                                2
597610e230b6Smaya#define _40pixels                                3
597710e230b6Smaya   uint32_t                             LineEndCapAntialiasingRegionWidth;
597810e230b6Smaya#define _05pixels                                0
597910e230b6Smaya#define _10pixels                                1
598010e230b6Smaya#define _20pixels                                2
598110e230b6Smaya#define _40pixels                                3
598210e230b6Smaya   uint32_t                             BarycentricInterpolationMode;
598310e230b6Smaya#define BIM_PERSPECTIVE_PIXEL                    1
598410e230b6Smaya#define BIM_PERSPECTIVE_CENTROID                 2
598510e230b6Smaya#define BIM_PERSPECTIVE_SAMPLE                   4
598610e230b6Smaya#define BIM_LINEAR_PIXEL                         8
598710e230b6Smaya#define BIM_LINEAR_CENTROID                      16
598810e230b6Smaya#define BIM_LINEAR_SAMPLE                        32
598910e230b6Smaya   uint32_t                             PositionZWInterpolationMode;
599010e230b6Smaya#define INTERP_PIXEL                             0
599110e230b6Smaya#define INTERP_CENTROID                          2
599210e230b6Smaya#define INTERP_SAMPLE                            3
599310e230b6Smaya   uint32_t                             ForceThreadDispatchEnable;
599410e230b6Smaya#define ForceOff                                 1
599510e230b6Smaya#define ForceON                                  2
599610e230b6Smaya   uint32_t                             EarlyDepthStencilControl;
599710e230b6Smaya#define EDSC_NORMAL                              0
599810e230b6Smaya#define EDSC_PSEXEC                              1
599910e230b6Smaya#define EDSC_PREPS                               2
600010e230b6Smaya   bool                                 LegacyDiamondLineRasterization;
600110e230b6Smaya   bool                                 LegacyHierarchicalDepthBufferResolveEnable;
600210e230b6Smaya   bool                                 LegacyDepthBufferResolveEnable;
600310e230b6Smaya   bool                                 LegacyDepthBufferClearEnable;
600410e230b6Smaya   bool                                 StatisticsEnable;
600510e230b6Smaya};
600610e230b6Smaya
600710e230b6Smayastatic inline void
600810e230b6SmayaGEN8_3DSTATE_WM_pack(__attribute__((unused)) __gen_user_data *data,
600910e230b6Smaya                     __attribute__((unused)) void * restrict dst,
601010e230b6Smaya                     __attribute__((unused)) const struct GEN8_3DSTATE_WM * restrict values)
601110e230b6Smaya{
601210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
601310e230b6Smaya
601410e230b6Smaya   dw[0] =
601510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
601610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
601710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
601810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
601910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
602010e230b6Smaya
602110e230b6Smaya   dw[1] =
602210e230b6Smaya      __gen_uint(values->ForceKillPixelEnable, 0, 1) |
602310e230b6Smaya      __gen_uint(values->PointRasterizationRule, 2, 2) |
602410e230b6Smaya      __gen_uint(values->LineStippleEnable, 3, 3) |
602510e230b6Smaya      __gen_uint(values->PolygonStippleEnable, 4, 4) |
602610e230b6Smaya      __gen_uint(values->LineAntialiasingRegionWidth, 6, 7) |
602710e230b6Smaya      __gen_uint(values->LineEndCapAntialiasingRegionWidth, 8, 9) |
602810e230b6Smaya      __gen_uint(values->BarycentricInterpolationMode, 11, 16) |
602910e230b6Smaya      __gen_uint(values->PositionZWInterpolationMode, 17, 18) |
603010e230b6Smaya      __gen_uint(values->ForceThreadDispatchEnable, 19, 20) |
603110e230b6Smaya      __gen_uint(values->EarlyDepthStencilControl, 21, 22) |
603210e230b6Smaya      __gen_uint(values->LegacyDiamondLineRasterization, 26, 26) |
603310e230b6Smaya      __gen_uint(values->LegacyHierarchicalDepthBufferResolveEnable, 27, 27) |
603410e230b6Smaya      __gen_uint(values->LegacyDepthBufferResolveEnable, 28, 28) |
603510e230b6Smaya      __gen_uint(values->LegacyDepthBufferClearEnable, 30, 30) |
603610e230b6Smaya      __gen_uint(values->StatisticsEnable, 31, 31);
603710e230b6Smaya}
603810e230b6Smaya
603910e230b6Smaya#define GEN8_3DSTATE_WM_CHROMAKEY_length       2
604010e230b6Smaya#define GEN8_3DSTATE_WM_CHROMAKEY_length_bias      2
604110e230b6Smaya#define GEN8_3DSTATE_WM_CHROMAKEY_header        \
604210e230b6Smaya   .DWordLength                         =      0,  \
604310e230b6Smaya   ._3DCommandSubOpcode                 =     76,  \
604410e230b6Smaya   ._3DCommandOpcode                    =      0,  \
604510e230b6Smaya   .CommandSubType                      =      3,  \
604610e230b6Smaya   .CommandType                         =      3
604710e230b6Smaya
604810e230b6Smayastruct GEN8_3DSTATE_WM_CHROMAKEY {
604910e230b6Smaya   uint32_t                             DWordLength;
605010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
605110e230b6Smaya   uint32_t                             _3DCommandOpcode;
605210e230b6Smaya   uint32_t                             CommandSubType;
605310e230b6Smaya   uint32_t                             CommandType;
605410e230b6Smaya   bool                                 ChromaKeyKillEnable;
605510e230b6Smaya};
605610e230b6Smaya
605710e230b6Smayastatic inline void
605810e230b6SmayaGEN8_3DSTATE_WM_CHROMAKEY_pack(__attribute__((unused)) __gen_user_data *data,
605910e230b6Smaya                               __attribute__((unused)) void * restrict dst,
606010e230b6Smaya                               __attribute__((unused)) const struct GEN8_3DSTATE_WM_CHROMAKEY * restrict values)
606110e230b6Smaya{
606210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
606310e230b6Smaya
606410e230b6Smaya   dw[0] =
606510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
606610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
606710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
606810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
606910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
607010e230b6Smaya
607110e230b6Smaya   dw[1] =
607210e230b6Smaya      __gen_uint(values->ChromaKeyKillEnable, 31, 31);
607310e230b6Smaya}
607410e230b6Smaya
607510e230b6Smaya#define GEN8_3DSTATE_WM_DEPTH_STENCIL_length      3
607610e230b6Smaya#define GEN8_3DSTATE_WM_DEPTH_STENCIL_length_bias      2
607710e230b6Smaya#define GEN8_3DSTATE_WM_DEPTH_STENCIL_header    \
607810e230b6Smaya   .DWordLength                         =      1,  \
607910e230b6Smaya   ._3DCommandSubOpcode                 =     78,  \
608010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
608110e230b6Smaya   .CommandSubType                      =      3,  \
608210e230b6Smaya   .CommandType                         =      3
608310e230b6Smaya
608410e230b6Smayastruct GEN8_3DSTATE_WM_DEPTH_STENCIL {
608510e230b6Smaya   uint32_t                             DWordLength;
608610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
608710e230b6Smaya   uint32_t                             _3DCommandOpcode;
608810e230b6Smaya   uint32_t                             CommandSubType;
608910e230b6Smaya   uint32_t                             CommandType;
609010e230b6Smaya   bool                                 DepthBufferWriteEnable;
609110e230b6Smaya   bool                                 DepthTestEnable;
609210e230b6Smaya   bool                                 StencilBufferWriteEnable;
609310e230b6Smaya   bool                                 StencilTestEnable;
609410e230b6Smaya   bool                                 DoubleSidedStencilEnable;
609510e230b6Smaya   enum GEN8_3D_Compare_Function        DepthTestFunction;
609610e230b6Smaya   enum GEN8_3D_Compare_Function        StencilTestFunction;
609710e230b6Smaya   enum GEN8_3D_Stencil_Operation       BackfaceStencilPassDepthPassOp;
609810e230b6Smaya   enum GEN8_3D_Stencil_Operation       BackfaceStencilPassDepthFailOp;
609910e230b6Smaya   enum GEN8_3D_Stencil_Operation       BackfaceStencilFailOp;
610010e230b6Smaya   enum GEN8_3D_Compare_Function        BackfaceStencilTestFunction;
610110e230b6Smaya   enum GEN8_3D_Stencil_Operation       StencilPassDepthPassOp;
610210e230b6Smaya   enum GEN8_3D_Stencil_Operation       StencilPassDepthFailOp;
610310e230b6Smaya   enum GEN8_3D_Stencil_Operation       StencilFailOp;
610410e230b6Smaya   uint32_t                             BackfaceStencilWriteMask;
610510e230b6Smaya   uint32_t                             BackfaceStencilTestMask;
610610e230b6Smaya   uint32_t                             StencilWriteMask;
610710e230b6Smaya   uint32_t                             StencilTestMask;
610810e230b6Smaya};
610910e230b6Smaya
611010e230b6Smayastatic inline void
611110e230b6SmayaGEN8_3DSTATE_WM_DEPTH_STENCIL_pack(__attribute__((unused)) __gen_user_data *data,
611210e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
611310e230b6Smaya                                   __attribute__((unused)) const struct GEN8_3DSTATE_WM_DEPTH_STENCIL * restrict values)
611410e230b6Smaya{
611510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
611610e230b6Smaya
611710e230b6Smaya   dw[0] =
611810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
611910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
612010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
612110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
612210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
612310e230b6Smaya
612410e230b6Smaya   dw[1] =
612510e230b6Smaya      __gen_uint(values->DepthBufferWriteEnable, 0, 0) |
612610e230b6Smaya      __gen_uint(values->DepthTestEnable, 1, 1) |
612710e230b6Smaya      __gen_uint(values->StencilBufferWriteEnable, 2, 2) |
612810e230b6Smaya      __gen_uint(values->StencilTestEnable, 3, 3) |
612910e230b6Smaya      __gen_uint(values->DoubleSidedStencilEnable, 4, 4) |
613010e230b6Smaya      __gen_uint(values->DepthTestFunction, 5, 7) |
613110e230b6Smaya      __gen_uint(values->StencilTestFunction, 8, 10) |
613210e230b6Smaya      __gen_uint(values->BackfaceStencilPassDepthPassOp, 11, 13) |
613310e230b6Smaya      __gen_uint(values->BackfaceStencilPassDepthFailOp, 14, 16) |
613410e230b6Smaya      __gen_uint(values->BackfaceStencilFailOp, 17, 19) |
613510e230b6Smaya      __gen_uint(values->BackfaceStencilTestFunction, 20, 22) |
613610e230b6Smaya      __gen_uint(values->StencilPassDepthPassOp, 23, 25) |
613710e230b6Smaya      __gen_uint(values->StencilPassDepthFailOp, 26, 28) |
613810e230b6Smaya      __gen_uint(values->StencilFailOp, 29, 31);
613910e230b6Smaya
614010e230b6Smaya   dw[2] =
614110e230b6Smaya      __gen_uint(values->BackfaceStencilWriteMask, 0, 7) |
614210e230b6Smaya      __gen_uint(values->BackfaceStencilTestMask, 8, 15) |
614310e230b6Smaya      __gen_uint(values->StencilWriteMask, 16, 23) |
614410e230b6Smaya      __gen_uint(values->StencilTestMask, 24, 31);
614510e230b6Smaya}
614610e230b6Smaya
614710e230b6Smaya#define GEN8_3DSTATE_WM_HZ_OP_length           5
614810e230b6Smaya#define GEN8_3DSTATE_WM_HZ_OP_length_bias      2
614910e230b6Smaya#define GEN8_3DSTATE_WM_HZ_OP_header            \
615010e230b6Smaya   .DWordLength                         =      3,  \
615110e230b6Smaya   ._3DCommandSubOpcode                 =     82,  \
615210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
615310e230b6Smaya   .CommandSubType                      =      3,  \
615410e230b6Smaya   .CommandType                         =      3
615510e230b6Smaya
615610e230b6Smayastruct GEN8_3DSTATE_WM_HZ_OP {
615710e230b6Smaya   uint32_t                             DWordLength;
615810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
615910e230b6Smaya   uint32_t                             _3DCommandOpcode;
616010e230b6Smaya   uint32_t                             CommandSubType;
616110e230b6Smaya   uint32_t                             CommandType;
616210e230b6Smaya   uint32_t                             NumberofMultisamples;
616310e230b6Smaya   uint32_t                             StencilClearValue;
616410e230b6Smaya   bool                                 FullSurfaceDepthandStencilClear;
616510e230b6Smaya   bool                                 PixelPositionOffsetEnable;
616610e230b6Smaya   bool                                 HierarchicalDepthBufferResolveEnable;
616710e230b6Smaya   bool                                 DepthBufferResolveEnable;
616810e230b6Smaya   bool                                 ScissorRectangleEnable;
616910e230b6Smaya   bool                                 DepthBufferClearEnable;
617010e230b6Smaya   bool                                 StencilBufferClearEnable;
617110e230b6Smaya   uint32_t                             ClearRectangleXMin;
617210e230b6Smaya   uint32_t                             ClearRectangleYMin;
617310e230b6Smaya   uint32_t                             ClearRectangleXMax;
617410e230b6Smaya   uint32_t                             ClearRectangleYMax;
617510e230b6Smaya   uint32_t                             SampleMask;
617610e230b6Smaya};
617710e230b6Smaya
617810e230b6Smayastatic inline void
617910e230b6SmayaGEN8_3DSTATE_WM_HZ_OP_pack(__attribute__((unused)) __gen_user_data *data,
618010e230b6Smaya                           __attribute__((unused)) void * restrict dst,
618110e230b6Smaya                           __attribute__((unused)) const struct GEN8_3DSTATE_WM_HZ_OP * restrict values)
618210e230b6Smaya{
618310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
618410e230b6Smaya
618510e230b6Smaya   dw[0] =
618610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
618710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
618810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
618910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
619010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
619110e230b6Smaya
619210e230b6Smaya   dw[1] =
619310e230b6Smaya      __gen_uint(values->NumberofMultisamples, 13, 15) |
619410e230b6Smaya      __gen_uint(values->StencilClearValue, 16, 23) |
619510e230b6Smaya      __gen_uint(values->FullSurfaceDepthandStencilClear, 25, 25) |
619610e230b6Smaya      __gen_uint(values->PixelPositionOffsetEnable, 26, 26) |
619710e230b6Smaya      __gen_uint(values->HierarchicalDepthBufferResolveEnable, 27, 27) |
619810e230b6Smaya      __gen_uint(values->DepthBufferResolveEnable, 28, 28) |
619910e230b6Smaya      __gen_uint(values->ScissorRectangleEnable, 29, 29) |
620010e230b6Smaya      __gen_uint(values->DepthBufferClearEnable, 30, 30) |
620110e230b6Smaya      __gen_uint(values->StencilBufferClearEnable, 31, 31);
620210e230b6Smaya
620310e230b6Smaya   dw[2] =
620410e230b6Smaya      __gen_uint(values->ClearRectangleXMin, 0, 15) |
620510e230b6Smaya      __gen_uint(values->ClearRectangleYMin, 16, 31);
620610e230b6Smaya
620710e230b6Smaya   dw[3] =
620810e230b6Smaya      __gen_uint(values->ClearRectangleXMax, 0, 15) |
620910e230b6Smaya      __gen_uint(values->ClearRectangleYMax, 16, 31);
621010e230b6Smaya
621110e230b6Smaya   dw[4] =
621210e230b6Smaya      __gen_uint(values->SampleMask, 0, 15);
621310e230b6Smaya}
621410e230b6Smaya
621510e230b6Smaya#define GEN8_GPGPU_CSR_BASE_ADDRESS_length      3
621610e230b6Smaya#define GEN8_GPGPU_CSR_BASE_ADDRESS_length_bias      2
621710e230b6Smaya#define GEN8_GPGPU_CSR_BASE_ADDRESS_header      \
621810e230b6Smaya   .DWordLength                         =      1,  \
621910e230b6Smaya   ._3DCommandSubOpcode                 =      4,  \
622010e230b6Smaya   ._3DCommandOpcode                    =      1,  \
622110e230b6Smaya   .CommandSubType                      =      0,  \
622210e230b6Smaya   .CommandType                         =      3
622310e230b6Smaya
622410e230b6Smayastruct GEN8_GPGPU_CSR_BASE_ADDRESS {
622510e230b6Smaya   uint32_t                             DWordLength;
622610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
622710e230b6Smaya   uint32_t                             _3DCommandOpcode;
622810e230b6Smaya   uint32_t                             CommandSubType;
622910e230b6Smaya   uint32_t                             CommandType;
623010e230b6Smaya   __gen_address_type                   GPGPUCSRBaseAddress;
623110e230b6Smaya};
623210e230b6Smaya
623310e230b6Smayastatic inline void
623410e230b6SmayaGEN8_GPGPU_CSR_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data,
623510e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
623610e230b6Smaya                                 __attribute__((unused)) const struct GEN8_GPGPU_CSR_BASE_ADDRESS * restrict values)
623710e230b6Smaya{
623810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
623910e230b6Smaya
624010e230b6Smaya   dw[0] =
624110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
624210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
624310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
624410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
624510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
624610e230b6Smaya
624710e230b6Smaya   const uint64_t v1_address =
624810e230b6Smaya      __gen_combine_address(data, &dw[1], values->GPGPUCSRBaseAddress, 0);
624910e230b6Smaya   dw[1] = v1_address;
625010e230b6Smaya   dw[2] = v1_address >> 32;
625110e230b6Smaya}
625210e230b6Smaya
625310e230b6Smaya#define GEN8_GPGPU_WALKER_length              15
625410e230b6Smaya#define GEN8_GPGPU_WALKER_length_bias          2
625510e230b6Smaya#define GEN8_GPGPU_WALKER_header                \
625610e230b6Smaya   .DWordLength                         =     13,  \
625710e230b6Smaya   .SubOpcode                           =      5,  \
625810e230b6Smaya   .MediaCommandOpcode                  =      1,  \
625910e230b6Smaya   .Pipeline                            =      2,  \
626010e230b6Smaya   .CommandType                         =      3
626110e230b6Smaya
626210e230b6Smayastruct GEN8_GPGPU_WALKER {
626310e230b6Smaya   uint32_t                             DWordLength;
626410e230b6Smaya   bool                                 PredicateEnable;
626510e230b6Smaya   bool                                 IndirectParameterEnable;
626610e230b6Smaya   uint32_t                             SubOpcode;
626710e230b6Smaya   uint32_t                             MediaCommandOpcode;
626810e230b6Smaya   uint32_t                             Pipeline;
626910e230b6Smaya   uint32_t                             CommandType;
627010e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
627110e230b6Smaya   uint32_t                             IndirectDataLength;
627210e230b6Smaya   uint64_t                             IndirectDataStartAddress;
627310e230b6Smaya   uint32_t                             ThreadWidthCounterMaximum;
627410e230b6Smaya   uint32_t                             ThreadHeightCounterMaximum;
627510e230b6Smaya   uint32_t                             ThreadDepthCounterMaximum;
627610e230b6Smaya   uint32_t                             SIMDSize;
627710e230b6Smaya#define SIMD8                                    0
627810e230b6Smaya#define SIMD16                                   1
627910e230b6Smaya#define SIMD32                                   2
628010e230b6Smaya   uint32_t                             ThreadGroupIDStartingX;
628110e230b6Smaya   uint32_t                             ThreadGroupIDXDimension;
628210e230b6Smaya   uint32_t                             ThreadGroupIDStartingY;
628310e230b6Smaya   uint32_t                             ThreadGroupIDYDimension;
628410e230b6Smaya   uint32_t                             ThreadGroupIDStartingResumeZ;
628510e230b6Smaya   uint32_t                             ThreadGroupIDZDimension;
628610e230b6Smaya   uint32_t                             RightExecutionMask;
628710e230b6Smaya   uint32_t                             BottomExecutionMask;
628810e230b6Smaya};
628910e230b6Smaya
629010e230b6Smayastatic inline void
629110e230b6SmayaGEN8_GPGPU_WALKER_pack(__attribute__((unused)) __gen_user_data *data,
629210e230b6Smaya                       __attribute__((unused)) void * restrict dst,
629310e230b6Smaya                       __attribute__((unused)) const struct GEN8_GPGPU_WALKER * restrict values)
629410e230b6Smaya{
629510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
629610e230b6Smaya
629710e230b6Smaya   dw[0] =
629810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
629910e230b6Smaya      __gen_uint(values->PredicateEnable, 8, 8) |
630010e230b6Smaya      __gen_uint(values->IndirectParameterEnable, 10, 10) |
630110e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
630210e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
630310e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
630410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
630510e230b6Smaya
630610e230b6Smaya   dw[1] =
630710e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
630810e230b6Smaya
630910e230b6Smaya   dw[2] =
631010e230b6Smaya      __gen_uint(values->IndirectDataLength, 0, 16);
631110e230b6Smaya
631210e230b6Smaya   dw[3] =
631310e230b6Smaya      __gen_offset(values->IndirectDataStartAddress, 6, 31);
631410e230b6Smaya
631510e230b6Smaya   dw[4] =
631610e230b6Smaya      __gen_uint(values->ThreadWidthCounterMaximum, 0, 5) |
631710e230b6Smaya      __gen_uint(values->ThreadHeightCounterMaximum, 8, 13) |
631810e230b6Smaya      __gen_uint(values->ThreadDepthCounterMaximum, 16, 21) |
631910e230b6Smaya      __gen_uint(values->SIMDSize, 30, 31);
632010e230b6Smaya
632110e230b6Smaya   dw[5] =
632210e230b6Smaya      __gen_uint(values->ThreadGroupIDStartingX, 0, 31);
632310e230b6Smaya
632410e230b6Smaya   dw[6] = 0;
632510e230b6Smaya
632610e230b6Smaya   dw[7] =
632710e230b6Smaya      __gen_uint(values->ThreadGroupIDXDimension, 0, 31);
632810e230b6Smaya
632910e230b6Smaya   dw[8] =
633010e230b6Smaya      __gen_uint(values->ThreadGroupIDStartingY, 0, 31);
633110e230b6Smaya
633210e230b6Smaya   dw[9] = 0;
633310e230b6Smaya
633410e230b6Smaya   dw[10] =
633510e230b6Smaya      __gen_uint(values->ThreadGroupIDYDimension, 0, 31);
633610e230b6Smaya
633710e230b6Smaya   dw[11] =
633810e230b6Smaya      __gen_uint(values->ThreadGroupIDStartingResumeZ, 0, 31);
633910e230b6Smaya
634010e230b6Smaya   dw[12] =
634110e230b6Smaya      __gen_uint(values->ThreadGroupIDZDimension, 0, 31);
634210e230b6Smaya
634310e230b6Smaya   dw[13] =
634410e230b6Smaya      __gen_uint(values->RightExecutionMask, 0, 31);
634510e230b6Smaya
634610e230b6Smaya   dw[14] =
634710e230b6Smaya      __gen_uint(values->BottomExecutionMask, 0, 31);
634810e230b6Smaya}
634910e230b6Smaya
635010e230b6Smaya#define GEN8_MEDIA_CURBE_LOAD_length           4
635110e230b6Smaya#define GEN8_MEDIA_CURBE_LOAD_length_bias      2
635210e230b6Smaya#define GEN8_MEDIA_CURBE_LOAD_header            \
635310e230b6Smaya   .DWordLength                         =      2,  \
635410e230b6Smaya   .SubOpcode                           =      1,  \
635510e230b6Smaya   .MediaCommandOpcode                  =      0,  \
635610e230b6Smaya   .Pipeline                            =      2,  \
635710e230b6Smaya   .CommandType                         =      3
635810e230b6Smaya
635910e230b6Smayastruct GEN8_MEDIA_CURBE_LOAD {
636010e230b6Smaya   uint32_t                             DWordLength;
636110e230b6Smaya   uint32_t                             SubOpcode;
636210e230b6Smaya   uint32_t                             MediaCommandOpcode;
636310e230b6Smaya   uint32_t                             Pipeline;
636410e230b6Smaya   uint32_t                             CommandType;
636510e230b6Smaya   uint32_t                             CURBETotalDataLength;
636610e230b6Smaya   uint32_t                             CURBEDataStartAddress;
636710e230b6Smaya};
636810e230b6Smaya
636910e230b6Smayastatic inline void
637010e230b6SmayaGEN8_MEDIA_CURBE_LOAD_pack(__attribute__((unused)) __gen_user_data *data,
637110e230b6Smaya                           __attribute__((unused)) void * restrict dst,
637210e230b6Smaya                           __attribute__((unused)) const struct GEN8_MEDIA_CURBE_LOAD * restrict values)
637310e230b6Smaya{
637410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
637510e230b6Smaya
637610e230b6Smaya   dw[0] =
637710e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
637810e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
637910e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
638010e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
638110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
638210e230b6Smaya
638310e230b6Smaya   dw[1] = 0;
638410e230b6Smaya
638510e230b6Smaya   dw[2] =
638610e230b6Smaya      __gen_uint(values->CURBETotalDataLength, 0, 16);
638710e230b6Smaya
638810e230b6Smaya   dw[3] =
638910e230b6Smaya      __gen_uint(values->CURBEDataStartAddress, 0, 31);
639010e230b6Smaya}
639110e230b6Smaya
639210e230b6Smaya#define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length      4
639310e230b6Smaya#define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length_bias      2
639410e230b6Smaya#define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_header\
639510e230b6Smaya   .DWordLength                         =      2,  \
639610e230b6Smaya   .SubOpcode                           =      2,  \
639710e230b6Smaya   .MediaCommandOpcode                  =      0,  \
639810e230b6Smaya   .Pipeline                            =      2,  \
639910e230b6Smaya   .CommandType                         =      3
640010e230b6Smaya
640110e230b6Smayastruct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD {
640210e230b6Smaya   uint32_t                             DWordLength;
640310e230b6Smaya   uint32_t                             SubOpcode;
640410e230b6Smaya   uint32_t                             MediaCommandOpcode;
640510e230b6Smaya   uint32_t                             Pipeline;
640610e230b6Smaya   uint32_t                             CommandType;
640710e230b6Smaya   uint32_t                             InterfaceDescriptorTotalLength;
640810e230b6Smaya   uint64_t                             InterfaceDescriptorDataStartAddress;
640910e230b6Smaya};
641010e230b6Smaya
641110e230b6Smayastatic inline void
641210e230b6SmayaGEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_pack(__attribute__((unused)) __gen_user_data *data,
641310e230b6Smaya                                          __attribute__((unused)) void * restrict dst,
641410e230b6Smaya                                          __attribute__((unused)) const struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD * restrict values)
641510e230b6Smaya{
641610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
641710e230b6Smaya
641810e230b6Smaya   dw[0] =
641910e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
642010e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
642110e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
642210e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
642310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
642410e230b6Smaya
642510e230b6Smaya   dw[1] = 0;
642610e230b6Smaya
642710e230b6Smaya   dw[2] =
642810e230b6Smaya      __gen_uint(values->InterfaceDescriptorTotalLength, 0, 16);
642910e230b6Smaya
643010e230b6Smaya   dw[3] =
643110e230b6Smaya      __gen_offset(values->InterfaceDescriptorDataStartAddress, 0, 31);
643210e230b6Smaya}
643310e230b6Smaya
643410e230b6Smaya#define GEN8_MEDIA_OBJECT_length_bias          2
643510e230b6Smaya#define GEN8_MEDIA_OBJECT_header                \
643610e230b6Smaya   .DWordLength                         =      4,  \
643710e230b6Smaya   .MediaCommandSubOpcode               =      0,  \
643810e230b6Smaya   .MediaCommandOpcode                  =      1,  \
643910e230b6Smaya   .MediaCommandPipeline                =      2,  \
644010e230b6Smaya   .CommandType                         =      3
644110e230b6Smaya
644210e230b6Smayastruct GEN8_MEDIA_OBJECT {
644310e230b6Smaya   uint32_t                             DWordLength;
644410e230b6Smaya   uint32_t                             MediaCommandSubOpcode;
644510e230b6Smaya   uint32_t                             MediaCommandOpcode;
644610e230b6Smaya   uint32_t                             MediaCommandPipeline;
644710e230b6Smaya   uint32_t                             CommandType;
644810e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
644910e230b6Smaya   uint32_t                             IndirectDataLength;
645010e230b6Smaya   uint32_t                             SubSliceDestinationSelect;
645110e230b6Smaya#define SubSlice2                                2
645210e230b6Smaya#define SubSlice1                                1
645310e230b6Smaya#define SubSlice0                                0
645410e230b6Smaya   uint32_t                             SliceDestinationSelect;
645510e230b6Smaya#define Slice0                                   0
645610e230b6Smaya#define Slice1                                   1
645710e230b6Smaya#define Slice2                                   2
645810e230b6Smaya   uint32_t                             UseScoreboard;
645910e230b6Smaya#define Notusingscoreboard                       0
646010e230b6Smaya#define Usingscoreboard                          1
646110e230b6Smaya   uint32_t                             ForceDestination;
646210e230b6Smaya   uint32_t                             ThreadSynchronization;
646310e230b6Smaya#define Nothreadsynchronization                  0
646410e230b6Smaya#define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
646510e230b6Smaya   bool                                 ChildrenPresent;
646610e230b6Smaya   __gen_address_type                   IndirectDataStartAddress;
646710e230b6Smaya   uint32_t                             ScoreboardX;
646810e230b6Smaya   uint32_t                             ScoredboardY;
646910e230b6Smaya   uint32_t                             ScoreboardMask;
647010e230b6Smaya   uint32_t                             ScoreboardColor;
647110e230b6Smaya   /* variable length fields follow */
647210e230b6Smaya};
647310e230b6Smaya
647410e230b6Smayastatic inline void
647510e230b6SmayaGEN8_MEDIA_OBJECT_pack(__attribute__((unused)) __gen_user_data *data,
647610e230b6Smaya                       __attribute__((unused)) void * restrict dst,
647710e230b6Smaya                       __attribute__((unused)) const struct GEN8_MEDIA_OBJECT * restrict values)
647810e230b6Smaya{
647910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
648010e230b6Smaya
648110e230b6Smaya   dw[0] =
648210e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
648310e230b6Smaya      __gen_uint(values->MediaCommandSubOpcode, 16, 23) |
648410e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
648510e230b6Smaya      __gen_uint(values->MediaCommandPipeline, 27, 28) |
648610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
648710e230b6Smaya
648810e230b6Smaya   dw[1] =
648910e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
649010e230b6Smaya
649110e230b6Smaya   dw[2] =
649210e230b6Smaya      __gen_uint(values->IndirectDataLength, 0, 16) |
649310e230b6Smaya      __gen_uint(values->SubSliceDestinationSelect, 17, 18) |
649410e230b6Smaya      __gen_uint(values->SliceDestinationSelect, 19, 20) |
649510e230b6Smaya      __gen_uint(values->UseScoreboard, 21, 21) |
649610e230b6Smaya      __gen_uint(values->ForceDestination, 22, 22) |
649710e230b6Smaya      __gen_uint(values->ThreadSynchronization, 24, 24) |
649810e230b6Smaya      __gen_uint(values->ChildrenPresent, 31, 31);
649910e230b6Smaya
650010e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->IndirectDataStartAddress, 0);
650110e230b6Smaya
650210e230b6Smaya   dw[4] =
650310e230b6Smaya      __gen_uint(values->ScoreboardX, 0, 8) |
650410e230b6Smaya      __gen_uint(values->ScoredboardY, 16, 24);
650510e230b6Smaya
650610e230b6Smaya   dw[5] =
650710e230b6Smaya      __gen_uint(values->ScoreboardMask, 0, 7) |
650810e230b6Smaya      __gen_uint(values->ScoreboardColor, 16, 19);
650910e230b6Smaya}
651010e230b6Smaya
651110e230b6Smaya#define GEN8_MEDIA_OBJECT_GRPID_length_bias      2
651210e230b6Smaya#define GEN8_MEDIA_OBJECT_GRPID_header          \
651310e230b6Smaya   .DWordLength                         =      5,  \
651410e230b6Smaya   .MediaCommandSubOpcode               =      6,  \
651510e230b6Smaya   .MediaCommandOpcode                  =      1,  \
651610e230b6Smaya   .MediaCommandPipeline                =      2,  \
651710e230b6Smaya   .CommandType                         =      3
651810e230b6Smaya
651910e230b6Smayastruct GEN8_MEDIA_OBJECT_GRPID {
652010e230b6Smaya   uint32_t                             DWordLength;
652110e230b6Smaya   uint32_t                             MediaCommandSubOpcode;
652210e230b6Smaya   uint32_t                             MediaCommandOpcode;
652310e230b6Smaya   uint32_t                             MediaCommandPipeline;
652410e230b6Smaya   uint32_t                             CommandType;
652510e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
652610e230b6Smaya   uint32_t                             IndirectDataLength;
652710e230b6Smaya   uint32_t                             SubSliceDestinationSelect;
652810e230b6Smaya#define SubSlice2                                2
652910e230b6Smaya#define SubSlice1                                1
653010e230b6Smaya#define SubSlice0                                0
653110e230b6Smaya   uint32_t                             SliceDestinationSelect;
653210e230b6Smaya#define Slice0                                   0
653310e230b6Smaya#define Slice1                                   1
653410e230b6Smaya#define Slice2                                   2
653510e230b6Smaya   uint32_t                             UseScoreboard;
653610e230b6Smaya#define Notusingscoreboard                       0
653710e230b6Smaya#define Usingscoreboard                          1
653810e230b6Smaya   uint32_t                             ForceDestination;
653910e230b6Smaya   uint32_t                             EndofThreadGroup;
654010e230b6Smaya   __gen_address_type                   IndirectDataStartAddress;
654110e230b6Smaya   uint32_t                             ScoreboardX;
654210e230b6Smaya   uint32_t                             ScoreboardY;
654310e230b6Smaya   uint32_t                             ScoreboardMask;
654410e230b6Smaya   uint32_t                             ScoreboardColor;
654510e230b6Smaya   uint32_t                             GroupID;
654610e230b6Smaya   /* variable length fields follow */
654710e230b6Smaya};
654810e230b6Smaya
654910e230b6Smayastatic inline void
655010e230b6SmayaGEN8_MEDIA_OBJECT_GRPID_pack(__attribute__((unused)) __gen_user_data *data,
655110e230b6Smaya                             __attribute__((unused)) void * restrict dst,
655210e230b6Smaya                             __attribute__((unused)) const struct GEN8_MEDIA_OBJECT_GRPID * restrict values)
655310e230b6Smaya{
655410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
655510e230b6Smaya
655610e230b6Smaya   dw[0] =
655710e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
655810e230b6Smaya      __gen_uint(values->MediaCommandSubOpcode, 16, 23) |
655910e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
656010e230b6Smaya      __gen_uint(values->MediaCommandPipeline, 27, 28) |
656110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
656210e230b6Smaya
656310e230b6Smaya   dw[1] =
656410e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
656510e230b6Smaya
656610e230b6Smaya   dw[2] =
656710e230b6Smaya      __gen_uint(values->IndirectDataLength, 0, 16) |
656810e230b6Smaya      __gen_uint(values->SubSliceDestinationSelect, 17, 18) |
656910e230b6Smaya      __gen_uint(values->SliceDestinationSelect, 19, 20) |
657010e230b6Smaya      __gen_uint(values->UseScoreboard, 21, 21) |
657110e230b6Smaya      __gen_uint(values->ForceDestination, 22, 22) |
657210e230b6Smaya      __gen_uint(values->EndofThreadGroup, 23, 23);
657310e230b6Smaya
657410e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->IndirectDataStartAddress, 0);
657510e230b6Smaya
657610e230b6Smaya   dw[4] =
657710e230b6Smaya      __gen_uint(values->ScoreboardX, 0, 8) |
657810e230b6Smaya      __gen_uint(values->ScoreboardY, 16, 24);
657910e230b6Smaya
658010e230b6Smaya   dw[5] =
658110e230b6Smaya      __gen_uint(values->ScoreboardMask, 0, 7) |
658210e230b6Smaya      __gen_uint(values->ScoreboardColor, 16, 19);
658310e230b6Smaya
658410e230b6Smaya   dw[6] =
658510e230b6Smaya      __gen_uint(values->GroupID, 0, 31);
658610e230b6Smaya}
658710e230b6Smaya
658810e230b6Smaya#define GEN8_MEDIA_OBJECT_PRT_length          16
658910e230b6Smaya#define GEN8_MEDIA_OBJECT_PRT_length_bias      2
659010e230b6Smaya#define GEN8_MEDIA_OBJECT_PRT_header            \
659110e230b6Smaya   .DWordLength                         =     14,  \
659210e230b6Smaya   .SubOpcode                           =      2,  \
659310e230b6Smaya   .MediaCommandOpcode                  =      1,  \
659410e230b6Smaya   .Pipeline                            =      2,  \
659510e230b6Smaya   .CommandType                         =      3
659610e230b6Smaya
659710e230b6Smayastruct GEN8_MEDIA_OBJECT_PRT {
659810e230b6Smaya   uint32_t                             DWordLength;
659910e230b6Smaya   uint32_t                             SubOpcode;
660010e230b6Smaya   uint32_t                             MediaCommandOpcode;
660110e230b6Smaya   uint32_t                             Pipeline;
660210e230b6Smaya   uint32_t                             CommandType;
660310e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
660410e230b6Smaya   uint32_t                             PRT_FenceType;
660510e230b6Smaya#define Rootthreadqueue                          0
660610e230b6Smaya#define VFEstateflush                            1
660710e230b6Smaya   bool                                 PRT_FenceNeeded;
660810e230b6Smaya   bool                                 ChildrenPresent;
660910e230b6Smaya   uint32_t                             InlineData[12];
661010e230b6Smaya};
661110e230b6Smaya
661210e230b6Smayastatic inline void
661310e230b6SmayaGEN8_MEDIA_OBJECT_PRT_pack(__attribute__((unused)) __gen_user_data *data,
661410e230b6Smaya                           __attribute__((unused)) void * restrict dst,
661510e230b6Smaya                           __attribute__((unused)) const struct GEN8_MEDIA_OBJECT_PRT * restrict values)
661610e230b6Smaya{
661710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
661810e230b6Smaya
661910e230b6Smaya   dw[0] =
662010e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
662110e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
662210e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
662310e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
662410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
662510e230b6Smaya
662610e230b6Smaya   dw[1] =
662710e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
662810e230b6Smaya
662910e230b6Smaya   dw[2] =
663010e230b6Smaya      __gen_uint(values->PRT_FenceType, 22, 22) |
663110e230b6Smaya      __gen_uint(values->PRT_FenceNeeded, 23, 23) |
663210e230b6Smaya      __gen_uint(values->ChildrenPresent, 31, 31);
663310e230b6Smaya
663410e230b6Smaya   dw[3] = 0;
663510e230b6Smaya
663610e230b6Smaya   dw[4] =
663710e230b6Smaya      __gen_uint(values->InlineData[0], 0, 31);
663810e230b6Smaya
663910e230b6Smaya   dw[5] =
664010e230b6Smaya      __gen_uint(values->InlineData[1], 0, 31);
664110e230b6Smaya
664210e230b6Smaya   dw[6] =
664310e230b6Smaya      __gen_uint(values->InlineData[2], 0, 31);
664410e230b6Smaya
664510e230b6Smaya   dw[7] =
664610e230b6Smaya      __gen_uint(values->InlineData[3], 0, 31);
664710e230b6Smaya
664810e230b6Smaya   dw[8] =
664910e230b6Smaya      __gen_uint(values->InlineData[4], 0, 31);
665010e230b6Smaya
665110e230b6Smaya   dw[9] =
665210e230b6Smaya      __gen_uint(values->InlineData[5], 0, 31);
665310e230b6Smaya
665410e230b6Smaya   dw[10] =
665510e230b6Smaya      __gen_uint(values->InlineData[6], 0, 31);
665610e230b6Smaya
665710e230b6Smaya   dw[11] =
665810e230b6Smaya      __gen_uint(values->InlineData[7], 0, 31);
665910e230b6Smaya
666010e230b6Smaya   dw[12] =
666110e230b6Smaya      __gen_uint(values->InlineData[8], 0, 31);
666210e230b6Smaya
666310e230b6Smaya   dw[13] =
666410e230b6Smaya      __gen_uint(values->InlineData[9], 0, 31);
666510e230b6Smaya
666610e230b6Smaya   dw[14] =
666710e230b6Smaya      __gen_uint(values->InlineData[10], 0, 31);
666810e230b6Smaya
666910e230b6Smaya   dw[15] =
667010e230b6Smaya      __gen_uint(values->InlineData[11], 0, 31);
667110e230b6Smaya}
667210e230b6Smaya
667310e230b6Smaya#define GEN8_MEDIA_OBJECT_WALKER_length_bias      2
667410e230b6Smaya#define GEN8_MEDIA_OBJECT_WALKER_header         \
667510e230b6Smaya   .DWordLength                         =     15,  \
667610e230b6Smaya   .SubOpcode                           =      3,  \
667710e230b6Smaya   .MediaCommandOpcode                  =      1,  \
667810e230b6Smaya   .Pipeline                            =      2,  \
667910e230b6Smaya   .CommandType                         =      3
668010e230b6Smaya
668110e230b6Smayastruct GEN8_MEDIA_OBJECT_WALKER {
668210e230b6Smaya   uint32_t                             DWordLength;
668310e230b6Smaya   uint32_t                             SubOpcode;
668410e230b6Smaya   uint32_t                             MediaCommandOpcode;
668510e230b6Smaya   uint32_t                             Pipeline;
668610e230b6Smaya   uint32_t                             CommandType;
668710e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
668810e230b6Smaya   uint32_t                             IndirectDataLength;
668910e230b6Smaya   uint32_t                             UseScoreboard;
669010e230b6Smaya#define Notusingscoreboard                       0
669110e230b6Smaya#define Usingscoreboard                          1
669210e230b6Smaya   uint32_t                             ThreadSynchronization;
669310e230b6Smaya#define Nothreadsynchronization                  0
669410e230b6Smaya#define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
669510e230b6Smaya   uint32_t                             ChildrenPresent;
669610e230b6Smaya   uint64_t                             IndirectDataStartAddress;
669710e230b6Smaya   uint32_t                             ScoreboardMask;
669810e230b6Smaya   uint32_t                             GroupIDLoopSelect;
669910e230b6Smaya   int32_t                              MidLoopUnitX;
670010e230b6Smaya   int32_t                              LocalMidLoopUnitY;
670110e230b6Smaya   uint32_t                             MiddleLoopExtraSteps;
670210e230b6Smaya   uint32_t                             ColorCountMinusOne;
670310e230b6Smaya   uint32_t                             LocalLoopExecCount;
670410e230b6Smaya   uint32_t                             GlobalLoopExecCount;
670510e230b6Smaya   uint32_t                             BlockResolutionX;
670610e230b6Smaya   uint32_t                             BlockResolutionY;
670710e230b6Smaya   uint32_t                             LocalStartX;
670810e230b6Smaya   uint32_t                             LocalStartY;
670910e230b6Smaya   int32_t                              LocalOuterLoopStrideX;
671010e230b6Smaya   int32_t                              LocalOuterLoopStrideY;
671110e230b6Smaya   int32_t                              LocalInnerLoopUnitX;
671210e230b6Smaya   int32_t                              LocalInnerLoopUnitY;
671310e230b6Smaya   uint32_t                             GlobalResolutionX;
671410e230b6Smaya   uint32_t                             GlobalResolutionY;
671510e230b6Smaya   int32_t                              GlobalStartX;
671610e230b6Smaya   int32_t                              GlobalStartY;
671710e230b6Smaya   int32_t                              GlobalOuterLoopStrideX;
671810e230b6Smaya   int32_t                              GlobalOuterLoopStrideY;
671910e230b6Smaya   int32_t                              GlobalInnerLoopUnitX;
672010e230b6Smaya   int32_t                              GlobalInnerLoopUnitY;
672110e230b6Smaya   /* variable length fields follow */
672210e230b6Smaya};
672310e230b6Smaya
672410e230b6Smayastatic inline void
672510e230b6SmayaGEN8_MEDIA_OBJECT_WALKER_pack(__attribute__((unused)) __gen_user_data *data,
672610e230b6Smaya                              __attribute__((unused)) void * restrict dst,
672710e230b6Smaya                              __attribute__((unused)) const struct GEN8_MEDIA_OBJECT_WALKER * restrict values)
672810e230b6Smaya{
672910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
673010e230b6Smaya
673110e230b6Smaya   dw[0] =
673210e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
673310e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
673410e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
673510e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
673610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
673710e230b6Smaya
673810e230b6Smaya   dw[1] =
673910e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
674010e230b6Smaya
674110e230b6Smaya   dw[2] =
674210e230b6Smaya      __gen_uint(values->IndirectDataLength, 0, 16) |
674310e230b6Smaya      __gen_uint(values->UseScoreboard, 21, 21) |
674410e230b6Smaya      __gen_uint(values->ThreadSynchronization, 24, 24) |
674510e230b6Smaya      __gen_uint(values->ChildrenPresent, 31, 31);
674610e230b6Smaya
674710e230b6Smaya   dw[3] =
674810e230b6Smaya      __gen_offset(values->IndirectDataStartAddress, 0, 31);
674910e230b6Smaya
675010e230b6Smaya   dw[4] = 0;
675110e230b6Smaya
675210e230b6Smaya   dw[5] =
675310e230b6Smaya      __gen_uint(values->ScoreboardMask, 0, 7) |
675410e230b6Smaya      __gen_uint(values->GroupIDLoopSelect, 8, 31);
675510e230b6Smaya
675610e230b6Smaya   dw[6] =
675710e230b6Smaya      __gen_sint(values->MidLoopUnitX, 8, 9) |
675810e230b6Smaya      __gen_sint(values->LocalMidLoopUnitY, 12, 13) |
675910e230b6Smaya      __gen_uint(values->MiddleLoopExtraSteps, 16, 20) |
676010e230b6Smaya      __gen_uint(values->ColorCountMinusOne, 24, 27);
676110e230b6Smaya
676210e230b6Smaya   dw[7] =
676310e230b6Smaya      __gen_uint(values->LocalLoopExecCount, 0, 9) |
676410e230b6Smaya      __gen_uint(values->GlobalLoopExecCount, 16, 25);
676510e230b6Smaya
676610e230b6Smaya   dw[8] =
676710e230b6Smaya      __gen_uint(values->BlockResolutionX, 0, 8) |
676810e230b6Smaya      __gen_uint(values->BlockResolutionY, 16, 24);
676910e230b6Smaya
677010e230b6Smaya   dw[9] =
677110e230b6Smaya      __gen_uint(values->LocalStartX, 0, 8) |
677210e230b6Smaya      __gen_uint(values->LocalStartY, 16, 24);
677310e230b6Smaya
677410e230b6Smaya   dw[10] = 0;
677510e230b6Smaya
677610e230b6Smaya   dw[11] =
677710e230b6Smaya      __gen_sint(values->LocalOuterLoopStrideX, 0, 9) |
677810e230b6Smaya      __gen_sint(values->LocalOuterLoopStrideY, 16, 25);
677910e230b6Smaya
678010e230b6Smaya   dw[12] =
678110e230b6Smaya      __gen_sint(values->LocalInnerLoopUnitX, 0, 9) |
678210e230b6Smaya      __gen_sint(values->LocalInnerLoopUnitY, 16, 25);
678310e230b6Smaya
678410e230b6Smaya   dw[13] =
678510e230b6Smaya      __gen_uint(values->GlobalResolutionX, 0, 8) |
678610e230b6Smaya      __gen_uint(values->GlobalResolutionY, 16, 24);
678710e230b6Smaya
678810e230b6Smaya   dw[14] =
678910e230b6Smaya      __gen_sint(values->GlobalStartX, 0, 9) |
679010e230b6Smaya      __gen_sint(values->GlobalStartY, 16, 25);
679110e230b6Smaya
679210e230b6Smaya   dw[15] =
679310e230b6Smaya      __gen_sint(values->GlobalOuterLoopStrideX, 0, 9) |
679410e230b6Smaya      __gen_sint(values->GlobalOuterLoopStrideY, 16, 25);
679510e230b6Smaya
679610e230b6Smaya   dw[16] =
679710e230b6Smaya      __gen_sint(values->GlobalInnerLoopUnitX, 0, 9) |
679810e230b6Smaya      __gen_sint(values->GlobalInnerLoopUnitY, 16, 25);
679910e230b6Smaya}
680010e230b6Smaya
680110e230b6Smaya#define GEN8_MEDIA_STATE_FLUSH_length          2
680210e230b6Smaya#define GEN8_MEDIA_STATE_FLUSH_length_bias      2
680310e230b6Smaya#define GEN8_MEDIA_STATE_FLUSH_header           \
680410e230b6Smaya   .DWordLength                         =      0,  \
680510e230b6Smaya   .SubOpcode                           =      4,  \
680610e230b6Smaya   .MediaCommandOpcode                  =      0,  \
680710e230b6Smaya   .Pipeline                            =      2,  \
680810e230b6Smaya   .CommandType                         =      3
680910e230b6Smaya
681010e230b6Smayastruct GEN8_MEDIA_STATE_FLUSH {
681110e230b6Smaya   uint32_t                             DWordLength;
681210e230b6Smaya   uint32_t                             SubOpcode;
681310e230b6Smaya   uint32_t                             MediaCommandOpcode;
681410e230b6Smaya   uint32_t                             Pipeline;
681510e230b6Smaya   uint32_t                             CommandType;
681610e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
681710e230b6Smaya   uint32_t                             WatermarkRequired;
681810e230b6Smaya   bool                                 FlushtoGO;
681910e230b6Smaya};
682010e230b6Smaya
682110e230b6Smayastatic inline void
682210e230b6SmayaGEN8_MEDIA_STATE_FLUSH_pack(__attribute__((unused)) __gen_user_data *data,
682310e230b6Smaya                            __attribute__((unused)) void * restrict dst,
682410e230b6Smaya                            __attribute__((unused)) const struct GEN8_MEDIA_STATE_FLUSH * restrict values)
682510e230b6Smaya{
682610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
682710e230b6Smaya
682810e230b6Smaya   dw[0] =
682910e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
683010e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
683110e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
683210e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
683310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
683410e230b6Smaya
683510e230b6Smaya   dw[1] =
683610e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5) |
683710e230b6Smaya      __gen_uint(values->WatermarkRequired, 6, 6) |
683810e230b6Smaya      __gen_uint(values->FlushtoGO, 7, 7);
683910e230b6Smaya}
684010e230b6Smaya
684110e230b6Smaya#define GEN8_MEDIA_VFE_STATE_length            9
684210e230b6Smaya#define GEN8_MEDIA_VFE_STATE_length_bias       2
684310e230b6Smaya#define GEN8_MEDIA_VFE_STATE_header             \
684410e230b6Smaya   .DWordLength                         =      7,  \
684510e230b6Smaya   .SubOpcode                           =      0,  \
684610e230b6Smaya   .MediaCommandOpcode                  =      0,  \
684710e230b6Smaya   .Pipeline                            =      2,  \
684810e230b6Smaya   .CommandType                         =      3
684910e230b6Smaya
685010e230b6Smayastruct GEN8_MEDIA_VFE_STATE {
685110e230b6Smaya   uint32_t                             DWordLength;
685210e230b6Smaya   uint32_t                             SubOpcode;
685310e230b6Smaya   uint32_t                             MediaCommandOpcode;
685410e230b6Smaya   uint32_t                             Pipeline;
685510e230b6Smaya   uint32_t                             CommandType;
685610e230b6Smaya   uint32_t                             PerThreadScratchSpace;
685710e230b6Smaya   uint32_t                             StackSize;
685810e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
685910e230b6Smaya   uint32_t                             BypassGatewayControl;
686010e230b6Smaya#define MaintainingOpenGatewayForwardMsgCloseGatewayprotocollegacymode 0
686110e230b6Smaya#define BypassingOpenGatewayCloseGatewayprotocol 1
686210e230b6Smaya   uint32_t                             ResetGatewayTimer;
686310e230b6Smaya#define Maintainingtheexistingtimestampstate     0
686410e230b6Smaya#define Resettingrelativetimerandlatchingtheglobaltimestamp 1
686510e230b6Smaya   uint32_t                             NumberofURBEntries;
686610e230b6Smaya   uint32_t                             MaximumNumberofThreads;
686710e230b6Smaya   uint32_t                             SliceDisable;
686810e230b6Smaya#define AllSubslicesEnabled                      0
686910e230b6Smaya#define OnlySlice0Enabled                        1
687010e230b6Smaya#define OnlySlice0Subslice0Enabled               3
687110e230b6Smaya   uint32_t                             CURBEAllocationSize;
687210e230b6Smaya   uint32_t                             URBEntryAllocationSize;
687310e230b6Smaya   uint32_t                             ScoreboardMask;
687410e230b6Smaya   uint32_t                             ScoreboardType;
687510e230b6Smaya#define StallingScoreboard                       0
687610e230b6Smaya#define NonStallingScoreboard                    1
687710e230b6Smaya   bool                                 ScoreboardEnable;
687810e230b6Smaya   int32_t                              Scoreboard0DeltaX;
687910e230b6Smaya   int32_t                              Scoreboard0DeltaY;
688010e230b6Smaya   int32_t                              Scoreboard1DeltaX;
688110e230b6Smaya   int32_t                              Scoreboard1DeltaY;
688210e230b6Smaya   int32_t                              Scoreboard2DeltaX;
688310e230b6Smaya   int32_t                              Scoreboard2DeltaY;
688410e230b6Smaya   int32_t                              Scoreboard3DeltaX;
688510e230b6Smaya   int32_t                              Scoreboard3DeltaY;
688610e230b6Smaya   int32_t                              Scoreboard4DeltaX;
688710e230b6Smaya   int32_t                              Scoreboard4DeltaY;
688810e230b6Smaya   int32_t                              Scoreboard5DeltaX;
688910e230b6Smaya   int32_t                              Scoreboard5DeltaY;
689010e230b6Smaya   int32_t                              Scoreboard6DeltaX;
689110e230b6Smaya   int32_t                              Scoreboard6DeltaY;
689210e230b6Smaya   int32_t                              Scoreboard7DeltaX;
689310e230b6Smaya   int32_t                              Scoreboard7DeltaY;
689410e230b6Smaya};
689510e230b6Smaya
689610e230b6Smayastatic inline void
689710e230b6SmayaGEN8_MEDIA_VFE_STATE_pack(__attribute__((unused)) __gen_user_data *data,
689810e230b6Smaya                          __attribute__((unused)) void * restrict dst,
689910e230b6Smaya                          __attribute__((unused)) const struct GEN8_MEDIA_VFE_STATE * restrict values)
690010e230b6Smaya{
690110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
690210e230b6Smaya
690310e230b6Smaya   dw[0] =
690410e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
690510e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
690610e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
690710e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
690810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
690910e230b6Smaya
691010e230b6Smaya   const uint64_t v1 =
691110e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3) |
691210e230b6Smaya      __gen_uint(values->StackSize, 4, 7);
691310e230b6Smaya   const uint64_t v1_address =
691410e230b6Smaya      __gen_combine_address(data, &dw[1], values->ScratchSpaceBasePointer, v1);
691510e230b6Smaya   dw[1] = v1_address;
691610e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
691710e230b6Smaya
691810e230b6Smaya   dw[3] =
691910e230b6Smaya      __gen_uint(values->BypassGatewayControl, 6, 6) |
692010e230b6Smaya      __gen_uint(values->ResetGatewayTimer, 7, 7) |
692110e230b6Smaya      __gen_uint(values->NumberofURBEntries, 8, 15) |
692210e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 16, 31);
692310e230b6Smaya
692410e230b6Smaya   dw[4] =
692510e230b6Smaya      __gen_uint(values->SliceDisable, 0, 1);
692610e230b6Smaya
692710e230b6Smaya   dw[5] =
692810e230b6Smaya      __gen_uint(values->CURBEAllocationSize, 0, 15) |
692910e230b6Smaya      __gen_uint(values->URBEntryAllocationSize, 16, 31);
693010e230b6Smaya
693110e230b6Smaya   dw[6] =
693210e230b6Smaya      __gen_uint(values->ScoreboardMask, 0, 7) |
693310e230b6Smaya      __gen_uint(values->ScoreboardType, 30, 30) |
693410e230b6Smaya      __gen_uint(values->ScoreboardEnable, 31, 31);
693510e230b6Smaya
693610e230b6Smaya   dw[7] =
693710e230b6Smaya      __gen_sint(values->Scoreboard0DeltaX, 0, 3) |
693810e230b6Smaya      __gen_sint(values->Scoreboard0DeltaY, 4, 7) |
693910e230b6Smaya      __gen_sint(values->Scoreboard1DeltaX, 8, 11) |
694010e230b6Smaya      __gen_sint(values->Scoreboard1DeltaY, 12, 15) |
694110e230b6Smaya      __gen_sint(values->Scoreboard2DeltaX, 16, 19) |
694210e230b6Smaya      __gen_sint(values->Scoreboard2DeltaY, 20, 23) |
694310e230b6Smaya      __gen_sint(values->Scoreboard3DeltaX, 24, 27) |
694410e230b6Smaya      __gen_sint(values->Scoreboard3DeltaY, 28, 31);
694510e230b6Smaya
694610e230b6Smaya   dw[8] =
694710e230b6Smaya      __gen_sint(values->Scoreboard4DeltaX, 0, 3) |
694810e230b6Smaya      __gen_sint(values->Scoreboard4DeltaY, 4, 7) |
694910e230b6Smaya      __gen_sint(values->Scoreboard5DeltaX, 8, 11) |
695010e230b6Smaya      __gen_sint(values->Scoreboard5DeltaY, 12, 15) |
695110e230b6Smaya      __gen_sint(values->Scoreboard6DeltaX, 16, 19) |
695210e230b6Smaya      __gen_sint(values->Scoreboard6DeltaY, 20, 23) |
695310e230b6Smaya      __gen_sint(values->Scoreboard7DeltaX, 24, 27) |
695410e230b6Smaya      __gen_sint(values->Scoreboard7DeltaY, 28, 31);
695510e230b6Smaya}
695610e230b6Smaya
695710e230b6Smaya#define GEN8_MI_ARB_CHECK_length               1
695810e230b6Smaya#define GEN8_MI_ARB_CHECK_length_bias          1
695910e230b6Smaya#define GEN8_MI_ARB_CHECK_header                \
696010e230b6Smaya   .MICommandOpcode                     =      5,  \
696110e230b6Smaya   .CommandType                         =      0
696210e230b6Smaya
696310e230b6Smayastruct GEN8_MI_ARB_CHECK {
696410e230b6Smaya   uint32_t                             MICommandOpcode;
696510e230b6Smaya   uint32_t                             CommandType;
696610e230b6Smaya};
696710e230b6Smaya
696810e230b6Smayastatic inline void
696910e230b6SmayaGEN8_MI_ARB_CHECK_pack(__attribute__((unused)) __gen_user_data *data,
697010e230b6Smaya                       __attribute__((unused)) void * restrict dst,
697110e230b6Smaya                       __attribute__((unused)) const struct GEN8_MI_ARB_CHECK * restrict values)
697210e230b6Smaya{
697310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
697410e230b6Smaya
697510e230b6Smaya   dw[0] =
697610e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
697710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
697810e230b6Smaya}
697910e230b6Smaya
698010e230b6Smaya#define GEN8_MI_ARB_ON_OFF_length              1
698110e230b6Smaya#define GEN8_MI_ARB_ON_OFF_length_bias         1
698210e230b6Smaya#define GEN8_MI_ARB_ON_OFF_header               \
698310e230b6Smaya   .ArbitrationEnable                   =      1,  \
698410e230b6Smaya   .MICommandOpcode                     =      8,  \
698510e230b6Smaya   .CommandType                         =      0
698610e230b6Smaya
698710e230b6Smayastruct GEN8_MI_ARB_ON_OFF {
698810e230b6Smaya   bool                                 ArbitrationEnable;
698910e230b6Smaya   uint32_t                             MICommandOpcode;
699010e230b6Smaya   uint32_t                             CommandType;
699110e230b6Smaya};
699210e230b6Smaya
699310e230b6Smayastatic inline void
699410e230b6SmayaGEN8_MI_ARB_ON_OFF_pack(__attribute__((unused)) __gen_user_data *data,
699510e230b6Smaya                        __attribute__((unused)) void * restrict dst,
699610e230b6Smaya                        __attribute__((unused)) const struct GEN8_MI_ARB_ON_OFF * restrict values)
699710e230b6Smaya{
699810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
699910e230b6Smaya
700010e230b6Smaya   dw[0] =
700110e230b6Smaya      __gen_uint(values->ArbitrationEnable, 0, 0) |
700210e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
700310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
700410e230b6Smaya}
700510e230b6Smaya
700610e230b6Smaya#define GEN8_MI_ATOMIC_length                  3
700710e230b6Smaya#define GEN8_MI_ATOMIC_length_bias             2
700810e230b6Smaya#define GEN8_MI_ATOMIC_header                   \
700910e230b6Smaya   .DWordLength                         =      1,  \
701010e230b6Smaya   .MICommandOpcode                     =     47,  \
701110e230b6Smaya   .CommandType                         =      0
701210e230b6Smaya
701310e230b6Smayastruct GEN8_MI_ATOMIC {
701410e230b6Smaya   uint32_t                             DWordLength;
701510e230b6Smaya   uint32_t                             ATOMICOPCODE;
701610e230b6Smaya   uint32_t                             ReturnDataControl;
701710e230b6Smaya   uint32_t                             CSSTALL;
701810e230b6Smaya   uint32_t                             InlineData;
701910e230b6Smaya   uint32_t                             DataSize;
702010e230b6Smaya#define DWORD                                    0
702110e230b6Smaya#define QWORD                                    1
702210e230b6Smaya#define OCTWORD                                  2
702310e230b6Smaya#define RESERVED                                 3
702410e230b6Smaya   bool                                 PostSyncOperation;
702510e230b6Smaya   uint32_t                             MemoryType;
702610e230b6Smaya#define PerProcessGraphicsAddress                0
702710e230b6Smaya#define GlobalGraphicsAddress                    1
702810e230b6Smaya   uint32_t                             MICommandOpcode;
702910e230b6Smaya   uint32_t                             CommandType;
703010e230b6Smaya   __gen_address_type                   MemoryAddress;
703110e230b6Smaya   uint32_t                             Operand1DataDword0;
703210e230b6Smaya   uint32_t                             Operand2DataDword0;
703310e230b6Smaya   uint32_t                             Operand1DataDword1;
703410e230b6Smaya   uint32_t                             Operand2DataDword1;
703510e230b6Smaya   uint32_t                             Operand1DataDword2;
703610e230b6Smaya   uint32_t                             Operand2DataDword2;
703710e230b6Smaya   uint32_t                             Operand1DataDword3;
703810e230b6Smaya   uint32_t                             Operand2DataDword3;
703910e230b6Smaya};
704010e230b6Smaya
704110e230b6Smayastatic inline void
704210e230b6SmayaGEN8_MI_ATOMIC_pack(__attribute__((unused)) __gen_user_data *data,
704310e230b6Smaya                    __attribute__((unused)) void * restrict dst,
704410e230b6Smaya                    __attribute__((unused)) const struct GEN8_MI_ATOMIC * restrict values)
704510e230b6Smaya{
704610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
704710e230b6Smaya
704810e230b6Smaya   dw[0] =
704910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
705010e230b6Smaya      __gen_uint(values->ATOMICOPCODE, 8, 15) |
705110e230b6Smaya      __gen_uint(values->ReturnDataControl, 16, 16) |
705210e230b6Smaya      __gen_uint(values->CSSTALL, 17, 17) |
705310e230b6Smaya      __gen_uint(values->InlineData, 18, 18) |
705410e230b6Smaya      __gen_uint(values->DataSize, 19, 20) |
705510e230b6Smaya      __gen_uint(values->PostSyncOperation, 21, 21) |
705610e230b6Smaya      __gen_uint(values->MemoryType, 22, 22) |
705710e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
705810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
705910e230b6Smaya
706010e230b6Smaya   const uint64_t v1_address =
706110e230b6Smaya      __gen_combine_address(data, &dw[1], values->MemoryAddress, 0);
706210e230b6Smaya   dw[1] = v1_address;
706310e230b6Smaya   dw[2] = v1_address >> 32;
706410e230b6Smaya}
706510e230b6Smaya
706610e230b6Smaya#define GEN8_MI_BATCH_BUFFER_END_length        1
706710e230b6Smaya#define GEN8_MI_BATCH_BUFFER_END_length_bias      1
706810e230b6Smaya#define GEN8_MI_BATCH_BUFFER_END_header         \
706910e230b6Smaya   .MICommandOpcode                     =     10,  \
707010e230b6Smaya   .CommandType                         =      0
707110e230b6Smaya
707210e230b6Smayastruct GEN8_MI_BATCH_BUFFER_END {
707310e230b6Smaya   uint32_t                             MICommandOpcode;
707410e230b6Smaya   uint32_t                             CommandType;
707510e230b6Smaya};
707610e230b6Smaya
707710e230b6Smayastatic inline void
707810e230b6SmayaGEN8_MI_BATCH_BUFFER_END_pack(__attribute__((unused)) __gen_user_data *data,
707910e230b6Smaya                              __attribute__((unused)) void * restrict dst,
708010e230b6Smaya                              __attribute__((unused)) const struct GEN8_MI_BATCH_BUFFER_END * restrict values)
708110e230b6Smaya{
708210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
708310e230b6Smaya
708410e230b6Smaya   dw[0] =
708510e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
708610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
708710e230b6Smaya}
708810e230b6Smaya
708910e230b6Smaya#define GEN8_MI_BATCH_BUFFER_START_length      3
709010e230b6Smaya#define GEN8_MI_BATCH_BUFFER_START_length_bias      2
709110e230b6Smaya#define GEN8_MI_BATCH_BUFFER_START_header       \
709210e230b6Smaya   .DWordLength                         =      1,  \
709310e230b6Smaya   .MICommandOpcode                     =     49,  \
709410e230b6Smaya   .CommandType                         =      0
709510e230b6Smaya
709610e230b6Smayastruct GEN8_MI_BATCH_BUFFER_START {
709710e230b6Smaya   uint32_t                             DWordLength;
709810e230b6Smaya   uint32_t                             AddressSpaceIndicator;
709910e230b6Smaya#define ASI_GGTT                                 0
710010e230b6Smaya#define ASI_PPGTT                                1
710110e230b6Smaya   bool                                 ResourceStreamerEnable;
710210e230b6Smaya   bool                                 PredicationEnable;
710310e230b6Smaya   bool                                 AddOffsetEnable;
710410e230b6Smaya   uint32_t                             SecondLevelBatchBuffer;
710510e230b6Smaya#define Firstlevelbatch                          0
710610e230b6Smaya#define Secondlevelbatch                         1
710710e230b6Smaya   uint32_t                             MICommandOpcode;
710810e230b6Smaya   uint32_t                             CommandType;
710910e230b6Smaya   __gen_address_type                   BatchBufferStartAddress;
711010e230b6Smaya};
711110e230b6Smaya
711210e230b6Smayastatic inline void
711310e230b6SmayaGEN8_MI_BATCH_BUFFER_START_pack(__attribute__((unused)) __gen_user_data *data,
711410e230b6Smaya                                __attribute__((unused)) void * restrict dst,
711510e230b6Smaya                                __attribute__((unused)) const struct GEN8_MI_BATCH_BUFFER_START * restrict values)
711610e230b6Smaya{
711710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
711810e230b6Smaya
711910e230b6Smaya   dw[0] =
712010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
712110e230b6Smaya      __gen_uint(values->AddressSpaceIndicator, 8, 8) |
712210e230b6Smaya      __gen_uint(values->ResourceStreamerEnable, 10, 10) |
712310e230b6Smaya      __gen_uint(values->PredicationEnable, 15, 15) |
712410e230b6Smaya      __gen_uint(values->AddOffsetEnable, 16, 16) |
712510e230b6Smaya      __gen_uint(values->SecondLevelBatchBuffer, 22, 22) |
712610e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
712710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
712810e230b6Smaya
712910e230b6Smaya   const uint64_t v1_address =
713010e230b6Smaya      __gen_combine_address(data, &dw[1], values->BatchBufferStartAddress, 0);
713110e230b6Smaya   dw[1] = v1_address;
713210e230b6Smaya   dw[2] = v1_address >> 32;
713310e230b6Smaya}
713410e230b6Smaya
713510e230b6Smaya#define GEN8_MI_CLFLUSH_length_bias            2
713610e230b6Smaya#define GEN8_MI_CLFLUSH_header                  \
713710e230b6Smaya   .DWordLength                         =      1,  \
713810e230b6Smaya   .MICommandOpcode                     =     39,  \
713910e230b6Smaya   .CommandType                         =      0
714010e230b6Smaya
714110e230b6Smayastruct GEN8_MI_CLFLUSH {
714210e230b6Smaya   uint32_t                             DWordLength;
714310e230b6Smaya   bool                                 UseGlobalGTT;
714410e230b6Smaya   uint32_t                             MICommandOpcode;
714510e230b6Smaya   uint32_t                             CommandType;
714610e230b6Smaya   uint32_t                             StartingCachelineOffset;
714710e230b6Smaya   __gen_address_type                   PageBaseAddress;
714810e230b6Smaya   /* variable length fields follow */
714910e230b6Smaya};
715010e230b6Smaya
715110e230b6Smayastatic inline void
715210e230b6SmayaGEN8_MI_CLFLUSH_pack(__attribute__((unused)) __gen_user_data *data,
715310e230b6Smaya                     __attribute__((unused)) void * restrict dst,
715410e230b6Smaya                     __attribute__((unused)) const struct GEN8_MI_CLFLUSH * restrict values)
715510e230b6Smaya{
715610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
715710e230b6Smaya
715810e230b6Smaya   dw[0] =
715910e230b6Smaya      __gen_uint(values->DWordLength, 0, 9) |
716010e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
716110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
716210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
716310e230b6Smaya
716410e230b6Smaya   const uint64_t v1 =
716510e230b6Smaya      __gen_uint(values->StartingCachelineOffset, 6, 11);
716610e230b6Smaya   const uint64_t v1_address =
716710e230b6Smaya      __gen_combine_address(data, &dw[1], values->PageBaseAddress, v1);
716810e230b6Smaya   dw[1] = v1_address;
716910e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
717010e230b6Smaya}
717110e230b6Smaya
717210e230b6Smaya#define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length      3
717310e230b6Smaya#define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length_bias      2
717410e230b6Smaya#define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_header\
717510e230b6Smaya   .DWordLength                         =      1,  \
717610e230b6Smaya   .CompareSemaphore                    =      0,  \
717710e230b6Smaya   .MICommandOpcode                     =     54,  \
717810e230b6Smaya   .CommandType                         =      0
717910e230b6Smaya
718010e230b6Smayastruct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END {
718110e230b6Smaya   uint32_t                             DWordLength;
718210e230b6Smaya   uint32_t                             CompareSemaphore;
718310e230b6Smaya   bool                                 UseGlobalGTT;
718410e230b6Smaya   uint32_t                             MICommandOpcode;
718510e230b6Smaya   uint32_t                             CommandType;
718610e230b6Smaya   uint32_t                             CompareDataDword;
718710e230b6Smaya   __gen_address_type                   CompareAddress;
718810e230b6Smaya};
718910e230b6Smaya
719010e230b6Smayastatic inline void
719110e230b6SmayaGEN8_MI_CONDITIONAL_BATCH_BUFFER_END_pack(__attribute__((unused)) __gen_user_data *data,
719210e230b6Smaya                                          __attribute__((unused)) void * restrict dst,
719310e230b6Smaya                                          __attribute__((unused)) const struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END * restrict values)
719410e230b6Smaya{
719510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
719610e230b6Smaya
719710e230b6Smaya   dw[0] =
719810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
719910e230b6Smaya      __gen_uint(values->CompareSemaphore, 21, 21) |
720010e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
720110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
720210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
720310e230b6Smaya
720410e230b6Smaya   dw[1] =
720510e230b6Smaya      __gen_uint(values->CompareDataDword, 0, 31);
720610e230b6Smaya
720710e230b6Smaya   const uint64_t v2_address =
720810e230b6Smaya      __gen_combine_address(data, &dw[2], values->CompareAddress, 0);
720910e230b6Smaya   dw[2] = v2_address;
721010e230b6Smaya   dw[3] = v2_address >> 32;
721110e230b6Smaya}
721210e230b6Smaya
721310e230b6Smaya#define GEN8_MI_COPY_MEM_MEM_length            5
721410e230b6Smaya#define GEN8_MI_COPY_MEM_MEM_length_bias       2
721510e230b6Smaya#define GEN8_MI_COPY_MEM_MEM_header             \
721610e230b6Smaya   .DWordLength                         =      3,  \
721710e230b6Smaya   .MICommandOpcode                     =     46,  \
721810e230b6Smaya   .CommandType                         =      0
721910e230b6Smaya
722010e230b6Smayastruct GEN8_MI_COPY_MEM_MEM {
722110e230b6Smaya   uint32_t                             DWordLength;
722210e230b6Smaya   bool                                 UseGlobalGTTDestination;
722310e230b6Smaya   bool                                 UseGlobalGTTSource;
722410e230b6Smaya   uint32_t                             MICommandOpcode;
722510e230b6Smaya   uint32_t                             CommandType;
722610e230b6Smaya   __gen_address_type                   DestinationMemoryAddress;
722710e230b6Smaya   __gen_address_type                   SourceMemoryAddress;
722810e230b6Smaya};
722910e230b6Smaya
723010e230b6Smayastatic inline void
723110e230b6SmayaGEN8_MI_COPY_MEM_MEM_pack(__attribute__((unused)) __gen_user_data *data,
723210e230b6Smaya                          __attribute__((unused)) void * restrict dst,
723310e230b6Smaya                          __attribute__((unused)) const struct GEN8_MI_COPY_MEM_MEM * restrict values)
723410e230b6Smaya{
723510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
723610e230b6Smaya
723710e230b6Smaya   dw[0] =
723810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
723910e230b6Smaya      __gen_uint(values->UseGlobalGTTDestination, 21, 21) |
724010e230b6Smaya      __gen_uint(values->UseGlobalGTTSource, 22, 22) |
724110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
724210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
724310e230b6Smaya
724410e230b6Smaya   const uint64_t v1_address =
724510e230b6Smaya      __gen_combine_address(data, &dw[1], values->DestinationMemoryAddress, 0);
724610e230b6Smaya   dw[1] = v1_address;
724710e230b6Smaya   dw[2] = v1_address >> 32;
724810e230b6Smaya
724910e230b6Smaya   const uint64_t v3_address =
725010e230b6Smaya      __gen_combine_address(data, &dw[3], values->SourceMemoryAddress, 0);
725110e230b6Smaya   dw[3] = v3_address;
725210e230b6Smaya   dw[4] = v3_address >> 32;
725310e230b6Smaya}
725410e230b6Smaya
725510e230b6Smaya#define GEN8_MI_LOAD_REGISTER_IMM_length       3
725610e230b6Smaya#define GEN8_MI_LOAD_REGISTER_IMM_length_bias      2
725710e230b6Smaya#define GEN8_MI_LOAD_REGISTER_IMM_header        \
725810e230b6Smaya   .DWordLength                         =      1,  \
725910e230b6Smaya   .MICommandOpcode                     =     34,  \
726010e230b6Smaya   .CommandType                         =      0
726110e230b6Smaya
726210e230b6Smayastruct GEN8_MI_LOAD_REGISTER_IMM {
726310e230b6Smaya   uint32_t                             DWordLength;
726410e230b6Smaya   uint32_t                             ByteWriteDisables;
726510e230b6Smaya   uint32_t                             MICommandOpcode;
726610e230b6Smaya   uint32_t                             CommandType;
726710e230b6Smaya   uint64_t                             RegisterOffset;
726810e230b6Smaya   uint32_t                             DataDWord;
726910e230b6Smaya   /* variable length fields follow */
727010e230b6Smaya};
727110e230b6Smaya
727210e230b6Smayastatic inline void
727310e230b6SmayaGEN8_MI_LOAD_REGISTER_IMM_pack(__attribute__((unused)) __gen_user_data *data,
727410e230b6Smaya                               __attribute__((unused)) void * restrict dst,
727510e230b6Smaya                               __attribute__((unused)) const struct GEN8_MI_LOAD_REGISTER_IMM * restrict values)
727610e230b6Smaya{
727710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
727810e230b6Smaya
727910e230b6Smaya   dw[0] =
728010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
728110e230b6Smaya      __gen_uint(values->ByteWriteDisables, 8, 11) |
728210e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
728310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
728410e230b6Smaya
728510e230b6Smaya   dw[1] =
728610e230b6Smaya      __gen_offset(values->RegisterOffset, 2, 22);
728710e230b6Smaya
728810e230b6Smaya   dw[2] =
728910e230b6Smaya      __gen_uint(values->DataDWord, 0, 31);
729010e230b6Smaya}
729110e230b6Smaya
729210e230b6Smaya#define GEN8_MI_LOAD_REGISTER_MEM_length       4
729310e230b6Smaya#define GEN8_MI_LOAD_REGISTER_MEM_length_bias      2
729410e230b6Smaya#define GEN8_MI_LOAD_REGISTER_MEM_header        \
729510e230b6Smaya   .DWordLength                         =      2,  \
729610e230b6Smaya   .MICommandOpcode                     =     41,  \
729710e230b6Smaya   .CommandType                         =      0
729810e230b6Smaya
729910e230b6Smayastruct GEN8_MI_LOAD_REGISTER_MEM {
730010e230b6Smaya   uint32_t                             DWordLength;
730110e230b6Smaya   bool                                 AsyncModeEnable;
730210e230b6Smaya   bool                                 UseGlobalGTT;
730310e230b6Smaya   uint32_t                             MICommandOpcode;
730410e230b6Smaya   uint32_t                             CommandType;
730510e230b6Smaya   uint64_t                             RegisterAddress;
730610e230b6Smaya   __gen_address_type                   MemoryAddress;
730710e230b6Smaya};
730810e230b6Smaya
730910e230b6Smayastatic inline void
731010e230b6SmayaGEN8_MI_LOAD_REGISTER_MEM_pack(__attribute__((unused)) __gen_user_data *data,
731110e230b6Smaya                               __attribute__((unused)) void * restrict dst,
731210e230b6Smaya                               __attribute__((unused)) const struct GEN8_MI_LOAD_REGISTER_MEM * restrict values)
731310e230b6Smaya{
731410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
731510e230b6Smaya
731610e230b6Smaya   dw[0] =
731710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
731810e230b6Smaya      __gen_uint(values->AsyncModeEnable, 21, 21) |
731910e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
732010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
732110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
732210e230b6Smaya
732310e230b6Smaya   dw[1] =
732410e230b6Smaya      __gen_offset(values->RegisterAddress, 2, 22);
732510e230b6Smaya
732610e230b6Smaya   const uint64_t v2_address =
732710e230b6Smaya      __gen_combine_address(data, &dw[2], values->MemoryAddress, 0);
732810e230b6Smaya   dw[2] = v2_address;
732910e230b6Smaya   dw[3] = v2_address >> 32;
733010e230b6Smaya}
733110e230b6Smaya
733210e230b6Smaya#define GEN8_MI_LOAD_REGISTER_REG_length       3
733310e230b6Smaya#define GEN8_MI_LOAD_REGISTER_REG_length_bias      2
733410e230b6Smaya#define GEN8_MI_LOAD_REGISTER_REG_header        \
733510e230b6Smaya   .DWordLength                         =      1,  \
733610e230b6Smaya   .MICommandOpcode                     =     42,  \
733710e230b6Smaya   .CommandType                         =      0
733810e230b6Smaya
733910e230b6Smayastruct GEN8_MI_LOAD_REGISTER_REG {
734010e230b6Smaya   uint32_t                             DWordLength;
734110e230b6Smaya   uint32_t                             MICommandOpcode;
734210e230b6Smaya   uint32_t                             CommandType;
734310e230b6Smaya   uint64_t                             SourceRegisterAddress;
734410e230b6Smaya   uint64_t                             DestinationRegisterAddress;
734510e230b6Smaya};
734610e230b6Smaya
734710e230b6Smayastatic inline void
734810e230b6SmayaGEN8_MI_LOAD_REGISTER_REG_pack(__attribute__((unused)) __gen_user_data *data,
734910e230b6Smaya                               __attribute__((unused)) void * restrict dst,
735010e230b6Smaya                               __attribute__((unused)) const struct GEN8_MI_LOAD_REGISTER_REG * restrict values)
735110e230b6Smaya{
735210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
735310e230b6Smaya
735410e230b6Smaya   dw[0] =
735510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
735610e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
735710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
735810e230b6Smaya
735910e230b6Smaya   dw[1] =
736010e230b6Smaya      __gen_offset(values->SourceRegisterAddress, 2, 22);
736110e230b6Smaya
736210e230b6Smaya   dw[2] =
736310e230b6Smaya      __gen_offset(values->DestinationRegisterAddress, 2, 22);
736410e230b6Smaya}
736510e230b6Smaya
736610e230b6Smaya#define GEN8_MI_LOAD_SCAN_LINES_EXCL_length      2
736710e230b6Smaya#define GEN8_MI_LOAD_SCAN_LINES_EXCL_length_bias      2
736810e230b6Smaya#define GEN8_MI_LOAD_SCAN_LINES_EXCL_header     \
736910e230b6Smaya   .DWordLength                         =      0,  \
737010e230b6Smaya   .MICommandOpcode                     =     19,  \
737110e230b6Smaya   .CommandType                         =      0
737210e230b6Smaya
737310e230b6Smayastruct GEN8_MI_LOAD_SCAN_LINES_EXCL {
737410e230b6Smaya   uint32_t                             DWordLength;
737510e230b6Smaya   uint32_t                             DisplayPlaneSelect;
737610e230b6Smaya#define DisplayPlaneA                            0
737710e230b6Smaya#define DisplayPlaneB                            1
737810e230b6Smaya#define DisplayPlaneC                            4
737910e230b6Smaya   uint32_t                             MICommandOpcode;
738010e230b6Smaya   uint32_t                             CommandType;
738110e230b6Smaya   uint32_t                             EndScanLineNumber;
738210e230b6Smaya   uint32_t                             StartScanLineNumber;
738310e230b6Smaya};
738410e230b6Smaya
738510e230b6Smayastatic inline void
738610e230b6SmayaGEN8_MI_LOAD_SCAN_LINES_EXCL_pack(__attribute__((unused)) __gen_user_data *data,
738710e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
738810e230b6Smaya                                  __attribute__((unused)) const struct GEN8_MI_LOAD_SCAN_LINES_EXCL * restrict values)
738910e230b6Smaya{
739010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
739110e230b6Smaya
739210e230b6Smaya   dw[0] =
739310e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
739410e230b6Smaya      __gen_uint(values->DisplayPlaneSelect, 19, 21) |
739510e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
739610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
739710e230b6Smaya
739810e230b6Smaya   dw[1] =
739910e230b6Smaya      __gen_uint(values->EndScanLineNumber, 0, 12) |
740010e230b6Smaya      __gen_uint(values->StartScanLineNumber, 16, 28);
740110e230b6Smaya}
740210e230b6Smaya
740310e230b6Smaya#define GEN8_MI_LOAD_SCAN_LINES_INCL_length      2
740410e230b6Smaya#define GEN8_MI_LOAD_SCAN_LINES_INCL_length_bias      2
740510e230b6Smaya#define GEN8_MI_LOAD_SCAN_LINES_INCL_header     \
740610e230b6Smaya   .DWordLength                         =      0,  \
740710e230b6Smaya   .MICommandOpcode                     =     18,  \
740810e230b6Smaya   .CommandType                         =      0
740910e230b6Smaya
741010e230b6Smayastruct GEN8_MI_LOAD_SCAN_LINES_INCL {
741110e230b6Smaya   uint32_t                             DWordLength;
741210e230b6Smaya   uint32_t                             ScanLineEventDoneForward;
741310e230b6Smaya   uint32_t                             DisplayPlaneSelect;
741410e230b6Smaya#define DisplayPlaneA                            0
741510e230b6Smaya#define DisplayPlaneB                            1
741610e230b6Smaya#define DisplayPlaneC                            4
741710e230b6Smaya   uint32_t                             MICommandOpcode;
741810e230b6Smaya   uint32_t                             CommandType;
741910e230b6Smaya   uint32_t                             EndScanLineNumber;
742010e230b6Smaya   uint32_t                             StartScanLineNumber;
742110e230b6Smaya};
742210e230b6Smaya
742310e230b6Smayastatic inline void
742410e230b6SmayaGEN8_MI_LOAD_SCAN_LINES_INCL_pack(__attribute__((unused)) __gen_user_data *data,
742510e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
742610e230b6Smaya                                  __attribute__((unused)) const struct GEN8_MI_LOAD_SCAN_LINES_INCL * restrict values)
742710e230b6Smaya{
742810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
742910e230b6Smaya
743010e230b6Smaya   dw[0] =
743110e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
743210e230b6Smaya      __gen_uint(values->ScanLineEventDoneForward, 17, 18) |
743310e230b6Smaya      __gen_uint(values->DisplayPlaneSelect, 19, 21) |
743410e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
743510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
743610e230b6Smaya
743710e230b6Smaya   dw[1] =
743810e230b6Smaya      __gen_uint(values->EndScanLineNumber, 0, 12) |
743910e230b6Smaya      __gen_uint(values->StartScanLineNumber, 16, 28);
744010e230b6Smaya}
744110e230b6Smaya
744210e230b6Smaya#define GEN8_MI_LOAD_URB_MEM_length            4
744310e230b6Smaya#define GEN8_MI_LOAD_URB_MEM_length_bias       2
744410e230b6Smaya#define GEN8_MI_LOAD_URB_MEM_header             \
744510e230b6Smaya   .DWordLength                         =      2,  \
744610e230b6Smaya   .MICommandOpcode                     =     44,  \
744710e230b6Smaya   .CommandType                         =      0
744810e230b6Smaya
744910e230b6Smayastruct GEN8_MI_LOAD_URB_MEM {
745010e230b6Smaya   uint32_t                             DWordLength;
745110e230b6Smaya   uint32_t                             MICommandOpcode;
745210e230b6Smaya   uint32_t                             CommandType;
745310e230b6Smaya   uint32_t                             URBAddress;
745410e230b6Smaya   __gen_address_type                   MemoryAddress;
745510e230b6Smaya};
745610e230b6Smaya
745710e230b6Smayastatic inline void
745810e230b6SmayaGEN8_MI_LOAD_URB_MEM_pack(__attribute__((unused)) __gen_user_data *data,
745910e230b6Smaya                          __attribute__((unused)) void * restrict dst,
746010e230b6Smaya                          __attribute__((unused)) const struct GEN8_MI_LOAD_URB_MEM * restrict values)
746110e230b6Smaya{
746210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
746310e230b6Smaya
746410e230b6Smaya   dw[0] =
746510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
746610e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
746710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
746810e230b6Smaya
746910e230b6Smaya   dw[1] =
747010e230b6Smaya      __gen_uint(values->URBAddress, 2, 14);
747110e230b6Smaya
747210e230b6Smaya   const uint64_t v2_address =
747310e230b6Smaya      __gen_combine_address(data, &dw[2], values->MemoryAddress, 0);
747410e230b6Smaya   dw[2] = v2_address;
747510e230b6Smaya   dw[3] = v2_address >> 32;
747610e230b6Smaya}
747710e230b6Smaya
747810e230b6Smaya#define GEN8_MI_MATH_length_bias               2
747910e230b6Smaya#define GEN8_MI_MATH_header                     \
748010e230b6Smaya   .DWordLength                         =      0,  \
748110e230b6Smaya   .MICommandOpcode                     =     26,  \
748210e230b6Smaya   .CommandType                         =      0
748310e230b6Smaya
748410e230b6Smayastruct GEN8_MI_MATH {
748510e230b6Smaya   uint32_t                             DWordLength;
748610e230b6Smaya   uint32_t                             MICommandOpcode;
748710e230b6Smaya   uint32_t                             CommandType;
748810e230b6Smaya   /* variable length fields follow */
748910e230b6Smaya};
749010e230b6Smaya
749110e230b6Smayastatic inline void
749210e230b6SmayaGEN8_MI_MATH_pack(__attribute__((unused)) __gen_user_data *data,
749310e230b6Smaya                  __attribute__((unused)) void * restrict dst,
749410e230b6Smaya                  __attribute__((unused)) const struct GEN8_MI_MATH * restrict values)
749510e230b6Smaya{
749610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
749710e230b6Smaya
749810e230b6Smaya   dw[0] =
749910e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
750010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
750110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
750210e230b6Smaya}
750310e230b6Smaya
750410e230b6Smaya#define GEN8_MI_NOOP_length                    1
750510e230b6Smaya#define GEN8_MI_NOOP_length_bias               1
750610e230b6Smaya#define GEN8_MI_NOOP_header                     \
750710e230b6Smaya   .MICommandOpcode                     =      0,  \
750810e230b6Smaya   .CommandType                         =      0
750910e230b6Smaya
751010e230b6Smayastruct GEN8_MI_NOOP {
751110e230b6Smaya   uint32_t                             IdentificationNumber;
751210e230b6Smaya   bool                                 IdentificationNumberRegisterWriteEnable;
751310e230b6Smaya   uint32_t                             MICommandOpcode;
751410e230b6Smaya   uint32_t                             CommandType;
751510e230b6Smaya};
751610e230b6Smaya
751710e230b6Smayastatic inline void
751810e230b6SmayaGEN8_MI_NOOP_pack(__attribute__((unused)) __gen_user_data *data,
751910e230b6Smaya                  __attribute__((unused)) void * restrict dst,
752010e230b6Smaya                  __attribute__((unused)) const struct GEN8_MI_NOOP * restrict values)
752110e230b6Smaya{
752210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
752310e230b6Smaya
752410e230b6Smaya   dw[0] =
752510e230b6Smaya      __gen_uint(values->IdentificationNumber, 0, 21) |
752610e230b6Smaya      __gen_uint(values->IdentificationNumberRegisterWriteEnable, 22, 22) |
752710e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
752810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
752910e230b6Smaya}
753010e230b6Smaya
753110e230b6Smaya#define GEN8_MI_PREDICATE_length               1
753210e230b6Smaya#define GEN8_MI_PREDICATE_length_bias          1
753310e230b6Smaya#define GEN8_MI_PREDICATE_header                \
753410e230b6Smaya   .MICommandOpcode                     =     12,  \
753510e230b6Smaya   .CommandType                         =      0
753610e230b6Smaya
753710e230b6Smayastruct GEN8_MI_PREDICATE {
753810e230b6Smaya   uint32_t                             CompareOperation;
753910e230b6Smaya#define COMPARE_TRUE                             0
754010e230b6Smaya#define COMPARE_FALSE                            1
754110e230b6Smaya#define COMPARE_SRCS_EQUAL                       2
754210e230b6Smaya#define COMPARE_DELTAS_EQUAL                     3
754310e230b6Smaya   uint32_t                             CombineOperation;
754410e230b6Smaya#define COMBINE_SET                              0
754510e230b6Smaya#define COMBINE_AND                              1
754610e230b6Smaya#define COMBINE_OR                               2
754710e230b6Smaya#define COMBINE_XOR                              3
754810e230b6Smaya   uint32_t                             LoadOperation;
754910e230b6Smaya#define LOAD_KEEP                                0
755010e230b6Smaya#define LOAD_LOAD                                2
755110e230b6Smaya#define LOAD_LOADINV                             3
755210e230b6Smaya   uint32_t                             MICommandOpcode;
755310e230b6Smaya   uint32_t                             CommandType;
755410e230b6Smaya};
755510e230b6Smaya
755610e230b6Smayastatic inline void
755710e230b6SmayaGEN8_MI_PREDICATE_pack(__attribute__((unused)) __gen_user_data *data,
755810e230b6Smaya                       __attribute__((unused)) void * restrict dst,
755910e230b6Smaya                       __attribute__((unused)) const struct GEN8_MI_PREDICATE * restrict values)
756010e230b6Smaya{
756110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
756210e230b6Smaya
756310e230b6Smaya   dw[0] =
756410e230b6Smaya      __gen_uint(values->CompareOperation, 0, 1) |
756510e230b6Smaya      __gen_uint(values->CombineOperation, 3, 4) |
756610e230b6Smaya      __gen_uint(values->LoadOperation, 6, 7) |
756710e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
756810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
756910e230b6Smaya}
757010e230b6Smaya
757110e230b6Smaya#define GEN8_MI_REPORT_HEAD_length             1
757210e230b6Smaya#define GEN8_MI_REPORT_HEAD_length_bias        1
757310e230b6Smaya#define GEN8_MI_REPORT_HEAD_header              \
757410e230b6Smaya   .MICommandOpcode                     =      7,  \
757510e230b6Smaya   .CommandType                         =      0
757610e230b6Smaya
757710e230b6Smayastruct GEN8_MI_REPORT_HEAD {
757810e230b6Smaya   uint32_t                             MICommandOpcode;
757910e230b6Smaya   uint32_t                             CommandType;
758010e230b6Smaya};
758110e230b6Smaya
758210e230b6Smayastatic inline void
758310e230b6SmayaGEN8_MI_REPORT_HEAD_pack(__attribute__((unused)) __gen_user_data *data,
758410e230b6Smaya                         __attribute__((unused)) void * restrict dst,
758510e230b6Smaya                         __attribute__((unused)) const struct GEN8_MI_REPORT_HEAD * restrict values)
758610e230b6Smaya{
758710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
758810e230b6Smaya
758910e230b6Smaya   dw[0] =
759010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
759110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
759210e230b6Smaya}
759310e230b6Smaya
759410e230b6Smaya#define GEN8_MI_REPORT_PERF_COUNT_length       4
759510e230b6Smaya#define GEN8_MI_REPORT_PERF_COUNT_length_bias      2
759610e230b6Smaya#define GEN8_MI_REPORT_PERF_COUNT_header        \
759710e230b6Smaya   .DWordLength                         =      2,  \
759810e230b6Smaya   .MICommandOpcode                     =     40,  \
759910e230b6Smaya   .CommandType                         =      0
760010e230b6Smaya
760110e230b6Smayastruct GEN8_MI_REPORT_PERF_COUNT {
760210e230b6Smaya   uint32_t                             DWordLength;
760310e230b6Smaya   uint32_t                             MICommandOpcode;
760410e230b6Smaya   uint32_t                             CommandType;
760510e230b6Smaya   bool                                 UseGlobalGTT;
760610e230b6Smaya   uint32_t                             CoreModeEnable;
760710e230b6Smaya   __gen_address_type                   MemoryAddress;
760810e230b6Smaya   uint32_t                             ReportID;
760910e230b6Smaya};
761010e230b6Smaya
761110e230b6Smayastatic inline void
761210e230b6SmayaGEN8_MI_REPORT_PERF_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
761310e230b6Smaya                               __attribute__((unused)) void * restrict dst,
761410e230b6Smaya                               __attribute__((unused)) const struct GEN8_MI_REPORT_PERF_COUNT * restrict values)
761510e230b6Smaya{
761610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
761710e230b6Smaya
761810e230b6Smaya   dw[0] =
761910e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
762010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
762110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
762210e230b6Smaya
762310e230b6Smaya   const uint64_t v1 =
762410e230b6Smaya      __gen_uint(values->UseGlobalGTT, 0, 0) |
762510e230b6Smaya      __gen_uint(values->CoreModeEnable, 4, 4);
762610e230b6Smaya   const uint64_t v1_address =
762710e230b6Smaya      __gen_combine_address(data, &dw[1], values->MemoryAddress, v1);
762810e230b6Smaya   dw[1] = v1_address;
762910e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
763010e230b6Smaya
763110e230b6Smaya   dw[3] =
763210e230b6Smaya      __gen_uint(values->ReportID, 0, 31);
763310e230b6Smaya}
763410e230b6Smaya
763510e230b6Smaya#define GEN8_MI_RS_CONTEXT_length              1
763610e230b6Smaya#define GEN8_MI_RS_CONTEXT_length_bias         1
763710e230b6Smaya#define GEN8_MI_RS_CONTEXT_header               \
763810e230b6Smaya   .MICommandOpcode                     =     15,  \
763910e230b6Smaya   .CommandType                         =      0
764010e230b6Smaya
764110e230b6Smayastruct GEN8_MI_RS_CONTEXT {
764210e230b6Smaya   uint32_t                             ResourceStreamerSave;
764310e230b6Smaya#define RS_Restore                               0
764410e230b6Smaya#define RS_Save                                  1
764510e230b6Smaya   uint32_t                             MICommandOpcode;
764610e230b6Smaya   uint32_t                             CommandType;
764710e230b6Smaya};
764810e230b6Smaya
764910e230b6Smayastatic inline void
765010e230b6SmayaGEN8_MI_RS_CONTEXT_pack(__attribute__((unused)) __gen_user_data *data,
765110e230b6Smaya                        __attribute__((unused)) void * restrict dst,
765210e230b6Smaya                        __attribute__((unused)) const struct GEN8_MI_RS_CONTEXT * restrict values)
765310e230b6Smaya{
765410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
765510e230b6Smaya
765610e230b6Smaya   dw[0] =
765710e230b6Smaya      __gen_uint(values->ResourceStreamerSave, 0, 0) |
765810e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
765910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
766010e230b6Smaya}
766110e230b6Smaya
766210e230b6Smaya#define GEN8_MI_RS_CONTROL_length              1
766310e230b6Smaya#define GEN8_MI_RS_CONTROL_length_bias         1
766410e230b6Smaya#define GEN8_MI_RS_CONTROL_header               \
766510e230b6Smaya   .MICommandOpcode                     =      6,  \
766610e230b6Smaya   .CommandType                         =      0
766710e230b6Smaya
766810e230b6Smayastruct GEN8_MI_RS_CONTROL {
766910e230b6Smaya   uint32_t                             ResourceStreamerControl;
767010e230b6Smaya#define RS_Stop                                  0
767110e230b6Smaya#define RS_Start                                 1
767210e230b6Smaya   uint32_t                             MICommandOpcode;
767310e230b6Smaya   uint32_t                             CommandType;
767410e230b6Smaya};
767510e230b6Smaya
767610e230b6Smayastatic inline void
767710e230b6SmayaGEN8_MI_RS_CONTROL_pack(__attribute__((unused)) __gen_user_data *data,
767810e230b6Smaya                        __attribute__((unused)) void * restrict dst,
767910e230b6Smaya                        __attribute__((unused)) const struct GEN8_MI_RS_CONTROL * restrict values)
768010e230b6Smaya{
768110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
768210e230b6Smaya
768310e230b6Smaya   dw[0] =
768410e230b6Smaya      __gen_uint(values->ResourceStreamerControl, 0, 0) |
768510e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
768610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
768710e230b6Smaya}
768810e230b6Smaya
768910e230b6Smaya#define GEN8_MI_RS_STORE_DATA_IMM_length       4
769010e230b6Smaya#define GEN8_MI_RS_STORE_DATA_IMM_length_bias      2
769110e230b6Smaya#define GEN8_MI_RS_STORE_DATA_IMM_header        \
769210e230b6Smaya   .DWordLength                         =      2,  \
769310e230b6Smaya   .MICommandOpcode                     =     43,  \
769410e230b6Smaya   .CommandType                         =      0
769510e230b6Smaya
769610e230b6Smayastruct GEN8_MI_RS_STORE_DATA_IMM {
769710e230b6Smaya   uint32_t                             DWordLength;
769810e230b6Smaya   uint32_t                             MICommandOpcode;
769910e230b6Smaya   uint32_t                             CommandType;
770010e230b6Smaya   uint32_t                             CoreModeEnable;
770110e230b6Smaya   __gen_address_type                   DestinationAddress;
770210e230b6Smaya   uint32_t                             DataDWord0;
770310e230b6Smaya};
770410e230b6Smaya
770510e230b6Smayastatic inline void
770610e230b6SmayaGEN8_MI_RS_STORE_DATA_IMM_pack(__attribute__((unused)) __gen_user_data *data,
770710e230b6Smaya                               __attribute__((unused)) void * restrict dst,
770810e230b6Smaya                               __attribute__((unused)) const struct GEN8_MI_RS_STORE_DATA_IMM * restrict values)
770910e230b6Smaya{
771010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
771110e230b6Smaya
771210e230b6Smaya   dw[0] =
771310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
771410e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
771510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
771610e230b6Smaya
771710e230b6Smaya   const uint64_t v1 =
771810e230b6Smaya      __gen_uint(values->CoreModeEnable, 0, 0);
771910e230b6Smaya   const uint64_t v1_address =
772010e230b6Smaya      __gen_combine_address(data, &dw[1], values->DestinationAddress, v1);
772110e230b6Smaya   dw[1] = v1_address;
772210e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
772310e230b6Smaya
772410e230b6Smaya   dw[3] =
772510e230b6Smaya      __gen_uint(values->DataDWord0, 0, 31);
772610e230b6Smaya}
772710e230b6Smaya
772810e230b6Smaya#define GEN8_MI_SEMAPHORE_SIGNAL_length        2
772910e230b6Smaya#define GEN8_MI_SEMAPHORE_SIGNAL_length_bias      2
773010e230b6Smaya#define GEN8_MI_SEMAPHORE_SIGNAL_header         \
773110e230b6Smaya   .DWordLength                         =      0,  \
773210e230b6Smaya   .MICommandOpcode                     =     27,  \
773310e230b6Smaya   .CommandType                         =      0
773410e230b6Smaya
773510e230b6Smayastruct GEN8_MI_SEMAPHORE_SIGNAL {
773610e230b6Smaya   uint32_t                             DWordLength;
773710e230b6Smaya   uint32_t                             TargetEngineSelect;
773810e230b6Smaya#define RCS                                      0
773910e230b6Smaya#define VCS0                                     1
774010e230b6Smaya#define BCS                                      2
774110e230b6Smaya#define VECS                                     3
774210e230b6Smaya#define VCS1                                     4
774310e230b6Smaya   bool                                 PostSyncOperation;
774410e230b6Smaya   uint32_t                             MICommandOpcode;
774510e230b6Smaya   uint32_t                             CommandType;
774610e230b6Smaya   uint32_t                             TargetContextID;
774710e230b6Smaya};
774810e230b6Smaya
774910e230b6Smayastatic inline void
775010e230b6SmayaGEN8_MI_SEMAPHORE_SIGNAL_pack(__attribute__((unused)) __gen_user_data *data,
775110e230b6Smaya                              __attribute__((unused)) void * restrict dst,
775210e230b6Smaya                              __attribute__((unused)) const struct GEN8_MI_SEMAPHORE_SIGNAL * restrict values)
775310e230b6Smaya{
775410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
775510e230b6Smaya
775610e230b6Smaya   dw[0] =
775710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
775810e230b6Smaya      __gen_uint(values->TargetEngineSelect, 15, 17) |
775910e230b6Smaya      __gen_uint(values->PostSyncOperation, 21, 21) |
776010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
776110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
776210e230b6Smaya
776310e230b6Smaya   dw[1] =
776410e230b6Smaya      __gen_uint(values->TargetContextID, 0, 31);
776510e230b6Smaya}
776610e230b6Smaya
776710e230b6Smaya#define GEN8_MI_SEMAPHORE_WAIT_length          4
776810e230b6Smaya#define GEN8_MI_SEMAPHORE_WAIT_length_bias      2
776910e230b6Smaya#define GEN8_MI_SEMAPHORE_WAIT_header           \
777010e230b6Smaya   .DWordLength                         =      2,  \
777110e230b6Smaya   .MICommandOpcode                     =     28,  \
777210e230b6Smaya   .CommandType                         =      0
777310e230b6Smaya
777410e230b6Smayastruct GEN8_MI_SEMAPHORE_WAIT {
777510e230b6Smaya   uint32_t                             DWordLength;
777610e230b6Smaya   uint32_t                             CompareOperation;
777710e230b6Smaya#define COMPARE_SAD_GREATER_THAN_SDD             0
777810e230b6Smaya#define COMPARE_SAD_GREATER_THAN_OR_EQUAL_SDD    1
777910e230b6Smaya#define COMPARE_SAD_LESS_THAN_SDD                2
778010e230b6Smaya#define COMPARE_SAD_LESS_THAN_OR_EQUAL_SDD       3
778110e230b6Smaya#define COMPARE_SAD_EQUAL_SDD                    4
778210e230b6Smaya#define COMPARE_SAD_NOT_EQUAL_SDD                5
778310e230b6Smaya   uint32_t                             WaitMode;
778410e230b6Smaya#define PollingMode                              1
778510e230b6Smaya#define SignalMode                               0
778610e230b6Smaya   uint32_t                             MemoryType;
778710e230b6Smaya#define PerProcessGraphicsAddress                0
778810e230b6Smaya#define GlobalGraphicsAddress                    1
778910e230b6Smaya   uint32_t                             MICommandOpcode;
779010e230b6Smaya   uint32_t                             CommandType;
779110e230b6Smaya   uint32_t                             SemaphoreDataDword;
779210e230b6Smaya   __gen_address_type                   SemaphoreAddress;
779310e230b6Smaya   __gen_address_type                   SemaphoreAddressHigh;
779410e230b6Smaya};
779510e230b6Smaya
779610e230b6Smayastatic inline void
779710e230b6SmayaGEN8_MI_SEMAPHORE_WAIT_pack(__attribute__((unused)) __gen_user_data *data,
779810e230b6Smaya                            __attribute__((unused)) void * restrict dst,
779910e230b6Smaya                            __attribute__((unused)) const struct GEN8_MI_SEMAPHORE_WAIT * restrict values)
780010e230b6Smaya{
780110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
780210e230b6Smaya
780310e230b6Smaya   dw[0] =
780410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
780510e230b6Smaya      __gen_uint(values->CompareOperation, 12, 14) |
780610e230b6Smaya      __gen_uint(values->WaitMode, 15, 15) |
780710e230b6Smaya      __gen_uint(values->MemoryType, 22, 22) |
780810e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
780910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
781010e230b6Smaya
781110e230b6Smaya   dw[1] =
781210e230b6Smaya      __gen_uint(values->SemaphoreDataDword, 0, 31);
781310e230b6Smaya
781410e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->SemaphoreAddress, 0);
781510e230b6Smaya
781610e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->SemaphoreAddressHigh, 0);
781710e230b6Smaya}
781810e230b6Smaya
781910e230b6Smaya#define GEN8_MI_SET_CONTEXT_length             2
782010e230b6Smaya#define GEN8_MI_SET_CONTEXT_length_bias        2
782110e230b6Smaya#define GEN8_MI_SET_CONTEXT_header              \
782210e230b6Smaya   .DWordLength                         =      0,  \
782310e230b6Smaya   .MICommandOpcode                     =     24,  \
782410e230b6Smaya   .CommandType                         =      0
782510e230b6Smaya
782610e230b6Smayastruct GEN8_MI_SET_CONTEXT {
782710e230b6Smaya   uint32_t                             DWordLength;
782810e230b6Smaya   uint32_t                             MICommandOpcode;
782910e230b6Smaya   uint32_t                             CommandType;
783010e230b6Smaya   uint32_t                             RestoreInhibit;
783110e230b6Smaya   uint32_t                             ForceRestore;
783210e230b6Smaya   bool                                 ResourceStreamerStateRestoreEnable;
783310e230b6Smaya   bool                                 ResourceStreamerStateSaveEnable;
783410e230b6Smaya   bool                                 CoreModeEnable;
783510e230b6Smaya   uint32_t                             ReservedMustbe1;
783610e230b6Smaya   __gen_address_type                   LogicalContextAddress;
783710e230b6Smaya};
783810e230b6Smaya
783910e230b6Smayastatic inline void
784010e230b6SmayaGEN8_MI_SET_CONTEXT_pack(__attribute__((unused)) __gen_user_data *data,
784110e230b6Smaya                         __attribute__((unused)) void * restrict dst,
784210e230b6Smaya                         __attribute__((unused)) const struct GEN8_MI_SET_CONTEXT * restrict values)
784310e230b6Smaya{
784410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
784510e230b6Smaya
784610e230b6Smaya   dw[0] =
784710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
784810e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
784910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
785010e230b6Smaya
785110e230b6Smaya   const uint32_t v1 =
785210e230b6Smaya      __gen_uint(values->RestoreInhibit, 0, 0) |
785310e230b6Smaya      __gen_uint(values->ForceRestore, 1, 1) |
785410e230b6Smaya      __gen_uint(values->ResourceStreamerStateRestoreEnable, 2, 2) |
785510e230b6Smaya      __gen_uint(values->ResourceStreamerStateSaveEnable, 3, 3) |
785610e230b6Smaya      __gen_uint(values->CoreModeEnable, 4, 4) |
785710e230b6Smaya      __gen_uint(values->ReservedMustbe1, 8, 8);
785810e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->LogicalContextAddress, v1);
785910e230b6Smaya}
786010e230b6Smaya
786110e230b6Smaya#define GEN8_MI_SET_PREDICATE_length           1
786210e230b6Smaya#define GEN8_MI_SET_PREDICATE_length_bias      1
786310e230b6Smaya#define GEN8_MI_SET_PREDICATE_header            \
786410e230b6Smaya   .MICommandOpcode                     =      1,  \
786510e230b6Smaya   .CommandType                         =      0
786610e230b6Smaya
786710e230b6Smayastruct GEN8_MI_SET_PREDICATE {
786810e230b6Smaya   uint32_t                             PREDICATEENABLE;
786910e230b6Smaya#define NOOPNever                                0
787010e230b6Smaya#define NOOPonResult2clear                       1
787110e230b6Smaya#define NOOPonResult2set                         2
787210e230b6Smaya#define NOOPonResultclear                        3
787310e230b6Smaya#define NOOPonResultset                          4
787410e230b6Smaya#define Executewhenonesliceenabled               5
787510e230b6Smaya#define Executewhentwoslicesareenabled           6
787610e230b6Smaya#define Executewhenthreeslicesareenabled         7
787710e230b6Smaya#define NOOPAlways                               15
787810e230b6Smaya   uint32_t                             MICommandOpcode;
787910e230b6Smaya   uint32_t                             CommandType;
788010e230b6Smaya};
788110e230b6Smaya
788210e230b6Smayastatic inline void
788310e230b6SmayaGEN8_MI_SET_PREDICATE_pack(__attribute__((unused)) __gen_user_data *data,
788410e230b6Smaya                           __attribute__((unused)) void * restrict dst,
788510e230b6Smaya                           __attribute__((unused)) const struct GEN8_MI_SET_PREDICATE * restrict values)
788610e230b6Smaya{
788710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
788810e230b6Smaya
788910e230b6Smaya   dw[0] =
789010e230b6Smaya      __gen_uint(values->PREDICATEENABLE, 0, 3) |
789110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
789210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
789310e230b6Smaya}
789410e230b6Smaya
789510e230b6Smaya#define GEN8_MI_STORE_DATA_IMM_length          4
789610e230b6Smaya#define GEN8_MI_STORE_DATA_IMM_length_bias      2
789710e230b6Smaya#define GEN8_MI_STORE_DATA_IMM_header           \
789810e230b6Smaya   .DWordLength                         =      2,  \
789910e230b6Smaya   .MICommandOpcode                     =     32,  \
790010e230b6Smaya   .CommandType                         =      0
790110e230b6Smaya
790210e230b6Smayastruct GEN8_MI_STORE_DATA_IMM {
790310e230b6Smaya   uint32_t                             DWordLength;
790410e230b6Smaya   uint32_t                             StoreQword;
790510e230b6Smaya   bool                                 UseGlobalGTT;
790610e230b6Smaya   uint32_t                             MICommandOpcode;
790710e230b6Smaya   uint32_t                             CommandType;
790810e230b6Smaya   uint32_t                             CoreModeEnable;
790910e230b6Smaya   __gen_address_type                   Address;
791010e230b6Smaya   uint64_t                             ImmediateData;
791110e230b6Smaya};
791210e230b6Smaya
791310e230b6Smayastatic inline void
791410e230b6SmayaGEN8_MI_STORE_DATA_IMM_pack(__attribute__((unused)) __gen_user_data *data,
791510e230b6Smaya                            __attribute__((unused)) void * restrict dst,
791610e230b6Smaya                            __attribute__((unused)) const struct GEN8_MI_STORE_DATA_IMM * restrict values)
791710e230b6Smaya{
791810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
791910e230b6Smaya
792010e230b6Smaya   dw[0] =
792110e230b6Smaya      __gen_uint(values->DWordLength, 0, 9) |
792210e230b6Smaya      __gen_uint(values->StoreQword, 21, 21) |
792310e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
792410e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
792510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
792610e230b6Smaya
792710e230b6Smaya   const uint64_t v1 =
792810e230b6Smaya      __gen_uint(values->CoreModeEnable, 0, 0);
792910e230b6Smaya   const uint64_t v1_address =
793010e230b6Smaya      __gen_combine_address(data, &dw[1], values->Address, v1);
793110e230b6Smaya   dw[1] = v1_address;
793210e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
793310e230b6Smaya
793410e230b6Smaya   const uint64_t v3 =
793510e230b6Smaya      __gen_uint(values->ImmediateData, 0, 63);
793610e230b6Smaya   dw[3] = v3;
793710e230b6Smaya   dw[4] = v3 >> 32;
793810e230b6Smaya}
793910e230b6Smaya
794010e230b6Smaya#define GEN8_MI_STORE_DATA_INDEX_length        3
794110e230b6Smaya#define GEN8_MI_STORE_DATA_INDEX_length_bias      2
794210e230b6Smaya#define GEN8_MI_STORE_DATA_INDEX_header         \
794310e230b6Smaya   .DWordLength                         =      1,  \
794410e230b6Smaya   .MICommandOpcode                     =     33,  \
794510e230b6Smaya   .CommandType                         =      0
794610e230b6Smaya
794710e230b6Smayastruct GEN8_MI_STORE_DATA_INDEX {
794810e230b6Smaya   uint32_t                             DWordLength;
794910e230b6Smaya   uint32_t                             UsePerProcessHardwareStatusPage;
795010e230b6Smaya   uint32_t                             MICommandOpcode;
795110e230b6Smaya   uint32_t                             CommandType;
795210e230b6Smaya   uint32_t                             Offset;
795310e230b6Smaya   uint32_t                             DataDWord0;
795410e230b6Smaya   uint32_t                             DataDWord1;
795510e230b6Smaya};
795610e230b6Smaya
795710e230b6Smayastatic inline void
795810e230b6SmayaGEN8_MI_STORE_DATA_INDEX_pack(__attribute__((unused)) __gen_user_data *data,
795910e230b6Smaya                              __attribute__((unused)) void * restrict dst,
796010e230b6Smaya                              __attribute__((unused)) const struct GEN8_MI_STORE_DATA_INDEX * restrict values)
796110e230b6Smaya{
796210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
796310e230b6Smaya
796410e230b6Smaya   dw[0] =
796510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
796610e230b6Smaya      __gen_uint(values->UsePerProcessHardwareStatusPage, 21, 21) |
796710e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
796810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
796910e230b6Smaya
797010e230b6Smaya   dw[1] =
797110e230b6Smaya      __gen_uint(values->Offset, 2, 11);
797210e230b6Smaya
797310e230b6Smaya   dw[2] =
797410e230b6Smaya      __gen_uint(values->DataDWord0, 0, 31);
797510e230b6Smaya}
797610e230b6Smaya
797710e230b6Smaya#define GEN8_MI_STORE_REGISTER_MEM_length      4
797810e230b6Smaya#define GEN8_MI_STORE_REGISTER_MEM_length_bias      2
797910e230b6Smaya#define GEN8_MI_STORE_REGISTER_MEM_header       \
798010e230b6Smaya   .DWordLength                         =      2,  \
798110e230b6Smaya   .MICommandOpcode                     =     36,  \
798210e230b6Smaya   .CommandType                         =      0
798310e230b6Smaya
798410e230b6Smayastruct GEN8_MI_STORE_REGISTER_MEM {
798510e230b6Smaya   uint32_t                             DWordLength;
798610e230b6Smaya   bool                                 PredicateEnable;
798710e230b6Smaya   bool                                 UseGlobalGTT;
798810e230b6Smaya   uint32_t                             MICommandOpcode;
798910e230b6Smaya   uint32_t                             CommandType;
799010e230b6Smaya   uint64_t                             RegisterAddress;
799110e230b6Smaya   __gen_address_type                   MemoryAddress;
799210e230b6Smaya};
799310e230b6Smaya
799410e230b6Smayastatic inline void
799510e230b6SmayaGEN8_MI_STORE_REGISTER_MEM_pack(__attribute__((unused)) __gen_user_data *data,
799610e230b6Smaya                                __attribute__((unused)) void * restrict dst,
799710e230b6Smaya                                __attribute__((unused)) const struct GEN8_MI_STORE_REGISTER_MEM * restrict values)
799810e230b6Smaya{
799910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
800010e230b6Smaya
800110e230b6Smaya   dw[0] =
800210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
800310e230b6Smaya      __gen_uint(values->PredicateEnable, 21, 21) |
800410e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
800510e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
800610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
800710e230b6Smaya
800810e230b6Smaya   dw[1] =
800910e230b6Smaya      __gen_offset(values->RegisterAddress, 2, 22);
801010e230b6Smaya
801110e230b6Smaya   const uint64_t v2_address =
801210e230b6Smaya      __gen_combine_address(data, &dw[2], values->MemoryAddress, 0);
801310e230b6Smaya   dw[2] = v2_address;
801410e230b6Smaya   dw[3] = v2_address >> 32;
801510e230b6Smaya}
801610e230b6Smaya
801710e230b6Smaya#define GEN8_MI_STORE_URB_MEM_length           4
801810e230b6Smaya#define GEN8_MI_STORE_URB_MEM_length_bias      2
801910e230b6Smaya#define GEN8_MI_STORE_URB_MEM_header            \
802010e230b6Smaya   .DWordLength                         =      2,  \
802110e230b6Smaya   .MICommandOpcode                     =     45,  \
802210e230b6Smaya   .CommandType                         =      0
802310e230b6Smaya
802410e230b6Smayastruct GEN8_MI_STORE_URB_MEM {
802510e230b6Smaya   uint32_t                             DWordLength;
802610e230b6Smaya   uint32_t                             MICommandOpcode;
802710e230b6Smaya   uint32_t                             CommandType;
802810e230b6Smaya   uint32_t                             URBAddress;
802910e230b6Smaya   __gen_address_type                   MemoryAddress;
803010e230b6Smaya};
803110e230b6Smaya
803210e230b6Smayastatic inline void
803310e230b6SmayaGEN8_MI_STORE_URB_MEM_pack(__attribute__((unused)) __gen_user_data *data,
803410e230b6Smaya                           __attribute__((unused)) void * restrict dst,
803510e230b6Smaya                           __attribute__((unused)) const struct GEN8_MI_STORE_URB_MEM * restrict values)
803610e230b6Smaya{
803710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
803810e230b6Smaya
803910e230b6Smaya   dw[0] =
804010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
804110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
804210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
804310e230b6Smaya
804410e230b6Smaya   dw[1] =
804510e230b6Smaya      __gen_uint(values->URBAddress, 2, 14);
804610e230b6Smaya
804710e230b6Smaya   const uint64_t v2_address =
804810e230b6Smaya      __gen_combine_address(data, &dw[2], values->MemoryAddress, 0);
804910e230b6Smaya   dw[2] = v2_address;
805010e230b6Smaya   dw[3] = v2_address >> 32;
805110e230b6Smaya}
805210e230b6Smaya
805310e230b6Smaya#define GEN8_MI_SUSPEND_FLUSH_length           1
805410e230b6Smaya#define GEN8_MI_SUSPEND_FLUSH_length_bias      1
805510e230b6Smaya#define GEN8_MI_SUSPEND_FLUSH_header            \
805610e230b6Smaya   .MICommandOpcode                     =     11,  \
805710e230b6Smaya   .CommandType                         =      0
805810e230b6Smaya
805910e230b6Smayastruct GEN8_MI_SUSPEND_FLUSH {
806010e230b6Smaya   bool                                 SuspendFlush;
806110e230b6Smaya   uint32_t                             MICommandOpcode;
806210e230b6Smaya   uint32_t                             CommandType;
806310e230b6Smaya};
806410e230b6Smaya
806510e230b6Smayastatic inline void
806610e230b6SmayaGEN8_MI_SUSPEND_FLUSH_pack(__attribute__((unused)) __gen_user_data *data,
806710e230b6Smaya                           __attribute__((unused)) void * restrict dst,
806810e230b6Smaya                           __attribute__((unused)) const struct GEN8_MI_SUSPEND_FLUSH * restrict values)
806910e230b6Smaya{
807010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
807110e230b6Smaya
807210e230b6Smaya   dw[0] =
807310e230b6Smaya      __gen_uint(values->SuspendFlush, 0, 0) |
807410e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
807510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
807610e230b6Smaya}
807710e230b6Smaya
807810e230b6Smaya#define GEN8_MI_TOPOLOGY_FILTER_length         1
807910e230b6Smaya#define GEN8_MI_TOPOLOGY_FILTER_length_bias      1
808010e230b6Smaya#define GEN8_MI_TOPOLOGY_FILTER_header          \
808110e230b6Smaya   .MICommandOpcode                     =     13,  \
808210e230b6Smaya   .CommandType                         =      0
808310e230b6Smaya
808410e230b6Smayastruct GEN8_MI_TOPOLOGY_FILTER {
808510e230b6Smaya   enum GEN8_3D_Prim_Topo_Type          TopologyFilterValue;
808610e230b6Smaya   uint32_t                             MICommandOpcode;
808710e230b6Smaya   uint32_t                             CommandType;
808810e230b6Smaya};
808910e230b6Smaya
809010e230b6Smayastatic inline void
809110e230b6SmayaGEN8_MI_TOPOLOGY_FILTER_pack(__attribute__((unused)) __gen_user_data *data,
809210e230b6Smaya                             __attribute__((unused)) void * restrict dst,
809310e230b6Smaya                             __attribute__((unused)) const struct GEN8_MI_TOPOLOGY_FILTER * restrict values)
809410e230b6Smaya{
809510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
809610e230b6Smaya
809710e230b6Smaya   dw[0] =
809810e230b6Smaya      __gen_uint(values->TopologyFilterValue, 0, 5) |
809910e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
810010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
810110e230b6Smaya}
810210e230b6Smaya
810310e230b6Smaya#define GEN8_MI_URB_ATOMIC_ALLOC_length        1
810410e230b6Smaya#define GEN8_MI_URB_ATOMIC_ALLOC_length_bias      1
810510e230b6Smaya#define GEN8_MI_URB_ATOMIC_ALLOC_header         \
810610e230b6Smaya   .MICommandOpcode                     =      9,  \
810710e230b6Smaya   .CommandType                         =      0
810810e230b6Smaya
810910e230b6Smayastruct GEN8_MI_URB_ATOMIC_ALLOC {
811010e230b6Smaya   uint32_t                             URBAtomicStorageSize;
811110e230b6Smaya   uint32_t                             URBAtomicStorageOffset;
811210e230b6Smaya   uint32_t                             MICommandOpcode;
811310e230b6Smaya   uint32_t                             CommandType;
811410e230b6Smaya};
811510e230b6Smaya
811610e230b6Smayastatic inline void
811710e230b6SmayaGEN8_MI_URB_ATOMIC_ALLOC_pack(__attribute__((unused)) __gen_user_data *data,
811810e230b6Smaya                              __attribute__((unused)) void * restrict dst,
811910e230b6Smaya                              __attribute__((unused)) const struct GEN8_MI_URB_ATOMIC_ALLOC * restrict values)
812010e230b6Smaya{
812110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
812210e230b6Smaya
812310e230b6Smaya   dw[0] =
812410e230b6Smaya      __gen_uint(values->URBAtomicStorageSize, 0, 8) |
812510e230b6Smaya      __gen_uint(values->URBAtomicStorageOffset, 12, 19) |
812610e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
812710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
812810e230b6Smaya}
812910e230b6Smaya
813010e230b6Smaya#define GEN8_MI_URB_CLEAR_length               2
813110e230b6Smaya#define GEN8_MI_URB_CLEAR_length_bias          2
813210e230b6Smaya#define GEN8_MI_URB_CLEAR_header                \
813310e230b6Smaya   .DWordLength                         =      0,  \
813410e230b6Smaya   .MICommandOpcode                     =     25,  \
813510e230b6Smaya   .CommandType                         =      0
813610e230b6Smaya
813710e230b6Smayastruct GEN8_MI_URB_CLEAR {
813810e230b6Smaya   uint32_t                             DWordLength;
813910e230b6Smaya   uint32_t                             MICommandOpcode;
814010e230b6Smaya   uint32_t                             CommandType;
814110e230b6Smaya   uint64_t                             URBAddress;
814210e230b6Smaya   uint32_t                             URBClearLength;
814310e230b6Smaya};
814410e230b6Smaya
814510e230b6Smayastatic inline void
814610e230b6SmayaGEN8_MI_URB_CLEAR_pack(__attribute__((unused)) __gen_user_data *data,
814710e230b6Smaya                       __attribute__((unused)) void * restrict dst,
814810e230b6Smaya                       __attribute__((unused)) const struct GEN8_MI_URB_CLEAR * restrict values)
814910e230b6Smaya{
815010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
815110e230b6Smaya
815210e230b6Smaya   dw[0] =
815310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
815410e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
815510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
815610e230b6Smaya
815710e230b6Smaya   dw[1] =
815810e230b6Smaya      __gen_offset(values->URBAddress, 0, 14) |
815910e230b6Smaya      __gen_uint(values->URBClearLength, 16, 29);
816010e230b6Smaya}
816110e230b6Smaya
816210e230b6Smaya#define GEN8_MI_USER_INTERRUPT_length          1
816310e230b6Smaya#define GEN8_MI_USER_INTERRUPT_length_bias      1
816410e230b6Smaya#define GEN8_MI_USER_INTERRUPT_header           \
816510e230b6Smaya   .MICommandOpcode                     =      2,  \
816610e230b6Smaya   .CommandType                         =      0
816710e230b6Smaya
816810e230b6Smayastruct GEN8_MI_USER_INTERRUPT {
816910e230b6Smaya   uint32_t                             MICommandOpcode;
817010e230b6Smaya   uint32_t                             CommandType;
817110e230b6Smaya};
817210e230b6Smaya
817310e230b6Smayastatic inline void
817410e230b6SmayaGEN8_MI_USER_INTERRUPT_pack(__attribute__((unused)) __gen_user_data *data,
817510e230b6Smaya                            __attribute__((unused)) void * restrict dst,
817610e230b6Smaya                            __attribute__((unused)) const struct GEN8_MI_USER_INTERRUPT * restrict values)
817710e230b6Smaya{
817810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
817910e230b6Smaya
818010e230b6Smaya   dw[0] =
818110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
818210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
818310e230b6Smaya}
818410e230b6Smaya
818510e230b6Smaya#define GEN8_MI_WAIT_FOR_EVENT_length          1
818610e230b6Smaya#define GEN8_MI_WAIT_FOR_EVENT_length_bias      1
818710e230b6Smaya#define GEN8_MI_WAIT_FOR_EVENT_header           \
818810e230b6Smaya   .MICommandOpcode                     =      3,  \
818910e230b6Smaya   .CommandType                         =      0
819010e230b6Smaya
819110e230b6Smayastruct GEN8_MI_WAIT_FOR_EVENT {
819210e230b6Smaya   bool                                 DisplayPipeAScanLineWaitEnable;
819310e230b6Smaya   bool                                 DisplayPlaneAFlipPendingWaitEnable;
819410e230b6Smaya   bool                                 DisplaySpriteAFlipPendingWaitEnable;
819510e230b6Smaya   bool                                 DisplayPipeAVerticalBlankWaitEnable;
819610e230b6Smaya   bool                                 DisplayPipeBScanLineWaitEnable;
819710e230b6Smaya   bool                                 DisplayPlaneBFlipPendingWaitEnable;
819810e230b6Smaya   bool                                 DisplaySpriteBFlipPendingWaitEnable;
819910e230b6Smaya   bool                                 DisplayPipeBVerticalBlankWaitEnable;
820010e230b6Smaya   bool                                 DisplayPipeCScanLineWaitEnable;
820110e230b6Smaya   bool                                 DisplayPlaneCFlipPendingWaitEnable;
820210e230b6Smaya   bool                                 DisplaySpriteCFlipPendingWaitEnable;
820310e230b6Smaya   bool                                 DisplayPipeCVerticalBlankWaitEnable;
820410e230b6Smaya   uint32_t                             MICommandOpcode;
820510e230b6Smaya   uint32_t                             CommandType;
820610e230b6Smaya};
820710e230b6Smaya
820810e230b6Smayastatic inline void
820910e230b6SmayaGEN8_MI_WAIT_FOR_EVENT_pack(__attribute__((unused)) __gen_user_data *data,
821010e230b6Smaya                            __attribute__((unused)) void * restrict dst,
821110e230b6Smaya                            __attribute__((unused)) const struct GEN8_MI_WAIT_FOR_EVENT * restrict values)
821210e230b6Smaya{
821310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
821410e230b6Smaya
821510e230b6Smaya   dw[0] =
821610e230b6Smaya      __gen_uint(values->DisplayPipeAScanLineWaitEnable, 0, 0) |
821710e230b6Smaya      __gen_uint(values->DisplayPlaneAFlipPendingWaitEnable, 1, 1) |
821810e230b6Smaya      __gen_uint(values->DisplaySpriteAFlipPendingWaitEnable, 2, 2) |
821910e230b6Smaya      __gen_uint(values->DisplayPipeAVerticalBlankWaitEnable, 3, 3) |
822010e230b6Smaya      __gen_uint(values->DisplayPipeBScanLineWaitEnable, 8, 8) |
822110e230b6Smaya      __gen_uint(values->DisplayPlaneBFlipPendingWaitEnable, 9, 9) |
822210e230b6Smaya      __gen_uint(values->DisplaySpriteBFlipPendingWaitEnable, 10, 10) |
822310e230b6Smaya      __gen_uint(values->DisplayPipeBVerticalBlankWaitEnable, 11, 11) |
822410e230b6Smaya      __gen_uint(values->DisplayPipeCScanLineWaitEnable, 14, 14) |
822510e230b6Smaya      __gen_uint(values->DisplayPlaneCFlipPendingWaitEnable, 15, 15) |
822610e230b6Smaya      __gen_uint(values->DisplaySpriteCFlipPendingWaitEnable, 20, 20) |
822710e230b6Smaya      __gen_uint(values->DisplayPipeCVerticalBlankWaitEnable, 21, 21) |
822810e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
822910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
823010e230b6Smaya}
823110e230b6Smaya
823210e230b6Smaya#define GEN8_PIPELINE_SELECT_length            1
823310e230b6Smaya#define GEN8_PIPELINE_SELECT_length_bias       1
823410e230b6Smaya#define GEN8_PIPELINE_SELECT_header             \
823510e230b6Smaya   ._3DCommandSubOpcode                 =      4,  \
823610e230b6Smaya   ._3DCommandOpcode                    =      1,  \
823710e230b6Smaya   .CommandSubType                      =      1,  \
823810e230b6Smaya   .CommandType                         =      3
823910e230b6Smaya
824010e230b6Smayastruct GEN8_PIPELINE_SELECT {
824110e230b6Smaya   uint32_t                             PipelineSelection;
824210e230b6Smaya#define _3D                                      0
824310e230b6Smaya#define Media                                    1
824410e230b6Smaya#define GPGPU                                    2
824510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
824610e230b6Smaya   uint32_t                             _3DCommandOpcode;
824710e230b6Smaya   uint32_t                             CommandSubType;
824810e230b6Smaya   uint32_t                             CommandType;
824910e230b6Smaya};
825010e230b6Smaya
825110e230b6Smayastatic inline void
825210e230b6SmayaGEN8_PIPELINE_SELECT_pack(__attribute__((unused)) __gen_user_data *data,
825310e230b6Smaya                          __attribute__((unused)) void * restrict dst,
825410e230b6Smaya                          __attribute__((unused)) const struct GEN8_PIPELINE_SELECT * restrict values)
825510e230b6Smaya{
825610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
825710e230b6Smaya
825810e230b6Smaya   dw[0] =
825910e230b6Smaya      __gen_uint(values->PipelineSelection, 0, 1) |
826010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
826110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
826210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
826310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
826410e230b6Smaya}
826510e230b6Smaya
826610e230b6Smaya#define GEN8_PIPE_CONTROL_length               6
826710e230b6Smaya#define GEN8_PIPE_CONTROL_length_bias          2
826810e230b6Smaya#define GEN8_PIPE_CONTROL_header                \
826910e230b6Smaya   .DWordLength                         =      4,  \
827010e230b6Smaya   ._3DCommandSubOpcode                 =      0,  \
827110e230b6Smaya   ._3DCommandOpcode                    =      2,  \
827210e230b6Smaya   .CommandSubType                      =      3,  \
827310e230b6Smaya   .CommandType                         =      3
827410e230b6Smaya
827510e230b6Smayastruct GEN8_PIPE_CONTROL {
827610e230b6Smaya   uint32_t                             DWordLength;
827710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
827810e230b6Smaya   uint32_t                             _3DCommandOpcode;
827910e230b6Smaya   uint32_t                             CommandSubType;
828010e230b6Smaya   uint32_t                             CommandType;
828110e230b6Smaya   bool                                 DepthCacheFlushEnable;
828210e230b6Smaya   bool                                 StallAtPixelScoreboard;
828310e230b6Smaya   bool                                 StateCacheInvalidationEnable;
828410e230b6Smaya   bool                                 ConstantCacheInvalidationEnable;
828510e230b6Smaya   bool                                 VFCacheInvalidationEnable;
828610e230b6Smaya   bool                                 DCFlushEnable;
828710e230b6Smaya   bool                                 PipeControlFlushEnable;
828810e230b6Smaya   bool                                 NotifyEnable;
828910e230b6Smaya   bool                                 IndirectStatePointersDisable;
829010e230b6Smaya   bool                                 TextureCacheInvalidationEnable;
829110e230b6Smaya   bool                                 InstructionCacheInvalidateEnable;
829210e230b6Smaya   bool                                 RenderTargetCacheFlushEnable;
829310e230b6Smaya   bool                                 DepthStallEnable;
829410e230b6Smaya   uint32_t                             PostSyncOperation;
829510e230b6Smaya#define NoWrite                                  0
829610e230b6Smaya#define WriteImmediateData                       1
829710e230b6Smaya#define WritePSDepthCount                        2
829810e230b6Smaya#define WriteTimestamp                           3
829910e230b6Smaya   bool                                 GenericMediaStateClear;
830010e230b6Smaya   bool                                 TLBInvalidate;
830110e230b6Smaya   bool                                 GlobalSnapshotCountReset;
830210e230b6Smaya   bool                                 CommandStreamerStallEnable;
830310e230b6Smaya   uint32_t                             StoreDataIndex;
830410e230b6Smaya   uint32_t                             LRIPostSyncOperation;
830510e230b6Smaya#define NoLRIOperation                           0
830610e230b6Smaya#define MMIOWriteImmediateData                   1
830710e230b6Smaya   uint32_t                             DestinationAddressType;
830810e230b6Smaya#define DAT_PPGTT                                0
830910e230b6Smaya#define DAT_GGTT                                 1
831010e230b6Smaya   __gen_address_type                   Address;
831110e230b6Smaya   uint64_t                             ImmediateData;
831210e230b6Smaya};
831310e230b6Smaya
831410e230b6Smayastatic inline void
831510e230b6SmayaGEN8_PIPE_CONTROL_pack(__attribute__((unused)) __gen_user_data *data,
831610e230b6Smaya                       __attribute__((unused)) void * restrict dst,
831710e230b6Smaya                       __attribute__((unused)) const struct GEN8_PIPE_CONTROL * restrict values)
831810e230b6Smaya{
831910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
832010e230b6Smaya
832110e230b6Smaya   dw[0] =
832210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
832310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
832410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
832510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
832610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
832710e230b6Smaya
832810e230b6Smaya   dw[1] =
832910e230b6Smaya      __gen_uint(values->DepthCacheFlushEnable, 0, 0) |
833010e230b6Smaya      __gen_uint(values->StallAtPixelScoreboard, 1, 1) |
833110e230b6Smaya      __gen_uint(values->StateCacheInvalidationEnable, 2, 2) |
833210e230b6Smaya      __gen_uint(values->ConstantCacheInvalidationEnable, 3, 3) |
833310e230b6Smaya      __gen_uint(values->VFCacheInvalidationEnable, 4, 4) |
833410e230b6Smaya      __gen_uint(values->DCFlushEnable, 5, 5) |
833510e230b6Smaya      __gen_uint(values->PipeControlFlushEnable, 7, 7) |
833610e230b6Smaya      __gen_uint(values->NotifyEnable, 8, 8) |
833710e230b6Smaya      __gen_uint(values->IndirectStatePointersDisable, 9, 9) |
833810e230b6Smaya      __gen_uint(values->TextureCacheInvalidationEnable, 10, 10) |
833910e230b6Smaya      __gen_uint(values->InstructionCacheInvalidateEnable, 11, 11) |
834010e230b6Smaya      __gen_uint(values->RenderTargetCacheFlushEnable, 12, 12) |
834110e230b6Smaya      __gen_uint(values->DepthStallEnable, 13, 13) |
834210e230b6Smaya      __gen_uint(values->PostSyncOperation, 14, 15) |
834310e230b6Smaya      __gen_uint(values->GenericMediaStateClear, 16, 16) |
834410e230b6Smaya      __gen_uint(values->TLBInvalidate, 18, 18) |
834510e230b6Smaya      __gen_uint(values->GlobalSnapshotCountReset, 19, 19) |
834610e230b6Smaya      __gen_uint(values->CommandStreamerStallEnable, 20, 20) |
834710e230b6Smaya      __gen_uint(values->StoreDataIndex, 21, 21) |
834810e230b6Smaya      __gen_uint(values->LRIPostSyncOperation, 23, 23) |
834910e230b6Smaya      __gen_uint(values->DestinationAddressType, 24, 24);
835010e230b6Smaya
835110e230b6Smaya   const uint64_t v2_address =
835210e230b6Smaya      __gen_combine_address(data, &dw[2], values->Address, 0);
835310e230b6Smaya   dw[2] = v2_address;
835410e230b6Smaya   dw[3] = v2_address >> 32;
835510e230b6Smaya
835610e230b6Smaya   const uint64_t v4 =
835710e230b6Smaya      __gen_uint(values->ImmediateData, 0, 63);
835810e230b6Smaya   dw[4] = v4;
835910e230b6Smaya   dw[5] = v4 >> 32;
836010e230b6Smaya}
836110e230b6Smaya
836210e230b6Smaya#define GEN8_STATE_BASE_ADDRESS_length        16
836310e230b6Smaya#define GEN8_STATE_BASE_ADDRESS_length_bias      2
836410e230b6Smaya#define GEN8_STATE_BASE_ADDRESS_header          \
836510e230b6Smaya   .DWordLength                         =     14,  \
836610e230b6Smaya   ._3DCommandSubOpcode                 =      1,  \
836710e230b6Smaya   ._3DCommandOpcode                    =      1,  \
836810e230b6Smaya   .CommandSubType                      =      0,  \
836910e230b6Smaya   .CommandType                         =      3
837010e230b6Smaya
837110e230b6Smayastruct GEN8_STATE_BASE_ADDRESS {
837210e230b6Smaya   uint32_t                             DWordLength;
837310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
837410e230b6Smaya   uint32_t                             _3DCommandOpcode;
837510e230b6Smaya   uint32_t                             CommandSubType;
837610e230b6Smaya   uint32_t                             CommandType;
837710e230b6Smaya   bool                                 GeneralStateBaseAddressModifyEnable;
837810e230b6Smaya   uint32_t                             GeneralStateMOCS;
837910e230b6Smaya   __gen_address_type                   GeneralStateBaseAddress;
838010e230b6Smaya   uint32_t                             StatelessDataPortAccessMOCS;
838110e230b6Smaya   bool                                 SurfaceStateBaseAddressModifyEnable;
838210e230b6Smaya   uint32_t                             SurfaceStateMOCS;
838310e230b6Smaya   __gen_address_type                   SurfaceStateBaseAddress;
838410e230b6Smaya   bool                                 DynamicStateBaseAddressModifyEnable;
838510e230b6Smaya   uint32_t                             DynamicStateMOCS;
838610e230b6Smaya   __gen_address_type                   DynamicStateBaseAddress;
838710e230b6Smaya   bool                                 IndirectObjectBaseAddressModifyEnable;
838810e230b6Smaya   uint32_t                             IndirectObjectMOCS;
838910e230b6Smaya   __gen_address_type                   IndirectObjectBaseAddress;
839010e230b6Smaya   bool                                 InstructionBaseAddressModifyEnable;
839110e230b6Smaya   uint32_t                             InstructionMOCS;
839210e230b6Smaya   __gen_address_type                   InstructionBaseAddress;
839310e230b6Smaya   bool                                 GeneralStateBufferSizeModifyEnable;
839410e230b6Smaya   uint32_t                             GeneralStateBufferSize;
839510e230b6Smaya   bool                                 DynamicStateBufferSizeModifyEnable;
839610e230b6Smaya   uint32_t                             DynamicStateBufferSize;
839710e230b6Smaya   bool                                 IndirectObjectBufferSizeModifyEnable;
839810e230b6Smaya   uint32_t                             IndirectObjectBufferSize;
839910e230b6Smaya   bool                                 InstructionBuffersizeModifyEnable;
840010e230b6Smaya   uint32_t                             InstructionBufferSize;
840110e230b6Smaya};
840210e230b6Smaya
840310e230b6Smayastatic inline void
840410e230b6SmayaGEN8_STATE_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data,
840510e230b6Smaya                             __attribute__((unused)) void * restrict dst,
840610e230b6Smaya                             __attribute__((unused)) const struct GEN8_STATE_BASE_ADDRESS * restrict values)
840710e230b6Smaya{
840810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
840910e230b6Smaya
841010e230b6Smaya   dw[0] =
841110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
841210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
841310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
841410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
841510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
841610e230b6Smaya
841710e230b6Smaya   const uint64_t v1 =
841810e230b6Smaya      __gen_uint(values->GeneralStateBaseAddressModifyEnable, 0, 0) |
841910e230b6Smaya      __gen_uint(values->GeneralStateMOCS, 4, 10);
842010e230b6Smaya   const uint64_t v1_address =
842110e230b6Smaya      __gen_combine_address(data, &dw[1], values->GeneralStateBaseAddress, v1);
842210e230b6Smaya   dw[1] = v1_address;
842310e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
842410e230b6Smaya
842510e230b6Smaya   dw[3] =
842610e230b6Smaya      __gen_uint(values->StatelessDataPortAccessMOCS, 16, 22);
842710e230b6Smaya
842810e230b6Smaya   const uint64_t v4 =
842910e230b6Smaya      __gen_uint(values->SurfaceStateBaseAddressModifyEnable, 0, 0) |
843010e230b6Smaya      __gen_uint(values->SurfaceStateMOCS, 4, 10);
843110e230b6Smaya   const uint64_t v4_address =
843210e230b6Smaya      __gen_combine_address(data, &dw[4], values->SurfaceStateBaseAddress, v4);
843310e230b6Smaya   dw[4] = v4_address;
843410e230b6Smaya   dw[5] = (v4_address >> 32) | (v4 >> 32);
843510e230b6Smaya
843610e230b6Smaya   const uint64_t v6 =
843710e230b6Smaya      __gen_uint(values->DynamicStateBaseAddressModifyEnable, 0, 0) |
843810e230b6Smaya      __gen_uint(values->DynamicStateMOCS, 4, 10);
843910e230b6Smaya   const uint64_t v6_address =
844010e230b6Smaya      __gen_combine_address(data, &dw[6], values->DynamicStateBaseAddress, v6);
844110e230b6Smaya   dw[6] = v6_address;
844210e230b6Smaya   dw[7] = (v6_address >> 32) | (v6 >> 32);
844310e230b6Smaya
844410e230b6Smaya   const uint64_t v8 =
844510e230b6Smaya      __gen_uint(values->IndirectObjectBaseAddressModifyEnable, 0, 0) |
844610e230b6Smaya      __gen_uint(values->IndirectObjectMOCS, 4, 10);
844710e230b6Smaya   const uint64_t v8_address =
844810e230b6Smaya      __gen_combine_address(data, &dw[8], values->IndirectObjectBaseAddress, v8);
844910e230b6Smaya   dw[8] = v8_address;
845010e230b6Smaya   dw[9] = (v8_address >> 32) | (v8 >> 32);
845110e230b6Smaya
845210e230b6Smaya   const uint64_t v10 =
845310e230b6Smaya      __gen_uint(values->InstructionBaseAddressModifyEnable, 0, 0) |
845410e230b6Smaya      __gen_uint(values->InstructionMOCS, 4, 10);
845510e230b6Smaya   const uint64_t v10_address =
845610e230b6Smaya      __gen_combine_address(data, &dw[10], values->InstructionBaseAddress, v10);
845710e230b6Smaya   dw[10] = v10_address;
845810e230b6Smaya   dw[11] = (v10_address >> 32) | (v10 >> 32);
845910e230b6Smaya
846010e230b6Smaya   dw[12] =
846110e230b6Smaya      __gen_uint(values->GeneralStateBufferSizeModifyEnable, 0, 0) |
846210e230b6Smaya      __gen_uint(values->GeneralStateBufferSize, 12, 31);
846310e230b6Smaya
846410e230b6Smaya   dw[13] =
846510e230b6Smaya      __gen_uint(values->DynamicStateBufferSizeModifyEnable, 0, 0) |
846610e230b6Smaya      __gen_uint(values->DynamicStateBufferSize, 12, 31);
846710e230b6Smaya
846810e230b6Smaya   dw[14] =
846910e230b6Smaya      __gen_uint(values->IndirectObjectBufferSizeModifyEnable, 0, 0) |
847010e230b6Smaya      __gen_uint(values->IndirectObjectBufferSize, 12, 31);
847110e230b6Smaya
847210e230b6Smaya   dw[15] =
847310e230b6Smaya      __gen_uint(values->InstructionBuffersizeModifyEnable, 0, 0) |
847410e230b6Smaya      __gen_uint(values->InstructionBufferSize, 12, 31);
847510e230b6Smaya}
847610e230b6Smaya
847710e230b6Smaya#define GEN8_STATE_PREFETCH_length             2
847810e230b6Smaya#define GEN8_STATE_PREFETCH_length_bias        2
847910e230b6Smaya#define GEN8_STATE_PREFETCH_header              \
848010e230b6Smaya   .DWordLength                         =      0,  \
848110e230b6Smaya   ._3DCommandSubOpcode                 =      3,  \
848210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
848310e230b6Smaya   .CommandSubType                      =      0,  \
848410e230b6Smaya   .CommandType                         =      3
848510e230b6Smaya
848610e230b6Smayastruct GEN8_STATE_PREFETCH {
848710e230b6Smaya   uint32_t                             DWordLength;
848810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
848910e230b6Smaya   uint32_t                             _3DCommandOpcode;
849010e230b6Smaya   uint32_t                             CommandSubType;
849110e230b6Smaya   uint32_t                             CommandType;
849210e230b6Smaya   uint32_t                             PrefetchCount;
849310e230b6Smaya   __gen_address_type                   PrefetchPointer;
849410e230b6Smaya};
849510e230b6Smaya
849610e230b6Smayastatic inline void
849710e230b6SmayaGEN8_STATE_PREFETCH_pack(__attribute__((unused)) __gen_user_data *data,
849810e230b6Smaya                         __attribute__((unused)) void * restrict dst,
849910e230b6Smaya                         __attribute__((unused)) const struct GEN8_STATE_PREFETCH * restrict values)
850010e230b6Smaya{
850110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
850210e230b6Smaya
850310e230b6Smaya   dw[0] =
850410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
850510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
850610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
850710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
850810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
850910e230b6Smaya
851010e230b6Smaya   const uint32_t v1 =
851110e230b6Smaya      __gen_uint(values->PrefetchCount, 0, 2);
851210e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->PrefetchPointer, v1);
851310e230b6Smaya}
851410e230b6Smaya
851510e230b6Smaya#define GEN8_STATE_SIP_length                  3
851610e230b6Smaya#define GEN8_STATE_SIP_length_bias             2
851710e230b6Smaya#define GEN8_STATE_SIP_header                   \
851810e230b6Smaya   .DWordLength                         =      1,  \
851910e230b6Smaya   ._3DCommandSubOpcode                 =      2,  \
852010e230b6Smaya   ._3DCommandOpcode                    =      1,  \
852110e230b6Smaya   .CommandSubType                      =      0,  \
852210e230b6Smaya   .CommandType                         =      3
852310e230b6Smaya
852410e230b6Smayastruct GEN8_STATE_SIP {
852510e230b6Smaya   uint32_t                             DWordLength;
852610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
852710e230b6Smaya   uint32_t                             _3DCommandOpcode;
852810e230b6Smaya   uint32_t                             CommandSubType;
852910e230b6Smaya   uint32_t                             CommandType;
853010e230b6Smaya   uint64_t                             SystemInstructionPointer;
853110e230b6Smaya};
853210e230b6Smaya
853310e230b6Smayastatic inline void
853410e230b6SmayaGEN8_STATE_SIP_pack(__attribute__((unused)) __gen_user_data *data,
853510e230b6Smaya                    __attribute__((unused)) void * restrict dst,
853610e230b6Smaya                    __attribute__((unused)) const struct GEN8_STATE_SIP * restrict values)
853710e230b6Smaya{
853810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
853910e230b6Smaya
854010e230b6Smaya   dw[0] =
854110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
854210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
854310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
854410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
854510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
854610e230b6Smaya
854710e230b6Smaya   const uint64_t v1 =
854810e230b6Smaya      __gen_offset(values->SystemInstructionPointer, 4, 63);
854910e230b6Smaya   dw[1] = v1;
855010e230b6Smaya   dw[2] = v1 >> 32;
855110e230b6Smaya}
855210e230b6Smaya
855310e230b6Smaya#define GEN8_SWTESS_BASE_ADDRESS_length        2
855410e230b6Smaya#define GEN8_SWTESS_BASE_ADDRESS_length_bias      2
855510e230b6Smaya#define GEN8_SWTESS_BASE_ADDRESS_header         \
855610e230b6Smaya   .DWordLength                         =      0,  \
855710e230b6Smaya   ._3DCommandSubOpcode                 =      3,  \
855810e230b6Smaya   ._3DCommandOpcode                    =      1,  \
855910e230b6Smaya   .CommandSubType                      =      0,  \
856010e230b6Smaya   .CommandType                         =      3
856110e230b6Smaya
856210e230b6Smayastruct GEN8_SWTESS_BASE_ADDRESS {
856310e230b6Smaya   uint32_t                             DWordLength;
856410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
856510e230b6Smaya   uint32_t                             _3DCommandOpcode;
856610e230b6Smaya   uint32_t                             CommandSubType;
856710e230b6Smaya   uint32_t                             CommandType;
856810e230b6Smaya   uint32_t                             SWTessellationMOCS;
856910e230b6Smaya   __gen_address_type                   SWTessellationBaseAddress;
857010e230b6Smaya};
857110e230b6Smaya
857210e230b6Smayastatic inline void
857310e230b6SmayaGEN8_SWTESS_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data,
857410e230b6Smaya                              __attribute__((unused)) void * restrict dst,
857510e230b6Smaya                              __attribute__((unused)) const struct GEN8_SWTESS_BASE_ADDRESS * restrict values)
857610e230b6Smaya{
857710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
857810e230b6Smaya
857910e230b6Smaya   dw[0] =
858010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
858110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
858210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
858310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
858410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
858510e230b6Smaya
858610e230b6Smaya   const uint64_t v1 =
858710e230b6Smaya      __gen_uint(values->SWTessellationMOCS, 8, 11);
858810e230b6Smaya   const uint64_t v1_address =
858910e230b6Smaya      __gen_combine_address(data, &dw[1], values->SWTessellationBaseAddress, v1);
859010e230b6Smaya   dw[1] = v1_address;
859110e230b6Smaya   dw[2] = (v1_address >> 32) | (v1 >> 32);
859210e230b6Smaya}
859310e230b6Smaya
859410e230b6Smaya#define GEN8_ACTHD_UDW_num                0x205c
859510e230b6Smaya#define GEN8_ACTHD_UDW_length                  1
859610e230b6Smayastruct GEN8_ACTHD_UDW {
859710e230b6Smaya   uint32_t                             HeadPointerUpperDWORD;
859810e230b6Smaya};
859910e230b6Smaya
860010e230b6Smayastatic inline void
860110e230b6SmayaGEN8_ACTHD_UDW_pack(__attribute__((unused)) __gen_user_data *data,
860210e230b6Smaya                    __attribute__((unused)) void * restrict dst,
860310e230b6Smaya                    __attribute__((unused)) const struct GEN8_ACTHD_UDW * restrict values)
860410e230b6Smaya{
860510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
860610e230b6Smaya
860710e230b6Smaya   dw[0] =
860810e230b6Smaya      __gen_uint(values->HeadPointerUpperDWORD, 0, 15);
860910e230b6Smaya}
861010e230b6Smaya
861110e230b6Smaya#define GEN8_BCS_ACTHD_UDW_num            0x2205c
861210e230b6Smaya#define GEN8_BCS_ACTHD_UDW_length              1
861310e230b6Smayastruct GEN8_BCS_ACTHD_UDW {
861410e230b6Smaya   uint32_t                             HeadPointerUpperDWORD;
861510e230b6Smaya};
861610e230b6Smaya
861710e230b6Smayastatic inline void
861810e230b6SmayaGEN8_BCS_ACTHD_UDW_pack(__attribute__((unused)) __gen_user_data *data,
861910e230b6Smaya                        __attribute__((unused)) void * restrict dst,
862010e230b6Smaya                        __attribute__((unused)) const struct GEN8_BCS_ACTHD_UDW * restrict values)
862110e230b6Smaya{
862210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
862310e230b6Smaya
862410e230b6Smaya   dw[0] =
862510e230b6Smaya      __gen_uint(values->HeadPointerUpperDWORD, 0, 15);
862610e230b6Smaya}
862710e230b6Smaya
862810e230b6Smaya#define GEN8_BCS_INSTDONE_num             0x2206c
862910e230b6Smaya#define GEN8_BCS_INSTDONE_length               1
863010e230b6Smayastruct GEN8_BCS_INSTDONE {
863110e230b6Smaya   bool                                 RingEnable;
863210e230b6Smaya   bool                                 BlitterIDLE;
863310e230b6Smaya   bool                                 GABIDLE;
863410e230b6Smaya   bool                                 BCSDone;
863510e230b6Smaya};
863610e230b6Smaya
863710e230b6Smayastatic inline void
863810e230b6SmayaGEN8_BCS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
863910e230b6Smaya                       __attribute__((unused)) void * restrict dst,
864010e230b6Smaya                       __attribute__((unused)) const struct GEN8_BCS_INSTDONE * restrict values)
864110e230b6Smaya{
864210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
864310e230b6Smaya
864410e230b6Smaya   dw[0] =
864510e230b6Smaya      __gen_uint(values->RingEnable, 0, 0) |
864610e230b6Smaya      __gen_uint(values->BlitterIDLE, 1, 1) |
864710e230b6Smaya      __gen_uint(values->GABIDLE, 2, 2) |
864810e230b6Smaya      __gen_uint(values->BCSDone, 3, 3);
864910e230b6Smaya}
865010e230b6Smaya
865110e230b6Smaya#define GEN8_BCS_RING_BUFFER_CTL_num      0x2203c
865210e230b6Smaya#define GEN8_BCS_RING_BUFFER_CTL_length        1
865310e230b6Smayastruct GEN8_BCS_RING_BUFFER_CTL {
865410e230b6Smaya   bool                                 RingBufferEnable;
865510e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
865610e230b6Smaya#define MI_AUTOREPORT_OFF                        0
865710e230b6Smaya#define MI_AUTOREPORT_64KB                       1
865810e230b6Smaya#define MI_AUTOREPORT_4KB                        2
865910e230b6Smaya#define MI_AUTOREPORT_128KB                      3
866010e230b6Smaya   bool                                 DisableRegisterAccesses;
866110e230b6Smaya   bool                                 SemaphoreWait;
866210e230b6Smaya   bool                                 RBWait;
866310e230b6Smaya   uint32_t                             BufferLengthinpages1;
866410e230b6Smaya};
866510e230b6Smaya
866610e230b6Smayastatic inline void
866710e230b6SmayaGEN8_BCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
866810e230b6Smaya                              __attribute__((unused)) void * restrict dst,
866910e230b6Smaya                              __attribute__((unused)) const struct GEN8_BCS_RING_BUFFER_CTL * restrict values)
867010e230b6Smaya{
867110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
867210e230b6Smaya
867310e230b6Smaya   dw[0] =
867410e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
867510e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
867610e230b6Smaya      __gen_uint(values->DisableRegisterAccesses, 8, 8) |
867710e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
867810e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
867910e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
868010e230b6Smaya}
868110e230b6Smaya
868210e230b6Smaya#define GEN8_CACHE_MODE_1_num             0x7004
868310e230b6Smaya#define GEN8_CACHE_MODE_1_length               1
868410e230b6Smayastruct GEN8_CACHE_MODE_1 {
868510e230b6Smaya   bool                                 RCZReadafterexpansioncontrolfix2;
868610e230b6Smaya   bool                                 DepthReadHitWriteOnlyOptimizationDisable;
868710e230b6Smaya   bool                                 MCSCacheDisable;
868810e230b6Smaya   bool                                 _4X4RCPFESTCOptimizationDisable;
868910e230b6Smaya   uint32_t                             SamplerCacheSetXORselection;
869010e230b6Smaya   uint32_t                             NPPMAFixEnable;
869110e230b6Smaya   uint32_t                             HIZEvictionPolicy;
869210e230b6Smaya   uint32_t                             NPEarlyZFailsDisable;
869310e230b6Smaya   uint32_t                             MSCResolveOptimizationDisable;
869410e230b6Smaya   bool                                 RCZReadafterexpansioncontrolfix2Mask;
869510e230b6Smaya   bool                                 DepthReadHitWriteOnlyOptimizationDisableMask;
869610e230b6Smaya   bool                                 MCSCacheDisableMask;
869710e230b6Smaya   bool                                 _4X4RCPFESTCOptimizationDisableMask;
869810e230b6Smaya   uint32_t                             SamplerCacheSetXORselectionMask;
869910e230b6Smaya   uint32_t                             NPPMAFixEnableMask;
870010e230b6Smaya   uint32_t                             HIZEvictionPolicyMask;
870110e230b6Smaya   uint32_t                             NPEarlyZFailsDisableMask;
870210e230b6Smaya   uint32_t                             MSCResolveOptimizationDisableMask;
870310e230b6Smaya};
870410e230b6Smaya
870510e230b6Smayastatic inline void
870610e230b6SmayaGEN8_CACHE_MODE_1_pack(__attribute__((unused)) __gen_user_data *data,
870710e230b6Smaya                       __attribute__((unused)) void * restrict dst,
870810e230b6Smaya                       __attribute__((unused)) const struct GEN8_CACHE_MODE_1 * restrict values)
870910e230b6Smaya{
871010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
871110e230b6Smaya
871210e230b6Smaya   dw[0] =
871310e230b6Smaya      __gen_uint(values->RCZReadafterexpansioncontrolfix2, 2, 2) |
871410e230b6Smaya      __gen_uint(values->DepthReadHitWriteOnlyOptimizationDisable, 3, 3) |
871510e230b6Smaya      __gen_uint(values->MCSCacheDisable, 5, 5) |
871610e230b6Smaya      __gen_uint(values->_4X4RCPFESTCOptimizationDisable, 6, 6) |
871710e230b6Smaya      __gen_uint(values->SamplerCacheSetXORselection, 7, 8) |
871810e230b6Smaya      __gen_uint(values->NPPMAFixEnable, 11, 11) |
871910e230b6Smaya      __gen_uint(values->HIZEvictionPolicy, 12, 12) |
872010e230b6Smaya      __gen_uint(values->NPEarlyZFailsDisable, 13, 13) |
872110e230b6Smaya      __gen_uint(values->MSCResolveOptimizationDisable, 14, 14) |
872210e230b6Smaya      __gen_uint(values->RCZReadafterexpansioncontrolfix2Mask, 18, 18) |
872310e230b6Smaya      __gen_uint(values->DepthReadHitWriteOnlyOptimizationDisableMask, 19, 19) |
872410e230b6Smaya      __gen_uint(values->MCSCacheDisableMask, 21, 21) |
872510e230b6Smaya      __gen_uint(values->_4X4RCPFESTCOptimizationDisableMask, 22, 22) |
872610e230b6Smaya      __gen_uint(values->SamplerCacheSetXORselectionMask, 23, 24) |
872710e230b6Smaya      __gen_uint(values->NPPMAFixEnableMask, 27, 27) |
872810e230b6Smaya      __gen_uint(values->HIZEvictionPolicyMask, 28, 28) |
872910e230b6Smaya      __gen_uint(values->NPEarlyZFailsDisableMask, 29, 29) |
873010e230b6Smaya      __gen_uint(values->MSCResolveOptimizationDisableMask, 30, 30);
873110e230b6Smaya}
873210e230b6Smaya
873310e230b6Smaya#define GEN8_CL_INVOCATION_COUNT_num      0x2338
873410e230b6Smaya#define GEN8_CL_INVOCATION_COUNT_length        2
873510e230b6Smayastruct GEN8_CL_INVOCATION_COUNT {
873610e230b6Smaya   uint64_t                             CLInvocationCountReport;
873710e230b6Smaya};
873810e230b6Smaya
873910e230b6Smayastatic inline void
874010e230b6SmayaGEN8_CL_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
874110e230b6Smaya                              __attribute__((unused)) void * restrict dst,
874210e230b6Smaya                              __attribute__((unused)) const struct GEN8_CL_INVOCATION_COUNT * restrict values)
874310e230b6Smaya{
874410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
874510e230b6Smaya
874610e230b6Smaya   const uint64_t v0 =
874710e230b6Smaya      __gen_uint(values->CLInvocationCountReport, 0, 63);
874810e230b6Smaya   dw[0] = v0;
874910e230b6Smaya   dw[1] = v0 >> 32;
875010e230b6Smaya}
875110e230b6Smaya
875210e230b6Smaya#define GEN8_CL_PRIMITIVES_COUNT_num      0x2340
875310e230b6Smaya#define GEN8_CL_PRIMITIVES_COUNT_length        2
875410e230b6Smayastruct GEN8_CL_PRIMITIVES_COUNT {
875510e230b6Smaya   uint64_t                             CLPrimitivesCountReport;
875610e230b6Smaya};
875710e230b6Smaya
875810e230b6Smayastatic inline void
875910e230b6SmayaGEN8_CL_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
876010e230b6Smaya                              __attribute__((unused)) void * restrict dst,
876110e230b6Smaya                              __attribute__((unused)) const struct GEN8_CL_PRIMITIVES_COUNT * restrict values)
876210e230b6Smaya{
876310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
876410e230b6Smaya
876510e230b6Smaya   const uint64_t v0 =
876610e230b6Smaya      __gen_uint(values->CLPrimitivesCountReport, 0, 63);
876710e230b6Smaya   dw[0] = v0;
876810e230b6Smaya   dw[1] = v0 >> 32;
876910e230b6Smaya}
877010e230b6Smaya
877110e230b6Smaya#define GEN8_CS_INVOCATION_COUNT_num      0x2290
877210e230b6Smaya#define GEN8_CS_INVOCATION_COUNT_length        2
877310e230b6Smayastruct GEN8_CS_INVOCATION_COUNT {
877410e230b6Smaya   uint64_t                             CSInvocationCountReport;
877510e230b6Smaya};
877610e230b6Smaya
877710e230b6Smayastatic inline void
877810e230b6SmayaGEN8_CS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
877910e230b6Smaya                              __attribute__((unused)) void * restrict dst,
878010e230b6Smaya                              __attribute__((unused)) const struct GEN8_CS_INVOCATION_COUNT * restrict values)
878110e230b6Smaya{
878210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
878310e230b6Smaya
878410e230b6Smaya   const uint64_t v0 =
878510e230b6Smaya      __gen_uint(values->CSInvocationCountReport, 0, 63);
878610e230b6Smaya   dw[0] = v0;
878710e230b6Smaya   dw[1] = v0 >> 32;
878810e230b6Smaya}
878910e230b6Smaya
879010e230b6Smaya#define GEN8_DS_INVOCATION_COUNT_num      0x2308
879110e230b6Smaya#define GEN8_DS_INVOCATION_COUNT_length        2
879210e230b6Smayastruct GEN8_DS_INVOCATION_COUNT {
879310e230b6Smaya   uint64_t                             DSInvocationCountReport;
879410e230b6Smaya};
879510e230b6Smaya
879610e230b6Smayastatic inline void
879710e230b6SmayaGEN8_DS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
879810e230b6Smaya                              __attribute__((unused)) void * restrict dst,
879910e230b6Smaya                              __attribute__((unused)) const struct GEN8_DS_INVOCATION_COUNT * restrict values)
880010e230b6Smaya{
880110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
880210e230b6Smaya
880310e230b6Smaya   const uint64_t v0 =
880410e230b6Smaya      __gen_uint(values->DSInvocationCountReport, 0, 63);
880510e230b6Smaya   dw[0] = v0;
880610e230b6Smaya   dw[1] = v0 >> 32;
880710e230b6Smaya}
880810e230b6Smaya
880910e230b6Smaya#define GEN8_FAULT_REG_num                0x4094
881010e230b6Smaya#define GEN8_FAULT_REG_length                  1
881110e230b6Smayastruct GEN8_FAULT_REG {
881210e230b6Smaya   bool                                 ValidBit;
881310e230b6Smaya   uint32_t                             FaultType;
881410e230b6Smaya#define InvalidPTEFault                          0
881510e230b6Smaya#define InvalidPDEFault                          1
881610e230b6Smaya#define InvalidPDPEFault                         2
881710e230b6Smaya#define InvalidPML4EFault                        3
881810e230b6Smaya   uint32_t                             SRCIDofFault;
881910e230b6Smaya   uint32_t                             GTTSEL;
882010e230b6Smaya#define PPGTT                                    0
882110e230b6Smaya#define GGTT                                     1
882210e230b6Smaya   uint32_t                             EngineID;
882310e230b6Smaya#define GFX                                      0
882410e230b6Smaya#define MFX0                                     1
882510e230b6Smaya#define MFX1                                     2
882610e230b6Smaya#define VEBX                                     3
882710e230b6Smaya#define BLT                                      4
882810e230b6Smaya#define GUC                                      5
882910e230b6Smaya};
883010e230b6Smaya
883110e230b6Smayastatic inline void
883210e230b6SmayaGEN8_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data,
883310e230b6Smaya                    __attribute__((unused)) void * restrict dst,
883410e230b6Smaya                    __attribute__((unused)) const struct GEN8_FAULT_REG * restrict values)
883510e230b6Smaya{
883610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
883710e230b6Smaya
883810e230b6Smaya   dw[0] =
883910e230b6Smaya      __gen_uint(values->ValidBit, 0, 0) |
884010e230b6Smaya      __gen_uint(values->FaultType, 1, 2) |
884110e230b6Smaya      __gen_uint(values->SRCIDofFault, 3, 10) |
884210e230b6Smaya      __gen_uint(values->GTTSEL, 11, 11) |
884310e230b6Smaya      __gen_uint(values->EngineID, 12, 14);
884410e230b6Smaya}
884510e230b6Smaya
884610e230b6Smaya#define GEN8_GFX_ARB_ERROR_RPT_num        0x40a0
884710e230b6Smaya#define GEN8_GFX_ARB_ERROR_RPT_length          1
884810e230b6Smayastruct GEN8_GFX_ARB_ERROR_RPT {
884910e230b6Smaya   bool                                 TLBPageFaultError;
885010e230b6Smaya   bool                                 RSTRMPAVPReadInvalid;
885110e230b6Smaya   bool                                 InvalidPageDirectoryEntryError;
885210e230b6Smaya   bool                                 ROSTRMPAVPInvalidPhysicalAddress;
885310e230b6Smaya   bool                                 TLBPageVTDTranslationError;
885410e230b6Smaya   bool                                 WRDPPAVPInvalid;
885510e230b6Smaya   bool                                 PageDirectoryEntryVTDTranslationError;
885610e230b6Smaya   bool                                 UnloadedPDError;
885710e230b6Smaya   bool                                 GuCVTdtranslationPageFault2ndlevelUndefineddoorbell;
885810e230b6Smaya   bool                                 NonWBmemorytypeforAdvancedContext;
885910e230b6Smaya   bool                                 PASIDNotEnabled;
886010e230b6Smaya   bool                                 PASIDBoundaryViolation;
886110e230b6Smaya   bool                                 PASIDNotValid;
886210e230b6Smaya   bool                                 PASIDWasZeroForUntranslatedRequest;
886310e230b6Smaya   bool                                 ContextWasNotMarkedAsPresentWhenDoingDMA;
886410e230b6Smaya};
886510e230b6Smaya
886610e230b6Smayastatic inline void
886710e230b6SmayaGEN8_GFX_ARB_ERROR_RPT_pack(__attribute__((unused)) __gen_user_data *data,
886810e230b6Smaya                            __attribute__((unused)) void * restrict dst,
886910e230b6Smaya                            __attribute__((unused)) const struct GEN8_GFX_ARB_ERROR_RPT * restrict values)
887010e230b6Smaya{
887110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
887210e230b6Smaya
887310e230b6Smaya   dw[0] =
887410e230b6Smaya      __gen_uint(values->TLBPageFaultError, 0, 0) |
887510e230b6Smaya      __gen_uint(values->RSTRMPAVPReadInvalid, 1, 1) |
887610e230b6Smaya      __gen_uint(values->InvalidPageDirectoryEntryError, 2, 2) |
887710e230b6Smaya      __gen_uint(values->ROSTRMPAVPInvalidPhysicalAddress, 3, 3) |
887810e230b6Smaya      __gen_uint(values->TLBPageVTDTranslationError, 4, 4) |
887910e230b6Smaya      __gen_uint(values->WRDPPAVPInvalid, 5, 5) |
888010e230b6Smaya      __gen_uint(values->PageDirectoryEntryVTDTranslationError, 6, 6) |
888110e230b6Smaya      __gen_uint(values->UnloadedPDError, 8, 8) |
888210e230b6Smaya      __gen_uint(values->GuCVTdtranslationPageFault2ndlevelUndefineddoorbell, 9, 9) |
888310e230b6Smaya      __gen_uint(values->NonWBmemorytypeforAdvancedContext, 10, 10) |
888410e230b6Smaya      __gen_uint(values->PASIDNotEnabled, 11, 11) |
888510e230b6Smaya      __gen_uint(values->PASIDBoundaryViolation, 12, 12) |
888610e230b6Smaya      __gen_uint(values->PASIDNotValid, 13, 13) |
888710e230b6Smaya      __gen_uint(values->PASIDWasZeroForUntranslatedRequest, 14, 14) |
888810e230b6Smaya      __gen_uint(values->ContextWasNotMarkedAsPresentWhenDoingDMA, 15, 15);
888910e230b6Smaya}
889010e230b6Smaya
889110e230b6Smaya#define GEN8_GS_INVOCATION_COUNT_num      0x2328
889210e230b6Smaya#define GEN8_GS_INVOCATION_COUNT_length        2
889310e230b6Smayastruct GEN8_GS_INVOCATION_COUNT {
889410e230b6Smaya   uint64_t                             GSInvocationCountReport;
889510e230b6Smaya};
889610e230b6Smaya
889710e230b6Smayastatic inline void
889810e230b6SmayaGEN8_GS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
889910e230b6Smaya                              __attribute__((unused)) void * restrict dst,
890010e230b6Smaya                              __attribute__((unused)) const struct GEN8_GS_INVOCATION_COUNT * restrict values)
890110e230b6Smaya{
890210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
890310e230b6Smaya
890410e230b6Smaya   const uint64_t v0 =
890510e230b6Smaya      __gen_uint(values->GSInvocationCountReport, 0, 63);
890610e230b6Smaya   dw[0] = v0;
890710e230b6Smaya   dw[1] = v0 >> 32;
890810e230b6Smaya}
890910e230b6Smaya
891010e230b6Smaya#define GEN8_GS_PRIMITIVES_COUNT_num      0x2330
891110e230b6Smaya#define GEN8_GS_PRIMITIVES_COUNT_length        2
891210e230b6Smayastruct GEN8_GS_PRIMITIVES_COUNT {
891310e230b6Smaya   uint64_t                             GSPrimitivesCountReport;
891410e230b6Smaya};
891510e230b6Smaya
891610e230b6Smayastatic inline void
891710e230b6SmayaGEN8_GS_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
891810e230b6Smaya                              __attribute__((unused)) void * restrict dst,
891910e230b6Smaya                              __attribute__((unused)) const struct GEN8_GS_PRIMITIVES_COUNT * restrict values)
892010e230b6Smaya{
892110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
892210e230b6Smaya
892310e230b6Smaya   const uint64_t v0 =
892410e230b6Smaya      __gen_uint(values->GSPrimitivesCountReport, 0, 63);
892510e230b6Smaya   dw[0] = v0;
892610e230b6Smaya   dw[1] = v0 >> 32;
892710e230b6Smaya}
892810e230b6Smaya
892910e230b6Smaya#define GEN8_HS_INVOCATION_COUNT_num      0x2300
893010e230b6Smaya#define GEN8_HS_INVOCATION_COUNT_length        2
893110e230b6Smayastruct GEN8_HS_INVOCATION_COUNT {
893210e230b6Smaya   uint64_t                             HSInvocationCountReport;
893310e230b6Smaya};
893410e230b6Smaya
893510e230b6Smayastatic inline void
893610e230b6SmayaGEN8_HS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
893710e230b6Smaya                              __attribute__((unused)) void * restrict dst,
893810e230b6Smaya                              __attribute__((unused)) const struct GEN8_HS_INVOCATION_COUNT * restrict values)
893910e230b6Smaya{
894010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
894110e230b6Smaya
894210e230b6Smaya   const uint64_t v0 =
894310e230b6Smaya      __gen_uint(values->HSInvocationCountReport, 0, 63);
894410e230b6Smaya   dw[0] = v0;
894510e230b6Smaya   dw[1] = v0 >> 32;
894610e230b6Smaya}
894710e230b6Smaya
894810e230b6Smaya#define GEN8_IA_PRIMITIVES_COUNT_num      0x2318
894910e230b6Smaya#define GEN8_IA_PRIMITIVES_COUNT_length        2
895010e230b6Smayastruct GEN8_IA_PRIMITIVES_COUNT {
895110e230b6Smaya   uint64_t                             IAPrimitivesCountReport;
895210e230b6Smaya};
895310e230b6Smaya
895410e230b6Smayastatic inline void
895510e230b6SmayaGEN8_IA_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
895610e230b6Smaya                              __attribute__((unused)) void * restrict dst,
895710e230b6Smaya                              __attribute__((unused)) const struct GEN8_IA_PRIMITIVES_COUNT * restrict values)
895810e230b6Smaya{
895910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
896010e230b6Smaya
896110e230b6Smaya   const uint64_t v0 =
896210e230b6Smaya      __gen_uint(values->IAPrimitivesCountReport, 0, 63);
896310e230b6Smaya   dw[0] = v0;
896410e230b6Smaya   dw[1] = v0 >> 32;
896510e230b6Smaya}
896610e230b6Smaya
896710e230b6Smaya#define GEN8_IA_VERTICES_COUNT_num        0x2310
896810e230b6Smaya#define GEN8_IA_VERTICES_COUNT_length          2
896910e230b6Smayastruct GEN8_IA_VERTICES_COUNT {
897010e230b6Smaya   uint64_t                             IAVerticesCountReport;
897110e230b6Smaya};
897210e230b6Smaya
897310e230b6Smayastatic inline void
897410e230b6SmayaGEN8_IA_VERTICES_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
897510e230b6Smaya                            __attribute__((unused)) void * restrict dst,
897610e230b6Smaya                            __attribute__((unused)) const struct GEN8_IA_VERTICES_COUNT * restrict values)
897710e230b6Smaya{
897810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
897910e230b6Smaya
898010e230b6Smaya   const uint64_t v0 =
898110e230b6Smaya      __gen_uint(values->IAVerticesCountReport, 0, 63);
898210e230b6Smaya   dw[0] = v0;
898310e230b6Smaya   dw[1] = v0 >> 32;
898410e230b6Smaya}
898510e230b6Smaya
898610e230b6Smaya#define GEN8_INSTDONE_1_num               0x206c
898710e230b6Smaya#define GEN8_INSTDONE_1_length                 1
898810e230b6Smayastruct GEN8_INSTDONE_1 {
898910e230b6Smaya   bool                                 PRB0RingEnable;
899010e230b6Smaya   bool                                 VFGDone;
899110e230b6Smaya   bool                                 VSDone;
899210e230b6Smaya   bool                                 HSDone;
899310e230b6Smaya   bool                                 TEDone;
899410e230b6Smaya   bool                                 DSDone;
899510e230b6Smaya   bool                                 GSDone;
899610e230b6Smaya   bool                                 SOLDone;
899710e230b6Smaya   bool                                 CLDone;
899810e230b6Smaya   bool                                 SFDone;
899910e230b6Smaya   bool                                 TDGDone;
900010e230b6Smaya   bool                                 URBMDone;
900110e230b6Smaya   bool                                 SVGDone;
900210e230b6Smaya   bool                                 GAFSDone;
900310e230b6Smaya   bool                                 VFEDone;
900410e230b6Smaya   bool                                 TSGDone;
900510e230b6Smaya   bool                                 GAFMDone;
900610e230b6Smaya   bool                                 GAMDone;
900710e230b6Smaya   bool                                 RSDone;
900810e230b6Smaya   bool                                 CSDone;
900910e230b6Smaya   bool                                 SDEDone;
901010e230b6Smaya   bool                                 RCCFBCCSDone;
901110e230b6Smaya};
901210e230b6Smaya
901310e230b6Smayastatic inline void
901410e230b6SmayaGEN8_INSTDONE_1_pack(__attribute__((unused)) __gen_user_data *data,
901510e230b6Smaya                     __attribute__((unused)) void * restrict dst,
901610e230b6Smaya                     __attribute__((unused)) const struct GEN8_INSTDONE_1 * restrict values)
901710e230b6Smaya{
901810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
901910e230b6Smaya
902010e230b6Smaya   dw[0] =
902110e230b6Smaya      __gen_uint(values->PRB0RingEnable, 0, 0) |
902210e230b6Smaya      __gen_uint(values->VFGDone, 1, 1) |
902310e230b6Smaya      __gen_uint(values->VSDone, 2, 2) |
902410e230b6Smaya      __gen_uint(values->HSDone, 3, 3) |
902510e230b6Smaya      __gen_uint(values->TEDone, 4, 4) |
902610e230b6Smaya      __gen_uint(values->DSDone, 5, 5) |
902710e230b6Smaya      __gen_uint(values->GSDone, 6, 6) |
902810e230b6Smaya      __gen_uint(values->SOLDone, 7, 7) |
902910e230b6Smaya      __gen_uint(values->CLDone, 8, 8) |
903010e230b6Smaya      __gen_uint(values->SFDone, 9, 9) |
903110e230b6Smaya      __gen_uint(values->TDGDone, 12, 12) |
903210e230b6Smaya      __gen_uint(values->URBMDone, 13, 13) |
903310e230b6Smaya      __gen_uint(values->SVGDone, 14, 14) |
903410e230b6Smaya      __gen_uint(values->GAFSDone, 15, 15) |
903510e230b6Smaya      __gen_uint(values->VFEDone, 16, 16) |
903610e230b6Smaya      __gen_uint(values->TSGDone, 17, 17) |
903710e230b6Smaya      __gen_uint(values->GAFMDone, 18, 18) |
903810e230b6Smaya      __gen_uint(values->GAMDone, 19, 19) |
903910e230b6Smaya      __gen_uint(values->RSDone, 20, 20) |
904010e230b6Smaya      __gen_uint(values->CSDone, 21, 21) |
904110e230b6Smaya      __gen_uint(values->SDEDone, 22, 22) |
904210e230b6Smaya      __gen_uint(values->RCCFBCCSDone, 23, 23);
904310e230b6Smaya}
904410e230b6Smaya
904510e230b6Smaya#define GEN8_INSTPM_num                   0x20c0
904610e230b6Smaya#define GEN8_INSTPM_length                     1
904710e230b6Smayastruct GEN8_INSTPM {
904810e230b6Smaya   bool                                 _3DStateInstructionDisable;
904910e230b6Smaya   bool                                 _3DRenderingInstructionDisable;
905010e230b6Smaya   bool                                 MediaInstructionDisable;
905110e230b6Smaya   bool                                 CONSTANT_BUFFERAddressOffsetDisable;
905210e230b6Smaya   bool                                 _3DStateInstructionDisableMask;
905310e230b6Smaya   bool                                 _3DRenderingInstructionDisableMask;
905410e230b6Smaya   bool                                 MediaInstructionDisableMask;
905510e230b6Smaya   bool                                 CONSTANT_BUFFERAddressOffsetDisableMask;
905610e230b6Smaya};
905710e230b6Smaya
905810e230b6Smayastatic inline void
905910e230b6SmayaGEN8_INSTPM_pack(__attribute__((unused)) __gen_user_data *data,
906010e230b6Smaya                 __attribute__((unused)) void * restrict dst,
906110e230b6Smaya                 __attribute__((unused)) const struct GEN8_INSTPM * restrict values)
906210e230b6Smaya{
906310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
906410e230b6Smaya
906510e230b6Smaya   dw[0] =
906610e230b6Smaya      __gen_uint(values->_3DStateInstructionDisable, 1, 1) |
906710e230b6Smaya      __gen_uint(values->_3DRenderingInstructionDisable, 2, 2) |
906810e230b6Smaya      __gen_uint(values->MediaInstructionDisable, 3, 3) |
906910e230b6Smaya      __gen_uint(values->CONSTANT_BUFFERAddressOffsetDisable, 6, 6) |
907010e230b6Smaya      __gen_uint(values->_3DStateInstructionDisableMask, 17, 17) |
907110e230b6Smaya      __gen_uint(values->_3DRenderingInstructionDisableMask, 18, 18) |
907210e230b6Smaya      __gen_uint(values->MediaInstructionDisableMask, 19, 19) |
907310e230b6Smaya      __gen_uint(values->CONSTANT_BUFFERAddressOffsetDisableMask, 22, 22);
907410e230b6Smaya}
907510e230b6Smaya
907610e230b6Smaya#define GEN8_L3CNTLREG_num                0x7034
907710e230b6Smaya#define GEN8_L3CNTLREG_length                  1
907810e230b6Smayastruct GEN8_L3CNTLREG {
907910e230b6Smaya   bool                                 SLMEnable;
908010e230b6Smaya   uint32_t                             URBAllocation;
908110e230b6Smaya   uint32_t                             ROAllocation;
908210e230b6Smaya   uint32_t                             DCAllocation;
908310e230b6Smaya   uint32_t                             AllAllocation;
908410e230b6Smaya};
908510e230b6Smaya
908610e230b6Smayastatic inline void
908710e230b6SmayaGEN8_L3CNTLREG_pack(__attribute__((unused)) __gen_user_data *data,
908810e230b6Smaya                    __attribute__((unused)) void * restrict dst,
908910e230b6Smaya                    __attribute__((unused)) const struct GEN8_L3CNTLREG * restrict values)
909010e230b6Smaya{
909110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
909210e230b6Smaya
909310e230b6Smaya   dw[0] =
909410e230b6Smaya      __gen_uint(values->SLMEnable, 0, 0) |
909510e230b6Smaya      __gen_uint(values->URBAllocation, 1, 7) |
909610e230b6Smaya      __gen_uint(values->ROAllocation, 11, 17) |
909710e230b6Smaya      __gen_uint(values->DCAllocation, 18, 24) |
909810e230b6Smaya      __gen_uint(values->AllAllocation, 25, 31);
909910e230b6Smaya}
910010e230b6Smaya
910110e230b6Smaya#define GEN8_PS_INVOCATION_COUNT_num      0x2348
910210e230b6Smaya#define GEN8_PS_INVOCATION_COUNT_length        2
910310e230b6Smayastruct GEN8_PS_INVOCATION_COUNT {
910410e230b6Smaya   uint64_t                             PSInvocationCountReport;
910510e230b6Smaya};
910610e230b6Smaya
910710e230b6Smayastatic inline void
910810e230b6SmayaGEN8_PS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
910910e230b6Smaya                              __attribute__((unused)) void * restrict dst,
911010e230b6Smaya                              __attribute__((unused)) const struct GEN8_PS_INVOCATION_COUNT * restrict values)
911110e230b6Smaya{
911210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
911310e230b6Smaya
911410e230b6Smaya   const uint64_t v0 =
911510e230b6Smaya      __gen_uint(values->PSInvocationCountReport, 0, 63);
911610e230b6Smaya   dw[0] = v0;
911710e230b6Smaya   dw[1] = v0 >> 32;
911810e230b6Smaya}
911910e230b6Smaya
912010e230b6Smaya#define GEN8_RCS_RING_BUFFER_CTL_num      0x203c
912110e230b6Smaya#define GEN8_RCS_RING_BUFFER_CTL_length        1
912210e230b6Smayastruct GEN8_RCS_RING_BUFFER_CTL {
912310e230b6Smaya   bool                                 RingBufferEnable;
912410e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
912510e230b6Smaya#define MI_AUTOREPORT_OFF                        0
912610e230b6Smaya#define MI_AUTOREPORT_64KB                       1
912710e230b6Smaya#define MI_AUTOREPORT_4KB                        2
912810e230b6Smaya#define MI_AUTOREPORT_128KB                      3
912910e230b6Smaya   bool                                 SemaphoreWait;
913010e230b6Smaya   bool                                 RBWait;
913110e230b6Smaya   uint32_t                             BufferLengthinpages1;
913210e230b6Smaya};
913310e230b6Smaya
913410e230b6Smayastatic inline void
913510e230b6SmayaGEN8_RCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
913610e230b6Smaya                              __attribute__((unused)) void * restrict dst,
913710e230b6Smaya                              __attribute__((unused)) const struct GEN8_RCS_RING_BUFFER_CTL * restrict values)
913810e230b6Smaya{
913910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
914010e230b6Smaya
914110e230b6Smaya   dw[0] =
914210e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
914310e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
914410e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
914510e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
914610e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
914710e230b6Smaya}
914810e230b6Smaya
914910e230b6Smaya#define GEN8_ROW_INSTDONE_num             0xe164
915010e230b6Smaya#define GEN8_ROW_INSTDONE_length               1
915110e230b6Smayastruct GEN8_ROW_INSTDONE {
915210e230b6Smaya   bool                                 BCDone;
915310e230b6Smaya   bool                                 PSDDone;
915410e230b6Smaya   bool                                 DAPRDone;
915510e230b6Smaya   bool                                 TDLDone;
915610e230b6Smaya   bool                                 ICDone;
915710e230b6Smaya   bool                                 MA0Done;
915810e230b6Smaya   bool                                 EU00DoneSS0;
915910e230b6Smaya   bool                                 EU01DoneSS0;
916010e230b6Smaya   bool                                 EU02DoneSS0;
916110e230b6Smaya   bool                                 EU03DoneSS0;
916210e230b6Smaya   bool                                 EU10DoneSS0;
916310e230b6Smaya   bool                                 EU11DoneSS0;
916410e230b6Smaya   bool                                 EU12DoneSS0;
916510e230b6Smaya   bool                                 EU13DoneSS0;
916610e230b6Smaya   bool                                 MA1DoneSS0;
916710e230b6Smaya};
916810e230b6Smaya
916910e230b6Smayastatic inline void
917010e230b6SmayaGEN8_ROW_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
917110e230b6Smaya                       __attribute__((unused)) void * restrict dst,
917210e230b6Smaya                       __attribute__((unused)) const struct GEN8_ROW_INSTDONE * restrict values)
917310e230b6Smaya{
917410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
917510e230b6Smaya
917610e230b6Smaya   dw[0] =
917710e230b6Smaya      __gen_uint(values->BCDone, 0, 0) |
917810e230b6Smaya      __gen_uint(values->PSDDone, 1, 1) |
917910e230b6Smaya      __gen_uint(values->DAPRDone, 3, 3) |
918010e230b6Smaya      __gen_uint(values->TDLDone, 6, 6) |
918110e230b6Smaya      __gen_uint(values->ICDone, 12, 12) |
918210e230b6Smaya      __gen_uint(values->MA0Done, 15, 15) |
918310e230b6Smaya      __gen_uint(values->EU00DoneSS0, 16, 16) |
918410e230b6Smaya      __gen_uint(values->EU01DoneSS0, 17, 17) |
918510e230b6Smaya      __gen_uint(values->EU02DoneSS0, 18, 18) |
918610e230b6Smaya      __gen_uint(values->EU03DoneSS0, 19, 19) |
918710e230b6Smaya      __gen_uint(values->EU10DoneSS0, 21, 21) |
918810e230b6Smaya      __gen_uint(values->EU11DoneSS0, 22, 22) |
918910e230b6Smaya      __gen_uint(values->EU12DoneSS0, 23, 23) |
919010e230b6Smaya      __gen_uint(values->EU13DoneSS0, 24, 24) |
919110e230b6Smaya      __gen_uint(values->MA1DoneSS0, 26, 26);
919210e230b6Smaya}
919310e230b6Smaya
919410e230b6Smaya#define GEN8_SAMPLER_INSTDONE_num         0xe160
919510e230b6Smaya#define GEN8_SAMPLER_INSTDONE_length           1
919610e230b6Smayastruct GEN8_SAMPLER_INSTDONE {
919710e230b6Smaya   bool                                 IMEDone;
919810e230b6Smaya   bool                                 PL0Done;
919910e230b6Smaya   bool                                 SO0Done;
920010e230b6Smaya   bool                                 DG0Done;
920110e230b6Smaya   bool                                 FT0Done;
920210e230b6Smaya   bool                                 DM0Done;
920310e230b6Smaya   bool                                 SCDone;
920410e230b6Smaya   bool                                 FL0Done;
920510e230b6Smaya   bool                                 QCDone;
920610e230b6Smaya   bool                                 SVSMDone;
920710e230b6Smaya   bool                                 SI0Done;
920810e230b6Smaya   bool                                 MT0Done;
920910e230b6Smaya   bool                                 AVSDone;
921010e230b6Smaya   bool                                 IEFDone;
921110e230b6Smaya   bool                                 CREDone;
921210e230b6Smaya   bool                                 SVSMARB3;
921310e230b6Smaya   bool                                 SVSMARB2;
921410e230b6Smaya   bool                                 SVSMARB1;
921510e230b6Smaya   bool                                 SVSMAdapter;
921610e230b6Smaya   bool                                 BDMDone;
921710e230b6Smaya};
921810e230b6Smaya
921910e230b6Smayastatic inline void
922010e230b6SmayaGEN8_SAMPLER_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
922110e230b6Smaya                           __attribute__((unused)) void * restrict dst,
922210e230b6Smaya                           __attribute__((unused)) const struct GEN8_SAMPLER_INSTDONE * restrict values)
922310e230b6Smaya{
922410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
922510e230b6Smaya
922610e230b6Smaya   dw[0] =
922710e230b6Smaya      __gen_uint(values->IMEDone, 0, 0) |
922810e230b6Smaya      __gen_uint(values->PL0Done, 1, 1) |
922910e230b6Smaya      __gen_uint(values->SO0Done, 2, 2) |
923010e230b6Smaya      __gen_uint(values->DG0Done, 3, 3) |
923110e230b6Smaya      __gen_uint(values->FT0Done, 4, 4) |
923210e230b6Smaya      __gen_uint(values->DM0Done, 5, 5) |
923310e230b6Smaya      __gen_uint(values->SCDone, 6, 6) |
923410e230b6Smaya      __gen_uint(values->FL0Done, 7, 7) |
923510e230b6Smaya      __gen_uint(values->QCDone, 8, 8) |
923610e230b6Smaya      __gen_uint(values->SVSMDone, 9, 9) |
923710e230b6Smaya      __gen_uint(values->SI0Done, 10, 10) |
923810e230b6Smaya      __gen_uint(values->MT0Done, 11, 11) |
923910e230b6Smaya      __gen_uint(values->AVSDone, 12, 12) |
924010e230b6Smaya      __gen_uint(values->IEFDone, 13, 13) |
924110e230b6Smaya      __gen_uint(values->CREDone, 14, 14) |
924210e230b6Smaya      __gen_uint(values->SVSMARB3, 15, 15) |
924310e230b6Smaya      __gen_uint(values->SVSMARB2, 16, 16) |
924410e230b6Smaya      __gen_uint(values->SVSMARB1, 17, 17) |
924510e230b6Smaya      __gen_uint(values->SVSMAdapter, 18, 18) |
924610e230b6Smaya      __gen_uint(values->BDMDone, 19, 19);
924710e230b6Smaya}
924810e230b6Smaya
924910e230b6Smaya#define GEN8_SC_INSTDONE_num              0x7100
925010e230b6Smaya#define GEN8_SC_INSTDONE_length                1
925110e230b6Smayastruct GEN8_SC_INSTDONE {
925210e230b6Smaya   bool                                 SVLDone;
925310e230b6Smaya   bool                                 WMFEDone;
925410e230b6Smaya   bool                                 WMBEDone;
925510e230b6Smaya   bool                                 HIZDone;
925610e230b6Smaya   bool                                 STCDone;
925710e230b6Smaya   bool                                 IZDone;
925810e230b6Smaya   bool                                 SBEDone;
925910e230b6Smaya   bool                                 RCZDone;
926010e230b6Smaya   bool                                 RCCDone;
926110e230b6Smaya   bool                                 RCPBEDone;
926210e230b6Smaya   bool                                 RCPFEDone;
926310e230b6Smaya   bool                                 DAPBDone;
926410e230b6Smaya   bool                                 DAPRBEDone;
926510e230b6Smaya   bool                                 SARBDone;
926610e230b6Smaya   bool                                 DC0Done;
926710e230b6Smaya   bool                                 DC1Done;
926810e230b6Smaya   bool                                 DC2Done;
926910e230b6Smaya   bool                                 GW0Done;
927010e230b6Smaya   bool                                 GW1Done;
927110e230b6Smaya   bool                                 GW2Done;
927210e230b6Smaya   bool                                 TDCDone;
927310e230b6Smaya};
927410e230b6Smaya
927510e230b6Smayastatic inline void
927610e230b6SmayaGEN8_SC_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
927710e230b6Smaya                      __attribute__((unused)) void * restrict dst,
927810e230b6Smaya                      __attribute__((unused)) const struct GEN8_SC_INSTDONE * restrict values)
927910e230b6Smaya{
928010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
928110e230b6Smaya
928210e230b6Smaya   dw[0] =
928310e230b6Smaya      __gen_uint(values->SVLDone, 0, 0) |
928410e230b6Smaya      __gen_uint(values->WMFEDone, 1, 1) |
928510e230b6Smaya      __gen_uint(values->WMBEDone, 2, 2) |
928610e230b6Smaya      __gen_uint(values->HIZDone, 3, 3) |
928710e230b6Smaya      __gen_uint(values->STCDone, 4, 4) |
928810e230b6Smaya      __gen_uint(values->IZDone, 5, 5) |
928910e230b6Smaya      __gen_uint(values->SBEDone, 6, 6) |
929010e230b6Smaya      __gen_uint(values->RCZDone, 8, 8) |
929110e230b6Smaya      __gen_uint(values->RCCDone, 9, 9) |
929210e230b6Smaya      __gen_uint(values->RCPBEDone, 10, 10) |
929310e230b6Smaya      __gen_uint(values->RCPFEDone, 11, 11) |
929410e230b6Smaya      __gen_uint(values->DAPBDone, 12, 12) |
929510e230b6Smaya      __gen_uint(values->DAPRBEDone, 13, 13) |
929610e230b6Smaya      __gen_uint(values->SARBDone, 15, 15) |
929710e230b6Smaya      __gen_uint(values->DC0Done, 16, 16) |
929810e230b6Smaya      __gen_uint(values->DC1Done, 17, 17) |
929910e230b6Smaya      __gen_uint(values->DC2Done, 18, 18) |
930010e230b6Smaya      __gen_uint(values->GW0Done, 20, 20) |
930110e230b6Smaya      __gen_uint(values->GW1Done, 21, 21) |
930210e230b6Smaya      __gen_uint(values->GW2Done, 22, 22) |
930310e230b6Smaya      __gen_uint(values->TDCDone, 24, 24);
930410e230b6Smaya}
930510e230b6Smaya
930610e230b6Smaya#define GEN8_SO_NUM_PRIMS_WRITTEN0_num    0x5200
930710e230b6Smaya#define GEN8_SO_NUM_PRIMS_WRITTEN0_length      2
930810e230b6Smayastruct GEN8_SO_NUM_PRIMS_WRITTEN0 {
930910e230b6Smaya   uint64_t                             NumPrimsWrittenCount;
931010e230b6Smaya};
931110e230b6Smaya
931210e230b6Smayastatic inline void
931310e230b6SmayaGEN8_SO_NUM_PRIMS_WRITTEN0_pack(__attribute__((unused)) __gen_user_data *data,
931410e230b6Smaya                                __attribute__((unused)) void * restrict dst,
931510e230b6Smaya                                __attribute__((unused)) const struct GEN8_SO_NUM_PRIMS_WRITTEN0 * restrict values)
931610e230b6Smaya{
931710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
931810e230b6Smaya
931910e230b6Smaya   const uint64_t v0 =
932010e230b6Smaya      __gen_uint(values->NumPrimsWrittenCount, 0, 63);
932110e230b6Smaya   dw[0] = v0;
932210e230b6Smaya   dw[1] = v0 >> 32;
932310e230b6Smaya}
932410e230b6Smaya
932510e230b6Smaya#define GEN8_SO_NUM_PRIMS_WRITTEN1_num    0x5208
932610e230b6Smaya#define GEN8_SO_NUM_PRIMS_WRITTEN1_length      2
932710e230b6Smayastruct GEN8_SO_NUM_PRIMS_WRITTEN1 {
932810e230b6Smaya   uint64_t                             NumPrimsWrittenCount;
932910e230b6Smaya};
933010e230b6Smaya
933110e230b6Smayastatic inline void
933210e230b6SmayaGEN8_SO_NUM_PRIMS_WRITTEN1_pack(__attribute__((unused)) __gen_user_data *data,
933310e230b6Smaya                                __attribute__((unused)) void * restrict dst,
933410e230b6Smaya                                __attribute__((unused)) const struct GEN8_SO_NUM_PRIMS_WRITTEN1 * restrict values)
933510e230b6Smaya{
933610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
933710e230b6Smaya
933810e230b6Smaya   const uint64_t v0 =
933910e230b6Smaya      __gen_uint(values->NumPrimsWrittenCount, 0, 63);
934010e230b6Smaya   dw[0] = v0;
934110e230b6Smaya   dw[1] = v0 >> 32;
934210e230b6Smaya}
934310e230b6Smaya
934410e230b6Smaya#define GEN8_SO_NUM_PRIMS_WRITTEN2_num    0x5210
934510e230b6Smaya#define GEN8_SO_NUM_PRIMS_WRITTEN2_length      2
934610e230b6Smayastruct GEN8_SO_NUM_PRIMS_WRITTEN2 {
934710e230b6Smaya   uint64_t                             NumPrimsWrittenCount;
934810e230b6Smaya};
934910e230b6Smaya
935010e230b6Smayastatic inline void
935110e230b6SmayaGEN8_SO_NUM_PRIMS_WRITTEN2_pack(__attribute__((unused)) __gen_user_data *data,
935210e230b6Smaya                                __attribute__((unused)) void * restrict dst,
935310e230b6Smaya                                __attribute__((unused)) const struct GEN8_SO_NUM_PRIMS_WRITTEN2 * restrict values)
935410e230b6Smaya{
935510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
935610e230b6Smaya
935710e230b6Smaya   const uint64_t v0 =
935810e230b6Smaya      __gen_uint(values->NumPrimsWrittenCount, 0, 63);
935910e230b6Smaya   dw[0] = v0;
936010e230b6Smaya   dw[1] = v0 >> 32;
936110e230b6Smaya}
936210e230b6Smaya
936310e230b6Smaya#define GEN8_SO_NUM_PRIMS_WRITTEN3_num    0x5218
936410e230b6Smaya#define GEN8_SO_NUM_PRIMS_WRITTEN3_length      2
936510e230b6Smayastruct GEN8_SO_NUM_PRIMS_WRITTEN3 {
936610e230b6Smaya   uint64_t                             NumPrimsWrittenCount;
936710e230b6Smaya};
936810e230b6Smaya
936910e230b6Smayastatic inline void
937010e230b6SmayaGEN8_SO_NUM_PRIMS_WRITTEN3_pack(__attribute__((unused)) __gen_user_data *data,
937110e230b6Smaya                                __attribute__((unused)) void * restrict dst,
937210e230b6Smaya                                __attribute__((unused)) const struct GEN8_SO_NUM_PRIMS_WRITTEN3 * restrict values)
937310e230b6Smaya{
937410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
937510e230b6Smaya
937610e230b6Smaya   const uint64_t v0 =
937710e230b6Smaya      __gen_uint(values->NumPrimsWrittenCount, 0, 63);
937810e230b6Smaya   dw[0] = v0;
937910e230b6Smaya   dw[1] = v0 >> 32;
938010e230b6Smaya}
938110e230b6Smaya
938210e230b6Smaya#define GEN8_SO_PRIM_STORAGE_NEEDED0_num  0x5240
938310e230b6Smaya#define GEN8_SO_PRIM_STORAGE_NEEDED0_length      2
938410e230b6Smayastruct GEN8_SO_PRIM_STORAGE_NEEDED0 {
938510e230b6Smaya   uint64_t                             PrimStorageNeededCount;
938610e230b6Smaya};
938710e230b6Smaya
938810e230b6Smayastatic inline void
938910e230b6SmayaGEN8_SO_PRIM_STORAGE_NEEDED0_pack(__attribute__((unused)) __gen_user_data *data,
939010e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
939110e230b6Smaya                                  __attribute__((unused)) const struct GEN8_SO_PRIM_STORAGE_NEEDED0 * restrict values)
939210e230b6Smaya{
939310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
939410e230b6Smaya
939510e230b6Smaya   const uint64_t v0 =
939610e230b6Smaya      __gen_uint(values->PrimStorageNeededCount, 0, 63);
939710e230b6Smaya   dw[0] = v0;
939810e230b6Smaya   dw[1] = v0 >> 32;
939910e230b6Smaya}
940010e230b6Smaya
940110e230b6Smaya#define GEN8_SO_PRIM_STORAGE_NEEDED1_num  0x5248
940210e230b6Smaya#define GEN8_SO_PRIM_STORAGE_NEEDED1_length      2
940310e230b6Smayastruct GEN8_SO_PRIM_STORAGE_NEEDED1 {
940410e230b6Smaya   uint64_t                             PrimStorageNeededCount;
940510e230b6Smaya};
940610e230b6Smaya
940710e230b6Smayastatic inline void
940810e230b6SmayaGEN8_SO_PRIM_STORAGE_NEEDED1_pack(__attribute__((unused)) __gen_user_data *data,
940910e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
941010e230b6Smaya                                  __attribute__((unused)) const struct GEN8_SO_PRIM_STORAGE_NEEDED1 * restrict values)
941110e230b6Smaya{
941210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
941310e230b6Smaya
941410e230b6Smaya   const uint64_t v0 =
941510e230b6Smaya      __gen_uint(values->PrimStorageNeededCount, 0, 63);
941610e230b6Smaya   dw[0] = v0;
941710e230b6Smaya   dw[1] = v0 >> 32;
941810e230b6Smaya}
941910e230b6Smaya
942010e230b6Smaya#define GEN8_SO_PRIM_STORAGE_NEEDED2_num  0x5250
942110e230b6Smaya#define GEN8_SO_PRIM_STORAGE_NEEDED2_length      2
942210e230b6Smayastruct GEN8_SO_PRIM_STORAGE_NEEDED2 {
942310e230b6Smaya   uint64_t                             PrimStorageNeededCount;
942410e230b6Smaya};
942510e230b6Smaya
942610e230b6Smayastatic inline void
942710e230b6SmayaGEN8_SO_PRIM_STORAGE_NEEDED2_pack(__attribute__((unused)) __gen_user_data *data,
942810e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
942910e230b6Smaya                                  __attribute__((unused)) const struct GEN8_SO_PRIM_STORAGE_NEEDED2 * restrict values)
943010e230b6Smaya{
943110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
943210e230b6Smaya
943310e230b6Smaya   const uint64_t v0 =
943410e230b6Smaya      __gen_uint(values->PrimStorageNeededCount, 0, 63);
943510e230b6Smaya   dw[0] = v0;
943610e230b6Smaya   dw[1] = v0 >> 32;
943710e230b6Smaya}
943810e230b6Smaya
943910e230b6Smaya#define GEN8_SO_PRIM_STORAGE_NEEDED3_num  0x5258
944010e230b6Smaya#define GEN8_SO_PRIM_STORAGE_NEEDED3_length      2
944110e230b6Smayastruct GEN8_SO_PRIM_STORAGE_NEEDED3 {
944210e230b6Smaya   uint64_t                             PrimStorageNeededCount;
944310e230b6Smaya};
944410e230b6Smaya
944510e230b6Smayastatic inline void
944610e230b6SmayaGEN8_SO_PRIM_STORAGE_NEEDED3_pack(__attribute__((unused)) __gen_user_data *data,
944710e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
944810e230b6Smaya                                  __attribute__((unused)) const struct GEN8_SO_PRIM_STORAGE_NEEDED3 * restrict values)
944910e230b6Smaya{
945010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
945110e230b6Smaya
945210e230b6Smaya   const uint64_t v0 =
945310e230b6Smaya      __gen_uint(values->PrimStorageNeededCount, 0, 63);
945410e230b6Smaya   dw[0] = v0;
945510e230b6Smaya   dw[1] = v0 >> 32;
945610e230b6Smaya}
945710e230b6Smaya
945810e230b6Smaya#define GEN8_SO_WRITE_OFFSET0_num         0x5280
945910e230b6Smaya#define GEN8_SO_WRITE_OFFSET0_length           1
946010e230b6Smayastruct GEN8_SO_WRITE_OFFSET0 {
946110e230b6Smaya   uint64_t                             WriteOffset;
946210e230b6Smaya};
946310e230b6Smaya
946410e230b6Smayastatic inline void
946510e230b6SmayaGEN8_SO_WRITE_OFFSET0_pack(__attribute__((unused)) __gen_user_data *data,
946610e230b6Smaya                           __attribute__((unused)) void * restrict dst,
946710e230b6Smaya                           __attribute__((unused)) const struct GEN8_SO_WRITE_OFFSET0 * restrict values)
946810e230b6Smaya{
946910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
947010e230b6Smaya
947110e230b6Smaya   dw[0] =
947210e230b6Smaya      __gen_offset(values->WriteOffset, 2, 31);
947310e230b6Smaya}
947410e230b6Smaya
947510e230b6Smaya#define GEN8_SO_WRITE_OFFSET1_num         0x5284
947610e230b6Smaya#define GEN8_SO_WRITE_OFFSET1_length           1
947710e230b6Smayastruct GEN8_SO_WRITE_OFFSET1 {
947810e230b6Smaya   uint64_t                             WriteOffset;
947910e230b6Smaya};
948010e230b6Smaya
948110e230b6Smayastatic inline void
948210e230b6SmayaGEN8_SO_WRITE_OFFSET1_pack(__attribute__((unused)) __gen_user_data *data,
948310e230b6Smaya                           __attribute__((unused)) void * restrict dst,
948410e230b6Smaya                           __attribute__((unused)) const struct GEN8_SO_WRITE_OFFSET1 * restrict values)
948510e230b6Smaya{
948610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
948710e230b6Smaya
948810e230b6Smaya   dw[0] =
948910e230b6Smaya      __gen_offset(values->WriteOffset, 2, 31);
949010e230b6Smaya}
949110e230b6Smaya
949210e230b6Smaya#define GEN8_SO_WRITE_OFFSET2_num         0x5288
949310e230b6Smaya#define GEN8_SO_WRITE_OFFSET2_length           1
949410e230b6Smayastruct GEN8_SO_WRITE_OFFSET2 {
949510e230b6Smaya   uint64_t                             WriteOffset;
949610e230b6Smaya};
949710e230b6Smaya
949810e230b6Smayastatic inline void
949910e230b6SmayaGEN8_SO_WRITE_OFFSET2_pack(__attribute__((unused)) __gen_user_data *data,
950010e230b6Smaya                           __attribute__((unused)) void * restrict dst,
950110e230b6Smaya                           __attribute__((unused)) const struct GEN8_SO_WRITE_OFFSET2 * restrict values)
950210e230b6Smaya{
950310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
950410e230b6Smaya
950510e230b6Smaya   dw[0] =
950610e230b6Smaya      __gen_offset(values->WriteOffset, 2, 31);
950710e230b6Smaya}
950810e230b6Smaya
950910e230b6Smaya#define GEN8_SO_WRITE_OFFSET3_num         0x528c
951010e230b6Smaya#define GEN8_SO_WRITE_OFFSET3_length           1
951110e230b6Smayastruct GEN8_SO_WRITE_OFFSET3 {
951210e230b6Smaya   uint64_t                             WriteOffset;
951310e230b6Smaya};
951410e230b6Smaya
951510e230b6Smayastatic inline void
951610e230b6SmayaGEN8_SO_WRITE_OFFSET3_pack(__attribute__((unused)) __gen_user_data *data,
951710e230b6Smaya                           __attribute__((unused)) void * restrict dst,
951810e230b6Smaya                           __attribute__((unused)) const struct GEN8_SO_WRITE_OFFSET3 * restrict values)
951910e230b6Smaya{
952010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
952110e230b6Smaya
952210e230b6Smaya   dw[0] =
952310e230b6Smaya      __gen_offset(values->WriteOffset, 2, 31);
952410e230b6Smaya}
952510e230b6Smaya
952610e230b6Smaya#define GEN8_VCS2_RING_BUFFER_CTL_num     0x1203c
952710e230b6Smaya#define GEN8_VCS2_RING_BUFFER_CTL_length       1
952810e230b6Smayastruct GEN8_VCS2_RING_BUFFER_CTL {
952910e230b6Smaya   bool                                 RingBufferEnable;
953010e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
953110e230b6Smaya#define MI_AUTOREPORT_OFF                        0
953210e230b6Smaya#define MI_AUTOREPORT_64KB                       1
953310e230b6Smaya#define MI_AUTOREPORT_4KB                        2
953410e230b6Smaya#define MI_AUTOREPORT_128KB                      3
953510e230b6Smaya   bool                                 DisableRegisterAccesses;
953610e230b6Smaya   bool                                 SemaphoreWait;
953710e230b6Smaya   bool                                 RBWait;
953810e230b6Smaya   uint32_t                             BufferLengthinpages1;
953910e230b6Smaya};
954010e230b6Smaya
954110e230b6Smayastatic inline void
954210e230b6SmayaGEN8_VCS2_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
954310e230b6Smaya                               __attribute__((unused)) void * restrict dst,
954410e230b6Smaya                               __attribute__((unused)) const struct GEN8_VCS2_RING_BUFFER_CTL * restrict values)
954510e230b6Smaya{
954610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
954710e230b6Smaya
954810e230b6Smaya   dw[0] =
954910e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
955010e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
955110e230b6Smaya      __gen_uint(values->DisableRegisterAccesses, 8, 8) |
955210e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
955310e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
955410e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
955510e230b6Smaya}
955610e230b6Smaya
955710e230b6Smaya#define GEN8_VCS_ACTHD_UDW_num            0x1205c
955810e230b6Smaya#define GEN8_VCS_ACTHD_UDW_length              1
955910e230b6Smayastruct GEN8_VCS_ACTHD_UDW {
956010e230b6Smaya   uint32_t                             HeadPointerUpperDWORD;
956110e230b6Smaya};
956210e230b6Smaya
956310e230b6Smayastatic inline void
956410e230b6SmayaGEN8_VCS_ACTHD_UDW_pack(__attribute__((unused)) __gen_user_data *data,
956510e230b6Smaya                        __attribute__((unused)) void * restrict dst,
956610e230b6Smaya                        __attribute__((unused)) const struct GEN8_VCS_ACTHD_UDW * restrict values)
956710e230b6Smaya{
956810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
956910e230b6Smaya
957010e230b6Smaya   dw[0] =
957110e230b6Smaya      __gen_uint(values->HeadPointerUpperDWORD, 0, 15);
957210e230b6Smaya}
957310e230b6Smaya
957410e230b6Smaya#define GEN8_VCS_INSTDONE_num             0x1206c
957510e230b6Smaya#define GEN8_VCS_INSTDONE_length               1
957610e230b6Smayastruct GEN8_VCS_INSTDONE {
957710e230b6Smaya   bool                                 RingEnable;
957810e230b6Smaya   bool                                 USBDone;
957910e230b6Smaya   bool                                 QRCDone;
958010e230b6Smaya   bool                                 SECDone;
958110e230b6Smaya   bool                                 MPCDone;
958210e230b6Smaya   bool                                 VFTDone;
958310e230b6Smaya   bool                                 BSPDone;
958410e230b6Smaya   bool                                 VLFDone;
958510e230b6Smaya   bool                                 VOPDone;
958610e230b6Smaya   bool                                 VMCDone;
958710e230b6Smaya   bool                                 VIPDone;
958810e230b6Smaya   bool                                 VITDone;
958910e230b6Smaya   bool                                 VDSDone;
959010e230b6Smaya   bool                                 VMXDone;
959110e230b6Smaya   bool                                 VCPDone;
959210e230b6Smaya   bool                                 VCDDone;
959310e230b6Smaya   bool                                 VADDone;
959410e230b6Smaya   bool                                 VMDDone;
959510e230b6Smaya   bool                                 VISDone;
959610e230b6Smaya   bool                                 VACDone;
959710e230b6Smaya   bool                                 VAMDone;
959810e230b6Smaya   bool                                 JPGDone;
959910e230b6Smaya   bool                                 VBPDone;
960010e230b6Smaya   bool                                 VHRDone;
960110e230b6Smaya   bool                                 VCIDone;
960210e230b6Smaya   bool                                 VCRDone;
960310e230b6Smaya   bool                                 VINDone;
960410e230b6Smaya   bool                                 VPRDone;
960510e230b6Smaya   bool                                 VTQDone;
960610e230b6Smaya   bool                                 Reserved;
960710e230b6Smaya   bool                                 VCSDone;
960810e230b6Smaya   bool                                 GACDone;
960910e230b6Smaya};
961010e230b6Smaya
961110e230b6Smayastatic inline void
961210e230b6SmayaGEN8_VCS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
961310e230b6Smaya                       __attribute__((unused)) void * restrict dst,
961410e230b6Smaya                       __attribute__((unused)) const struct GEN8_VCS_INSTDONE * restrict values)
961510e230b6Smaya{
961610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
961710e230b6Smaya
961810e230b6Smaya   dw[0] =
961910e230b6Smaya      __gen_uint(values->RingEnable, 0, 0) |
962010e230b6Smaya      __gen_uint(values->USBDone, 1, 1) |
962110e230b6Smaya      __gen_uint(values->QRCDone, 2, 2) |
962210e230b6Smaya      __gen_uint(values->SECDone, 3, 3) |
962310e230b6Smaya      __gen_uint(values->MPCDone, 4, 4) |
962410e230b6Smaya      __gen_uint(values->VFTDone, 5, 5) |
962510e230b6Smaya      __gen_uint(values->BSPDone, 6, 6) |
962610e230b6Smaya      __gen_uint(values->VLFDone, 7, 7) |
962710e230b6Smaya      __gen_uint(values->VOPDone, 8, 8) |
962810e230b6Smaya      __gen_uint(values->VMCDone, 9, 9) |
962910e230b6Smaya      __gen_uint(values->VIPDone, 10, 10) |
963010e230b6Smaya      __gen_uint(values->VITDone, 11, 11) |
963110e230b6Smaya      __gen_uint(values->VDSDone, 12, 12) |
963210e230b6Smaya      __gen_uint(values->VMXDone, 13, 13) |
963310e230b6Smaya      __gen_uint(values->VCPDone, 14, 14) |
963410e230b6Smaya      __gen_uint(values->VCDDone, 15, 15) |
963510e230b6Smaya      __gen_uint(values->VADDone, 16, 16) |
963610e230b6Smaya      __gen_uint(values->VMDDone, 17, 17) |
963710e230b6Smaya      __gen_uint(values->VISDone, 18, 18) |
963810e230b6Smaya      __gen_uint(values->VACDone, 19, 19) |
963910e230b6Smaya      __gen_uint(values->VAMDone, 20, 20) |
964010e230b6Smaya      __gen_uint(values->JPGDone, 21, 21) |
964110e230b6Smaya      __gen_uint(values->VBPDone, 22, 22) |
964210e230b6Smaya      __gen_uint(values->VHRDone, 23, 23) |
964310e230b6Smaya      __gen_uint(values->VCIDone, 24, 24) |
964410e230b6Smaya      __gen_uint(values->VCRDone, 25, 25) |
964510e230b6Smaya      __gen_uint(values->VINDone, 26, 26) |
964610e230b6Smaya      __gen_uint(values->VPRDone, 27, 27) |
964710e230b6Smaya      __gen_uint(values->VTQDone, 28, 28) |
964810e230b6Smaya      __gen_uint(values->Reserved, 29, 29) |
964910e230b6Smaya      __gen_uint(values->VCSDone, 30, 30) |
965010e230b6Smaya      __gen_uint(values->GACDone, 31, 31);
965110e230b6Smaya}
965210e230b6Smaya
965310e230b6Smaya#define GEN8_VCS_RING_BUFFER_CTL_num      0x1203c
965410e230b6Smaya#define GEN8_VCS_RING_BUFFER_CTL_length        1
965510e230b6Smayastruct GEN8_VCS_RING_BUFFER_CTL {
965610e230b6Smaya   bool                                 RingBufferEnable;
965710e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
965810e230b6Smaya#define MI_AUTOREPORT_OFF                        0
965910e230b6Smaya#define MI_AUTOREPORT_64KB                       1
966010e230b6Smaya#define MI_AUTOREPORT_4KB                        2
966110e230b6Smaya#define MI_AUTOREPORT_128KB                      3
966210e230b6Smaya   bool                                 DisableRegisterAccesses;
966310e230b6Smaya   bool                                 SemaphoreWait;
966410e230b6Smaya   bool                                 RBWait;
966510e230b6Smaya   uint32_t                             BufferLengthinpages1;
966610e230b6Smaya};
966710e230b6Smaya
966810e230b6Smayastatic inline void
966910e230b6SmayaGEN8_VCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
967010e230b6Smaya                              __attribute__((unused)) void * restrict dst,
967110e230b6Smaya                              __attribute__((unused)) const struct GEN8_VCS_RING_BUFFER_CTL * restrict values)
967210e230b6Smaya{
967310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
967410e230b6Smaya
967510e230b6Smaya   dw[0] =
967610e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
967710e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
967810e230b6Smaya      __gen_uint(values->DisableRegisterAccesses, 8, 8) |
967910e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
968010e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
968110e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
968210e230b6Smaya}
968310e230b6Smaya
968410e230b6Smaya#define GEN8_VECS_ACTHD_UDW_num           0x1a05c
968510e230b6Smaya#define GEN8_VECS_ACTHD_UDW_length             1
968610e230b6Smayastruct GEN8_VECS_ACTHD_UDW {
968710e230b6Smaya   uint32_t                             HeadPointerUpperDWORD;
968810e230b6Smaya};
968910e230b6Smaya
969010e230b6Smayastatic inline void
969110e230b6SmayaGEN8_VECS_ACTHD_UDW_pack(__attribute__((unused)) __gen_user_data *data,
969210e230b6Smaya                         __attribute__((unused)) void * restrict dst,
969310e230b6Smaya                         __attribute__((unused)) const struct GEN8_VECS_ACTHD_UDW * restrict values)
969410e230b6Smaya{
969510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
969610e230b6Smaya
969710e230b6Smaya   dw[0] =
969810e230b6Smaya      __gen_uint(values->HeadPointerUpperDWORD, 0, 15);
969910e230b6Smaya}
970010e230b6Smaya
970110e230b6Smaya#define GEN8_VECS_INSTDONE_num            0x1a06c
970210e230b6Smaya#define GEN8_VECS_INSTDONE_length              1
970310e230b6Smayastruct GEN8_VECS_INSTDONE {
970410e230b6Smaya   bool                                 RingEnable;
970510e230b6Smaya   bool                                 VECSDone;
970610e230b6Smaya   bool                                 GAMDone;
970710e230b6Smaya};
970810e230b6Smaya
970910e230b6Smayastatic inline void
971010e230b6SmayaGEN8_VECS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
971110e230b6Smaya                        __attribute__((unused)) void * restrict dst,
971210e230b6Smaya                        __attribute__((unused)) const struct GEN8_VECS_INSTDONE * restrict values)
971310e230b6Smaya{
971410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
971510e230b6Smaya
971610e230b6Smaya   dw[0] =
971710e230b6Smaya      __gen_uint(values->RingEnable, 0, 0) |
971810e230b6Smaya      __gen_uint(values->VECSDone, 30, 30) |
971910e230b6Smaya      __gen_uint(values->GAMDone, 31, 31);
972010e230b6Smaya}
972110e230b6Smaya
972210e230b6Smaya#define GEN8_VECS_RING_BUFFER_CTL_num     0x1a03c
972310e230b6Smaya#define GEN8_VECS_RING_BUFFER_CTL_length       1
972410e230b6Smayastruct GEN8_VECS_RING_BUFFER_CTL {
972510e230b6Smaya   bool                                 RingBufferEnable;
972610e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
972710e230b6Smaya#define MI_AUTOREPORT_OFF                        0
972810e230b6Smaya#define MI_AUTOREPORT_64KB                       1
972910e230b6Smaya#define MI_AUTOREPORT_4KB                        2
973010e230b6Smaya#define MI_AUTOREPORT_128KB                      3
973110e230b6Smaya   bool                                 DisableRegisterAccesses;
973210e230b6Smaya   bool                                 SemaphoreWait;
973310e230b6Smaya   bool                                 RBWait;
973410e230b6Smaya   uint32_t                             BufferLengthinpages1;
973510e230b6Smaya};
973610e230b6Smaya
973710e230b6Smayastatic inline void
973810e230b6SmayaGEN8_VECS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
973910e230b6Smaya                               __attribute__((unused)) void * restrict dst,
974010e230b6Smaya                               __attribute__((unused)) const struct GEN8_VECS_RING_BUFFER_CTL * restrict values)
974110e230b6Smaya{
974210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
974310e230b6Smaya
974410e230b6Smaya   dw[0] =
974510e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
974610e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
974710e230b6Smaya      __gen_uint(values->DisableRegisterAccesses, 8, 8) |
974810e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
974910e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
975010e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
975110e230b6Smaya}
975210e230b6Smaya
975310e230b6Smaya#define GEN8_VS_INVOCATION_COUNT_num      0x2320
975410e230b6Smaya#define GEN8_VS_INVOCATION_COUNT_length        2
975510e230b6Smayastruct GEN8_VS_INVOCATION_COUNT {
975610e230b6Smaya   uint64_t                             VSInvocationCountReport;
975710e230b6Smaya};
975810e230b6Smaya
975910e230b6Smayastatic inline void
976010e230b6SmayaGEN8_VS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
976110e230b6Smaya                              __attribute__((unused)) void * restrict dst,
976210e230b6Smaya                              __attribute__((unused)) const struct GEN8_VS_INVOCATION_COUNT * restrict values)
976310e230b6Smaya{
976410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
976510e230b6Smaya
976610e230b6Smaya   const uint64_t v0 =
976710e230b6Smaya      __gen_uint(values->VSInvocationCountReport, 0, 63);
976810e230b6Smaya   dw[0] = v0;
976910e230b6Smaya   dw[1] = v0 >> 32;
977010e230b6Smaya}
977110e230b6Smaya
977210e230b6Smaya#endif /* GEN8_PACK_H */
9773