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