gen75_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 HSW. 2610e230b6Smaya * 2710e230b6Smaya * This file has been generated, do not hand edit. 2810e230b6Smaya */ 2910e230b6Smaya 3010e230b6Smaya#ifndef GEN75_PACK_H 3110e230b6Smaya#define GEN75_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 GEN75_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 GEN75_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 GEN75_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 GEN75_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 GEN75_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 GEN75_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 GEN75_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_VID = 5, 30310e230b6Smaya VFCOMP_STORE_IID = 6, 30410e230b6Smaya VFCOMP_STORE_PID = 7, 30510e230b6Smaya}; 30610e230b6Smaya 30710e230b6Smayaenum GEN75_ShaderChannelSelect { 30810e230b6Smaya SCS_ZERO = 0, 30910e230b6Smaya SCS_ONE = 1, 31010e230b6Smaya SCS_RED = 4, 31110e230b6Smaya SCS_GREEN = 5, 31210e230b6Smaya SCS_BLUE = 6, 31310e230b6Smaya SCS_ALPHA = 7, 31410e230b6Smaya}; 31510e230b6Smaya 31610e230b6Smayaenum GEN75_TextureCoordinateMode { 31710e230b6Smaya TCM_WRAP = 0, 31810e230b6Smaya TCM_MIRROR = 1, 31910e230b6Smaya TCM_CLAMP = 2, 32010e230b6Smaya TCM_CUBE = 3, 32110e230b6Smaya TCM_CLAMP_BORDER = 4, 32210e230b6Smaya TCM_MIRROR_ONCE = 5, 32310e230b6Smaya}; 32410e230b6Smaya 32510e230b6Smaya#define GEN75_3DSTATE_CONSTANT_BODY_length 6 32610e230b6Smayastruct GEN75_3DSTATE_CONSTANT_BODY { 32710e230b6Smaya uint32_t ReadLength[4]; 32810e230b6Smaya uint32_t MOCS; 32910e230b6Smaya __gen_address_type Buffer[4]; 33010e230b6Smaya}; 33110e230b6Smaya 33210e230b6Smayastatic inline void 33310e230b6SmayaGEN75_3DSTATE_CONSTANT_BODY_pack(__attribute__((unused)) __gen_user_data *data, 33410e230b6Smaya __attribute__((unused)) void * restrict dst, 33510e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_BODY * restrict values) 33610e230b6Smaya{ 33710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 33810e230b6Smaya 33910e230b6Smaya dw[0] = 34010e230b6Smaya __gen_uint(values->ReadLength[0], 0, 15) | 34110e230b6Smaya __gen_uint(values->ReadLength[1], 16, 31); 34210e230b6Smaya 34310e230b6Smaya dw[1] = 34410e230b6Smaya __gen_uint(values->ReadLength[2], 0, 15) | 34510e230b6Smaya __gen_uint(values->ReadLength[3], 16, 31); 34610e230b6Smaya 34710e230b6Smaya const uint32_t v2 = 34810e230b6Smaya __gen_uint(values->MOCS, 0, 4); 34910e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->Buffer[0], v2); 35010e230b6Smaya 35110e230b6Smaya dw[3] = __gen_combine_address(data, &dw[3], values->Buffer[1], 0); 35210e230b6Smaya 35310e230b6Smaya dw[4] = __gen_combine_address(data, &dw[4], values->Buffer[2], 0); 35410e230b6Smaya 35510e230b6Smaya dw[5] = __gen_combine_address(data, &dw[5], values->Buffer[3], 0); 35610e230b6Smaya} 35710e230b6Smaya 35810e230b6Smaya#define GEN75_BINDING_TABLE_EDIT_ENTRY_length 1 35910e230b6Smayastruct GEN75_BINDING_TABLE_EDIT_ENTRY { 36010e230b6Smaya uint64_t SurfaceStatePointer; 36110e230b6Smaya uint32_t BindingTableIndex; 36210e230b6Smaya}; 36310e230b6Smaya 36410e230b6Smayastatic inline void 36510e230b6SmayaGEN75_BINDING_TABLE_EDIT_ENTRY_pack(__attribute__((unused)) __gen_user_data *data, 36610e230b6Smaya __attribute__((unused)) void * restrict dst, 36710e230b6Smaya __attribute__((unused)) const struct GEN75_BINDING_TABLE_EDIT_ENTRY * restrict values) 36810e230b6Smaya{ 36910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 37010e230b6Smaya 37110e230b6Smaya dw[0] = 37210e230b6Smaya __gen_offset(values->SurfaceStatePointer, 0, 15) | 37310e230b6Smaya __gen_uint(values->BindingTableIndex, 16, 23); 37410e230b6Smaya} 37510e230b6Smaya 37610e230b6Smaya#define GEN75_BINDING_TABLE_STATE_length 1 37710e230b6Smayastruct GEN75_BINDING_TABLE_STATE { 37810e230b6Smaya uint64_t SurfaceStatePointer; 37910e230b6Smaya}; 38010e230b6Smaya 38110e230b6Smayastatic inline void 38210e230b6SmayaGEN75_BINDING_TABLE_STATE_pack(__attribute__((unused)) __gen_user_data *data, 38310e230b6Smaya __attribute__((unused)) void * restrict dst, 38410e230b6Smaya __attribute__((unused)) const struct GEN75_BINDING_TABLE_STATE * restrict values) 38510e230b6Smaya{ 38610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 38710e230b6Smaya 38810e230b6Smaya dw[0] = 38910e230b6Smaya __gen_offset(values->SurfaceStatePointer, 5, 31); 39010e230b6Smaya} 39110e230b6Smaya 39210e230b6Smaya#define GEN75_BLEND_STATE_ENTRY_length 2 39310e230b6Smayastruct GEN75_BLEND_STATE_ENTRY { 39410e230b6Smaya enum GEN75_3D_Color_Buffer_Blend_Factor DestinationBlendFactor; 39510e230b6Smaya enum GEN75_3D_Color_Buffer_Blend_Factor SourceBlendFactor; 39610e230b6Smaya enum GEN75_3D_Color_Buffer_Blend_Function ColorBlendFunction; 39710e230b6Smaya enum GEN75_3D_Color_Buffer_Blend_Factor DestinationAlphaBlendFactor; 39810e230b6Smaya enum GEN75_3D_Color_Buffer_Blend_Factor SourceAlphaBlendFactor; 39910e230b6Smaya enum GEN75_3D_Color_Buffer_Blend_Function AlphaBlendFunction; 40010e230b6Smaya bool IndependentAlphaBlendEnable; 40110e230b6Smaya bool ColorBufferBlendEnable; 40210e230b6Smaya bool PostBlendColorClampEnable; 40310e230b6Smaya bool PreBlendColorClampEnable; 40410e230b6Smaya uint32_t ColorClampRange; 40510e230b6Smaya#define COLORCLAMP_UNORM 0 40610e230b6Smaya#define COLORCLAMP_SNORM 1 40710e230b6Smaya#define COLORCLAMP_RTFORMAT 2 40810e230b6Smaya uint32_t YDitherOffset; 40910e230b6Smaya uint32_t XDitherOffset; 41010e230b6Smaya bool ColorDitherEnable; 41110e230b6Smaya enum GEN75_3D_Compare_Function AlphaTestFunction; 41210e230b6Smaya bool AlphaTestEnable; 41310e230b6Smaya enum GEN75_3D_Logic_Op_Function LogicOpFunction; 41410e230b6Smaya bool LogicOpEnable; 41510e230b6Smaya bool WriteDisableBlue; 41610e230b6Smaya bool WriteDisableGreen; 41710e230b6Smaya bool WriteDisableRed; 41810e230b6Smaya bool WriteDisableAlpha; 41910e230b6Smaya bool AlphaToCoverageDitherEnable; 42010e230b6Smaya bool AlphaToOneEnable; 42110e230b6Smaya bool AlphaToCoverageEnable; 42210e230b6Smaya}; 42310e230b6Smaya 42410e230b6Smayastatic inline void 42510e230b6SmayaGEN75_BLEND_STATE_ENTRY_pack(__attribute__((unused)) __gen_user_data *data, 42610e230b6Smaya __attribute__((unused)) void * restrict dst, 42710e230b6Smaya __attribute__((unused)) const struct GEN75_BLEND_STATE_ENTRY * restrict values) 42810e230b6Smaya{ 42910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 43010e230b6Smaya 43110e230b6Smaya dw[0] = 43210e230b6Smaya __gen_uint(values->DestinationBlendFactor, 0, 4) | 43310e230b6Smaya __gen_uint(values->SourceBlendFactor, 5, 9) | 43410e230b6Smaya __gen_uint(values->ColorBlendFunction, 11, 13) | 43510e230b6Smaya __gen_uint(values->DestinationAlphaBlendFactor, 15, 19) | 43610e230b6Smaya __gen_uint(values->SourceAlphaBlendFactor, 20, 24) | 43710e230b6Smaya __gen_uint(values->AlphaBlendFunction, 26, 28) | 43810e230b6Smaya __gen_uint(values->IndependentAlphaBlendEnable, 30, 30) | 43910e230b6Smaya __gen_uint(values->ColorBufferBlendEnable, 31, 31); 44010e230b6Smaya 44110e230b6Smaya dw[1] = 44210e230b6Smaya __gen_uint(values->PostBlendColorClampEnable, 0, 0) | 44310e230b6Smaya __gen_uint(values->PreBlendColorClampEnable, 1, 1) | 44410e230b6Smaya __gen_uint(values->ColorClampRange, 2, 3) | 44510e230b6Smaya __gen_uint(values->YDitherOffset, 8, 9) | 44610e230b6Smaya __gen_uint(values->XDitherOffset, 10, 11) | 44710e230b6Smaya __gen_uint(values->ColorDitherEnable, 12, 12) | 44810e230b6Smaya __gen_uint(values->AlphaTestFunction, 13, 15) | 44910e230b6Smaya __gen_uint(values->AlphaTestEnable, 16, 16) | 45010e230b6Smaya __gen_uint(values->LogicOpFunction, 18, 21) | 45110e230b6Smaya __gen_uint(values->LogicOpEnable, 22, 22) | 45210e230b6Smaya __gen_uint(values->WriteDisableBlue, 24, 24) | 45310e230b6Smaya __gen_uint(values->WriteDisableGreen, 25, 25) | 45410e230b6Smaya __gen_uint(values->WriteDisableRed, 26, 26) | 45510e230b6Smaya __gen_uint(values->WriteDisableAlpha, 27, 27) | 45610e230b6Smaya __gen_uint(values->AlphaToCoverageDitherEnable, 29, 29) | 45710e230b6Smaya __gen_uint(values->AlphaToOneEnable, 30, 30) | 45810e230b6Smaya __gen_uint(values->AlphaToCoverageEnable, 31, 31); 45910e230b6Smaya} 46010e230b6Smaya 46110e230b6Smaya#define GEN75_BLEND_STATE_length 0 46210e230b6Smayastruct GEN75_BLEND_STATE { 46310e230b6Smaya /* variable length fields follow */ 46410e230b6Smaya}; 46510e230b6Smaya 46610e230b6Smayastatic inline void 46710e230b6SmayaGEN75_BLEND_STATE_pack(__attribute__((unused)) __gen_user_data *data, 46810e230b6Smaya __attribute__((unused)) void * restrict dst, 46910e230b6Smaya __attribute__((unused)) const struct GEN75_BLEND_STATE * restrict values) 47010e230b6Smaya{ 47110e230b6Smaya} 47210e230b6Smaya 47310e230b6Smaya#define GEN75_CC_VIEWPORT_length 2 47410e230b6Smayastruct GEN75_CC_VIEWPORT { 47510e230b6Smaya float MinimumDepth; 47610e230b6Smaya float MaximumDepth; 47710e230b6Smaya}; 47810e230b6Smaya 47910e230b6Smayastatic inline void 48010e230b6SmayaGEN75_CC_VIEWPORT_pack(__attribute__((unused)) __gen_user_data *data, 48110e230b6Smaya __attribute__((unused)) void * restrict dst, 48210e230b6Smaya __attribute__((unused)) const struct GEN75_CC_VIEWPORT * restrict values) 48310e230b6Smaya{ 48410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 48510e230b6Smaya 48610e230b6Smaya dw[0] = 48710e230b6Smaya __gen_float(values->MinimumDepth); 48810e230b6Smaya 48910e230b6Smaya dw[1] = 49010e230b6Smaya __gen_float(values->MaximumDepth); 49110e230b6Smaya} 49210e230b6Smaya 49310e230b6Smaya#define GEN75_COLOR_CALC_STATE_length 6 49410e230b6Smayastruct GEN75_COLOR_CALC_STATE { 49510e230b6Smaya uint32_t AlphaTestFormat; 49610e230b6Smaya#define ALPHATEST_UNORM8 0 49710e230b6Smaya#define ALPHATEST_FLOAT32 1 49810e230b6Smaya bool RoundDisableFunctionDisable; 49910e230b6Smaya uint32_t BackfaceStencilReferenceValue; 50010e230b6Smaya uint32_t StencilReferenceValue; 50110e230b6Smaya uint32_t AlphaReferenceValueAsUNORM8; 50210e230b6Smaya float AlphaReferenceValueAsFLOAT32; 50310e230b6Smaya float BlendConstantColorRed; 50410e230b6Smaya float BlendConstantColorGreen; 50510e230b6Smaya float BlendConstantColorBlue; 50610e230b6Smaya float BlendConstantColorAlpha; 50710e230b6Smaya}; 50810e230b6Smaya 50910e230b6Smayastatic inline void 51010e230b6SmayaGEN75_COLOR_CALC_STATE_pack(__attribute__((unused)) __gen_user_data *data, 51110e230b6Smaya __attribute__((unused)) void * restrict dst, 51210e230b6Smaya __attribute__((unused)) const struct GEN75_COLOR_CALC_STATE * restrict values) 51310e230b6Smaya{ 51410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 51510e230b6Smaya 51610e230b6Smaya dw[0] = 51710e230b6Smaya __gen_uint(values->AlphaTestFormat, 0, 0) | 51810e230b6Smaya __gen_uint(values->RoundDisableFunctionDisable, 15, 15) | 51910e230b6Smaya __gen_uint(values->BackfaceStencilReferenceValue, 16, 23) | 52010e230b6Smaya __gen_uint(values->StencilReferenceValue, 24, 31); 52110e230b6Smaya 52210e230b6Smaya dw[1] = 52310e230b6Smaya __gen_uint(values->AlphaReferenceValueAsUNORM8, 0, 31) | 52410e230b6Smaya __gen_float(values->AlphaReferenceValueAsFLOAT32); 52510e230b6Smaya 52610e230b6Smaya dw[2] = 52710e230b6Smaya __gen_float(values->BlendConstantColorRed); 52810e230b6Smaya 52910e230b6Smaya dw[3] = 53010e230b6Smaya __gen_float(values->BlendConstantColorGreen); 53110e230b6Smaya 53210e230b6Smaya dw[4] = 53310e230b6Smaya __gen_float(values->BlendConstantColorBlue); 53410e230b6Smaya 53510e230b6Smaya dw[5] = 53610e230b6Smaya __gen_float(values->BlendConstantColorAlpha); 53710e230b6Smaya} 53810e230b6Smaya 53910e230b6Smaya#define GEN75_DEPTH_STENCIL_STATE_length 3 54010e230b6Smayastruct GEN75_DEPTH_STENCIL_STATE { 54110e230b6Smaya enum GEN75_3D_Stencil_Operation BackfaceStencilPassDepthPassOp; 54210e230b6Smaya enum GEN75_3D_Stencil_Operation BackfaceStencilPassDepthFailOp; 54310e230b6Smaya enum GEN75_3D_Stencil_Operation BackfaceStencilFailOp; 54410e230b6Smaya enum GEN75_3D_Compare_Function BackfaceStencilTestFunction; 54510e230b6Smaya bool DoubleSidedStencilEnable; 54610e230b6Smaya bool StencilBufferWriteEnable; 54710e230b6Smaya enum GEN75_3D_Stencil_Operation StencilPassDepthPassOp; 54810e230b6Smaya enum GEN75_3D_Stencil_Operation StencilPassDepthFailOp; 54910e230b6Smaya enum GEN75_3D_Stencil_Operation StencilFailOp; 55010e230b6Smaya enum GEN75_3D_Compare_Function StencilTestFunction; 55110e230b6Smaya bool StencilTestEnable; 55210e230b6Smaya uint32_t BackfaceStencilWriteMask; 55310e230b6Smaya uint32_t BackfaceStencilTestMask; 55410e230b6Smaya uint32_t StencilWriteMask; 55510e230b6Smaya uint32_t StencilTestMask; 55610e230b6Smaya bool DepthBufferWriteEnable; 55710e230b6Smaya enum GEN75_3D_Compare_Function DepthTestFunction; 55810e230b6Smaya bool DepthTestEnable; 55910e230b6Smaya}; 56010e230b6Smaya 56110e230b6Smayastatic inline void 56210e230b6SmayaGEN75_DEPTH_STENCIL_STATE_pack(__attribute__((unused)) __gen_user_data *data, 56310e230b6Smaya __attribute__((unused)) void * restrict dst, 56410e230b6Smaya __attribute__((unused)) const struct GEN75_DEPTH_STENCIL_STATE * restrict values) 56510e230b6Smaya{ 56610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 56710e230b6Smaya 56810e230b6Smaya dw[0] = 56910e230b6Smaya __gen_uint(values->BackfaceStencilPassDepthPassOp, 3, 5) | 57010e230b6Smaya __gen_uint(values->BackfaceStencilPassDepthFailOp, 6, 8) | 57110e230b6Smaya __gen_uint(values->BackfaceStencilFailOp, 9, 11) | 57210e230b6Smaya __gen_uint(values->BackfaceStencilTestFunction, 12, 14) | 57310e230b6Smaya __gen_uint(values->DoubleSidedStencilEnable, 15, 15) | 57410e230b6Smaya __gen_uint(values->StencilBufferWriteEnable, 18, 18) | 57510e230b6Smaya __gen_uint(values->StencilPassDepthPassOp, 19, 21) | 57610e230b6Smaya __gen_uint(values->StencilPassDepthFailOp, 22, 24) | 57710e230b6Smaya __gen_uint(values->StencilFailOp, 25, 27) | 57810e230b6Smaya __gen_uint(values->StencilTestFunction, 28, 30) | 57910e230b6Smaya __gen_uint(values->StencilTestEnable, 31, 31); 58010e230b6Smaya 58110e230b6Smaya dw[1] = 58210e230b6Smaya __gen_uint(values->BackfaceStencilWriteMask, 0, 7) | 58310e230b6Smaya __gen_uint(values->BackfaceStencilTestMask, 8, 15) | 58410e230b6Smaya __gen_uint(values->StencilWriteMask, 16, 23) | 58510e230b6Smaya __gen_uint(values->StencilTestMask, 24, 31); 58610e230b6Smaya 58710e230b6Smaya dw[2] = 58810e230b6Smaya __gen_uint(values->DepthBufferWriteEnable, 26, 26) | 58910e230b6Smaya __gen_uint(values->DepthTestFunction, 27, 29) | 59010e230b6Smaya __gen_uint(values->DepthTestEnable, 31, 31); 59110e230b6Smaya} 59210e230b6Smaya 59310e230b6Smaya#define GEN75_GATHER_CONSTANT_ENTRY_length 1 59410e230b6Smayastruct GEN75_GATHER_CONSTANT_ENTRY { 59510e230b6Smaya uint32_t BindingTableIndexOffset; 59610e230b6Smaya uint32_t ChannelMask; 59710e230b6Smaya uint64_t ConstantBufferOffset; 59810e230b6Smaya}; 59910e230b6Smaya 60010e230b6Smayastatic inline void 60110e230b6SmayaGEN75_GATHER_CONSTANT_ENTRY_pack(__attribute__((unused)) __gen_user_data *data, 60210e230b6Smaya __attribute__((unused)) void * restrict dst, 60310e230b6Smaya __attribute__((unused)) const struct GEN75_GATHER_CONSTANT_ENTRY * restrict values) 60410e230b6Smaya{ 60510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 60610e230b6Smaya 60710e230b6Smaya dw[0] = 60810e230b6Smaya __gen_uint(values->BindingTableIndexOffset, 0, 3) | 60910e230b6Smaya __gen_uint(values->ChannelMask, 4, 7) | 61010e230b6Smaya __gen_offset(values->ConstantBufferOffset, 8, 15); 61110e230b6Smaya} 61210e230b6Smaya 61310e230b6Smaya#define GEN75_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT_length 3 61410e230b6Smayastruct GEN75_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT { 61510e230b6Smaya bool MBErrorConcealmentPSliceWeightPredictionDisable; 61610e230b6Smaya bool MBErrorConcealmentPSliceMotionVectorsOverrideDisable; 61710e230b6Smaya bool MBErrorConcealmentBSpatialWeightPredictionDisable; 61810e230b6Smaya bool MBErrorConcealmentBSpatialMotionVectorsOverrideDisable; 61910e230b6Smaya uint32_t MBErrorConcealmentBSpatialPredictionMode; 62010e230b6Smaya bool MBHeaderErrorHandling; 62110e230b6Smaya bool EntropyErrorHandling; 62210e230b6Smaya bool MPRErrorHandling; 62310e230b6Smaya bool BSDPrematureCompleteErrorHandling; 62410e230b6Smaya uint32_t ConcealmentPictureID; 62510e230b6Smaya bool MBErrorConcealmentBTemporalWeightPredictionDisable; 62610e230b6Smaya bool MBErrorConcealmentBTemporalMotionVectorsOverrideEnable; 62710e230b6Smaya uint32_t MBErrorConcealmentBTemporalPredictionMode; 62810e230b6Smaya bool IntraPredMode4x48x8LumaErrorControl; 62910e230b6Smaya uint32_t InitCurrentMBNumber; 63010e230b6Smaya uint32_t ConcealmentMethod; 63110e230b6Smaya uint32_t FirstMBBitOffset; 63210e230b6Smaya bool LastSlice; 63310e230b6Smaya bool EmulationPreventionBytePresent; 63410e230b6Smaya bool FixPrevMBSkipped; 63510e230b6Smaya uint32_t FirstMBByteOffsetofSliceDataorSliceHeader; 63610e230b6Smaya bool IntraPredictionErrorControl; 63710e230b6Smaya bool Intra8x84x4PredictionErrorConcealmentControl; 63810e230b6Smaya uint32_t BSliceTemporalInterConcealmentMode; 63910e230b6Smaya uint32_t BSliceSpatialInterConcealmentMode; 64010e230b6Smaya uint32_t BSliceInterDirectTypeConcealmentMode; 64110e230b6Smaya uint32_t BSliceConcealmentMode; 64210e230b6Smaya#define IntraConcealment 1 64310e230b6Smaya#define InterConcealment 0 64410e230b6Smaya uint32_t PSliceInterConcealmentMode; 64510e230b6Smaya uint32_t PSliceConcealmentMode; 64610e230b6Smaya#define IntraConcealment 1 64710e230b6Smaya#define InterConcealment 0 64810e230b6Smaya uint32_t ConcealmentReferencePictureFieldBit; 64910e230b6Smaya uint32_t ISliceConcealmentMode; 65010e230b6Smaya#define IntraConcealment 1 65110e230b6Smaya#define InterConcealment 0 65210e230b6Smaya}; 65310e230b6Smaya 65410e230b6Smayastatic inline void 65510e230b6SmayaGEN75_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT_pack(__attribute__((unused)) __gen_user_data *data, 65610e230b6Smaya __attribute__((unused)) void * restrict dst, 65710e230b6Smaya __attribute__((unused)) const struct GEN75_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT * restrict values) 65810e230b6Smaya{ 65910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 66010e230b6Smaya 66110e230b6Smaya dw[0] = 66210e230b6Smaya __gen_uint(values->MBErrorConcealmentPSliceWeightPredictionDisable, 0, 0) | 66310e230b6Smaya __gen_uint(values->MBErrorConcealmentPSliceMotionVectorsOverrideDisable, 1, 1) | 66410e230b6Smaya __gen_uint(values->MBErrorConcealmentBSpatialWeightPredictionDisable, 3, 3) | 66510e230b6Smaya __gen_uint(values->MBErrorConcealmentBSpatialMotionVectorsOverrideDisable, 4, 4) | 66610e230b6Smaya __gen_uint(values->MBErrorConcealmentBSpatialPredictionMode, 6, 7) | 66710e230b6Smaya __gen_uint(values->MBHeaderErrorHandling, 8, 8) | 66810e230b6Smaya __gen_uint(values->EntropyErrorHandling, 10, 10) | 66910e230b6Smaya __gen_uint(values->MPRErrorHandling, 12, 12) | 67010e230b6Smaya __gen_uint(values->BSDPrematureCompleteErrorHandling, 14, 14) | 67110e230b6Smaya __gen_uint(values->ConcealmentPictureID, 16, 21) | 67210e230b6Smaya __gen_uint(values->MBErrorConcealmentBTemporalWeightPredictionDisable, 24, 24) | 67310e230b6Smaya __gen_uint(values->MBErrorConcealmentBTemporalMotionVectorsOverrideEnable, 25, 25) | 67410e230b6Smaya __gen_uint(values->MBErrorConcealmentBTemporalPredictionMode, 27, 28) | 67510e230b6Smaya __gen_uint(values->IntraPredMode4x48x8LumaErrorControl, 29, 29) | 67610e230b6Smaya __gen_uint(values->InitCurrentMBNumber, 30, 30) | 67710e230b6Smaya __gen_uint(values->ConcealmentMethod, 31, 31); 67810e230b6Smaya 67910e230b6Smaya dw[1] = 68010e230b6Smaya __gen_uint(values->FirstMBBitOffset, 0, 2) | 68110e230b6Smaya __gen_uint(values->LastSlice, 3, 3) | 68210e230b6Smaya __gen_uint(values->EmulationPreventionBytePresent, 4, 4) | 68310e230b6Smaya __gen_uint(values->FixPrevMBSkipped, 7, 7) | 68410e230b6Smaya __gen_uint(values->FirstMBByteOffsetofSliceDataorSliceHeader, 16, 31); 68510e230b6Smaya 68610e230b6Smaya dw[2] = 68710e230b6Smaya __gen_uint(values->IntraPredictionErrorControl, 0, 0) | 68810e230b6Smaya __gen_uint(values->Intra8x84x4PredictionErrorConcealmentControl, 1, 1) | 68910e230b6Smaya __gen_uint(values->BSliceTemporalInterConcealmentMode, 4, 6) | 69010e230b6Smaya __gen_uint(values->BSliceSpatialInterConcealmentMode, 8, 10) | 69110e230b6Smaya __gen_uint(values->BSliceInterDirectTypeConcealmentMode, 12, 13) | 69210e230b6Smaya __gen_uint(values->BSliceConcealmentMode, 15, 15) | 69310e230b6Smaya __gen_uint(values->PSliceInterConcealmentMode, 16, 18) | 69410e230b6Smaya __gen_uint(values->PSliceConcealmentMode, 23, 23) | 69510e230b6Smaya __gen_uint(values->ConcealmentReferencePictureFieldBit, 24, 29) | 69610e230b6Smaya __gen_uint(values->ISliceConcealmentMode, 31, 31); 69710e230b6Smaya} 69810e230b6Smaya 69910e230b6Smaya#define GEN75_INTERFACE_DESCRIPTOR_DATA_length 8 70010e230b6Smayastruct GEN75_INTERFACE_DESCRIPTOR_DATA { 70110e230b6Smaya uint64_t KernelStartPointer; 70210e230b6Smaya bool SoftwareExceptionEnable; 70310e230b6Smaya bool MaskStackExceptionEnable; 70410e230b6Smaya bool IllegalOpcodeExceptionEnable; 70510e230b6Smaya uint32_t FloatingPointMode; 70610e230b6Smaya#define IEEE754 0 70710e230b6Smaya#define Alternate 1 70810e230b6Smaya uint32_t ThreadPriority; 70910e230b6Smaya#define NormalPriority 0 71010e230b6Smaya#define HighPriority 1 71110e230b6Smaya bool SingleProgramFlow; 71210e230b6Smaya uint32_t SamplerCount; 71310e230b6Smaya#define Nosamplersused 0 71410e230b6Smaya#define Between1and4samplersused 1 71510e230b6Smaya#define Between5and8samplersused 2 71610e230b6Smaya#define Between9and12samplersused 3 71710e230b6Smaya#define Between13and16samplersused 4 71810e230b6Smaya uint64_t SamplerStatePointer; 71910e230b6Smaya uint32_t BindingTableEntryCount; 72010e230b6Smaya uint64_t BindingTablePointer; 72110e230b6Smaya uint32_t ConstantURBEntryReadLength; 72210e230b6Smaya uint32_t NumberofThreadsinGPGPUThreadGroup; 72310e230b6Smaya uint32_t SharedLocalMemorySize; 72410e230b6Smaya bool BarrierEnable; 72510e230b6Smaya uint32_t RoundingMode; 72610e230b6Smaya#define RTNE 0 72710e230b6Smaya#define RU 1 72810e230b6Smaya#define RD 2 72910e230b6Smaya#define RTZ 3 73010e230b6Smaya uint32_t CrossThreadConstantDataReadLength; 73110e230b6Smaya}; 73210e230b6Smaya 73310e230b6Smayastatic inline void 73410e230b6SmayaGEN75_INTERFACE_DESCRIPTOR_DATA_pack(__attribute__((unused)) __gen_user_data *data, 73510e230b6Smaya __attribute__((unused)) void * restrict dst, 73610e230b6Smaya __attribute__((unused)) const struct GEN75_INTERFACE_DESCRIPTOR_DATA * restrict values) 73710e230b6Smaya{ 73810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 73910e230b6Smaya 74010e230b6Smaya dw[0] = 74110e230b6Smaya __gen_offset(values->KernelStartPointer, 6, 31); 74210e230b6Smaya 74310e230b6Smaya dw[1] = 74410e230b6Smaya __gen_uint(values->SoftwareExceptionEnable, 7, 7) | 74510e230b6Smaya __gen_uint(values->MaskStackExceptionEnable, 11, 11) | 74610e230b6Smaya __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) | 74710e230b6Smaya __gen_uint(values->FloatingPointMode, 16, 16) | 74810e230b6Smaya __gen_uint(values->ThreadPriority, 17, 17) | 74910e230b6Smaya __gen_uint(values->SingleProgramFlow, 18, 18); 75010e230b6Smaya 75110e230b6Smaya dw[2] = 75210e230b6Smaya __gen_uint(values->SamplerCount, 2, 4) | 75310e230b6Smaya __gen_offset(values->SamplerStatePointer, 5, 31); 75410e230b6Smaya 75510e230b6Smaya dw[3] = 75610e230b6Smaya __gen_uint(values->BindingTableEntryCount, 0, 4) | 75710e230b6Smaya __gen_offset(values->BindingTablePointer, 5, 15); 75810e230b6Smaya 75910e230b6Smaya dw[4] = 76010e230b6Smaya __gen_uint(values->ConstantURBEntryReadLength, 16, 31); 76110e230b6Smaya 76210e230b6Smaya dw[5] = 76310e230b6Smaya __gen_uint(values->NumberofThreadsinGPGPUThreadGroup, 0, 7) | 76410e230b6Smaya __gen_uint(values->SharedLocalMemorySize, 16, 20) | 76510e230b6Smaya __gen_uint(values->BarrierEnable, 21, 21) | 76610e230b6Smaya __gen_uint(values->RoundingMode, 22, 23); 76710e230b6Smaya 76810e230b6Smaya dw[6] = 76910e230b6Smaya __gen_uint(values->CrossThreadConstantDataReadLength, 0, 7); 77010e230b6Smaya 77110e230b6Smaya dw[7] = 0; 77210e230b6Smaya} 77310e230b6Smaya 77410e230b6Smaya#define GEN75_MEMORY_OBJECT_CONTROL_STATE_length 1 77510e230b6Smayastruct GEN75_MEMORY_OBJECT_CONTROL_STATE { 77610e230b6Smaya uint32_t L3CacheabilityControlL3CC; 77710e230b6Smaya uint32_t LLCeLLCCacheabilityControlLLCCC; 77810e230b6Smaya}; 77910e230b6Smaya 78010e230b6Smayastatic inline void 78110e230b6SmayaGEN75_MEMORY_OBJECT_CONTROL_STATE_pack(__attribute__((unused)) __gen_user_data *data, 78210e230b6Smaya __attribute__((unused)) void * restrict dst, 78310e230b6Smaya __attribute__((unused)) const struct GEN75_MEMORY_OBJECT_CONTROL_STATE * restrict values) 78410e230b6Smaya{ 78510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 78610e230b6Smaya 78710e230b6Smaya dw[0] = 78810e230b6Smaya __gen_uint(values->L3CacheabilityControlL3CC, 0, 0) | 78910e230b6Smaya __gen_uint(values->LLCeLLCCacheabilityControlLLCCC, 1, 2); 79010e230b6Smaya} 79110e230b6Smaya 79210e230b6Smaya#define GEN75_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION_length 2 79310e230b6Smayastruct GEN75_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION { 79410e230b6Smaya uint32_t FirstMBBitOffset; 79510e230b6Smaya bool LastMB; 79610e230b6Smaya bool LastPicSlice; 79710e230b6Smaya uint32_t SliceConcealmentType; 79810e230b6Smaya uint32_t SliceConcealmentOverride; 79910e230b6Smaya uint32_t MBCount; 80010e230b6Smaya uint32_t SliceVerticalPosition; 80110e230b6Smaya uint32_t SliceHorizontalPosition; 80210e230b6Smaya uint32_t NextSliceHorizontalPosition; 80310e230b6Smaya uint32_t NextSliceVerticalPosition; 80410e230b6Smaya uint32_t QuantizerScaleCode; 80510e230b6Smaya}; 80610e230b6Smaya 80710e230b6Smayastatic inline void 80810e230b6SmayaGEN75_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION_pack(__attribute__((unused)) __gen_user_data *data, 80910e230b6Smaya __attribute__((unused)) void * restrict dst, 81010e230b6Smaya __attribute__((unused)) const struct GEN75_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION * restrict values) 81110e230b6Smaya{ 81210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 81310e230b6Smaya 81410e230b6Smaya dw[0] = 81510e230b6Smaya __gen_uint(values->FirstMBBitOffset, 0, 2) | 81610e230b6Smaya __gen_uint(values->LastMB, 3, 3) | 81710e230b6Smaya __gen_uint(values->LastPicSlice, 5, 5) | 81810e230b6Smaya __gen_uint(values->SliceConcealmentType, 6, 6) | 81910e230b6Smaya __gen_uint(values->SliceConcealmentOverride, 7, 7) | 82010e230b6Smaya __gen_uint(values->MBCount, 8, 15) | 82110e230b6Smaya __gen_uint(values->SliceVerticalPosition, 16, 23) | 82210e230b6Smaya __gen_uint(values->SliceHorizontalPosition, 24, 31); 82310e230b6Smaya 82410e230b6Smaya dw[1] = 82510e230b6Smaya __gen_uint(values->NextSliceHorizontalPosition, 0, 7) | 82610e230b6Smaya __gen_uint(values->NextSliceVerticalPosition, 8, 16) | 82710e230b6Smaya __gen_uint(values->QuantizerScaleCode, 24, 28); 82810e230b6Smaya} 82910e230b6Smaya 83010e230b6Smaya#define GEN75_MI_MATH_ALU_INSTRUCTION_length 1 83110e230b6Smayastruct GEN75_MI_MATH_ALU_INSTRUCTION { 83210e230b6Smaya uint32_t Operand2; 83310e230b6Smaya#define MI_ALU_REG0 0 83410e230b6Smaya#define MI_ALU_REG1 1 83510e230b6Smaya#define MI_ALU_REG2 2 83610e230b6Smaya#define MI_ALU_REG3 3 83710e230b6Smaya#define MI_ALU_REG4 4 83810e230b6Smaya#define MI_ALU_REG5 5 83910e230b6Smaya#define MI_ALU_REG6 6 84010e230b6Smaya#define MI_ALU_REG7 7 84110e230b6Smaya#define MI_ALU_REG8 8 84210e230b6Smaya#define MI_ALU_REG9 9 84310e230b6Smaya#define MI_ALU_REG10 10 84410e230b6Smaya#define MI_ALU_REG11 11 84510e230b6Smaya#define MI_ALU_REG12 12 84610e230b6Smaya#define MI_ALU_REG13 13 84710e230b6Smaya#define MI_ALU_REG14 14 84810e230b6Smaya#define MI_ALU_REG15 15 84910e230b6Smaya#define MI_ALU_SRCA 32 85010e230b6Smaya#define MI_ALU_SRCB 33 85110e230b6Smaya#define MI_ALU_ACCU 49 85210e230b6Smaya#define MI_ALU_ZF 50 85310e230b6Smaya#define MI_ALU_CF 51 85410e230b6Smaya uint32_t Operand1; 85510e230b6Smaya#define MI_ALU_REG0 0 85610e230b6Smaya#define MI_ALU_REG1 1 85710e230b6Smaya#define MI_ALU_REG2 2 85810e230b6Smaya#define MI_ALU_REG3 3 85910e230b6Smaya#define MI_ALU_REG4 4 86010e230b6Smaya#define MI_ALU_REG5 5 86110e230b6Smaya#define MI_ALU_REG6 6 86210e230b6Smaya#define MI_ALU_REG7 7 86310e230b6Smaya#define MI_ALU_REG8 8 86410e230b6Smaya#define MI_ALU_REG9 9 86510e230b6Smaya#define MI_ALU_REG10 10 86610e230b6Smaya#define MI_ALU_REG11 11 86710e230b6Smaya#define MI_ALU_REG12 12 86810e230b6Smaya#define MI_ALU_REG13 13 86910e230b6Smaya#define MI_ALU_REG14 14 87010e230b6Smaya#define MI_ALU_REG15 15 87110e230b6Smaya#define MI_ALU_SRCA 32 87210e230b6Smaya#define MI_ALU_SRCB 33 87310e230b6Smaya#define MI_ALU_ACCU 49 87410e230b6Smaya#define MI_ALU_ZF 50 87510e230b6Smaya#define MI_ALU_CF 51 87610e230b6Smaya uint32_t ALUOpcode; 87710e230b6Smaya#define MI_ALU_NOOP 0 87810e230b6Smaya#define MI_ALU_LOAD 128 87910e230b6Smaya#define MI_ALU_LOADINV 1152 88010e230b6Smaya#define MI_ALU_LOAD0 129 88110e230b6Smaya#define MI_ALU_LOAD1 1153 88210e230b6Smaya#define MI_ALU_ADD 256 88310e230b6Smaya#define MI_ALU_SUB 257 88410e230b6Smaya#define MI_ALU_AND 258 88510e230b6Smaya#define MI_ALU_OR 259 88610e230b6Smaya#define MI_ALU_XOR 260 88710e230b6Smaya#define MI_ALU_STORE 384 88810e230b6Smaya#define MI_ALU_STOREINV 1408 88910e230b6Smaya}; 89010e230b6Smaya 89110e230b6Smayastatic inline void 89210e230b6SmayaGEN75_MI_MATH_ALU_INSTRUCTION_pack(__attribute__((unused)) __gen_user_data *data, 89310e230b6Smaya __attribute__((unused)) void * restrict dst, 89410e230b6Smaya __attribute__((unused)) const struct GEN75_MI_MATH_ALU_INSTRUCTION * restrict values) 89510e230b6Smaya{ 89610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 89710e230b6Smaya 89810e230b6Smaya dw[0] = 89910e230b6Smaya __gen_uint(values->Operand2, 0, 9) | 90010e230b6Smaya __gen_uint(values->Operand1, 10, 19) | 90110e230b6Smaya __gen_uint(values->ALUOpcode, 20, 31); 90210e230b6Smaya} 90310e230b6Smaya 90410e230b6Smaya#define GEN75_PALETTE_ENTRY_length 1 90510e230b6Smayastruct GEN75_PALETTE_ENTRY { 90610e230b6Smaya uint32_t Blue; 90710e230b6Smaya uint32_t Green; 90810e230b6Smaya uint32_t Red; 90910e230b6Smaya uint32_t Alpha; 91010e230b6Smaya}; 91110e230b6Smaya 91210e230b6Smayastatic inline void 91310e230b6SmayaGEN75_PALETTE_ENTRY_pack(__attribute__((unused)) __gen_user_data *data, 91410e230b6Smaya __attribute__((unused)) void * restrict dst, 91510e230b6Smaya __attribute__((unused)) const struct GEN75_PALETTE_ENTRY * restrict values) 91610e230b6Smaya{ 91710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 91810e230b6Smaya 91910e230b6Smaya dw[0] = 92010e230b6Smaya __gen_uint(values->Blue, 0, 7) | 92110e230b6Smaya __gen_uint(values->Green, 8, 15) | 92210e230b6Smaya __gen_uint(values->Red, 16, 23) | 92310e230b6Smaya __gen_uint(values->Alpha, 24, 31); 92410e230b6Smaya} 92510e230b6Smaya 92610e230b6Smaya#define GEN75_RENDER_SURFACE_STATE_length 8 92710e230b6Smayastruct GEN75_RENDER_SURFACE_STATE { 92810e230b6Smaya bool CubeFaceEnablePositiveZ; 92910e230b6Smaya bool CubeFaceEnableNegativeZ; 93010e230b6Smaya bool CubeFaceEnablePositiveY; 93110e230b6Smaya bool CubeFaceEnableNegativeY; 93210e230b6Smaya bool CubeFaceEnablePositiveX; 93310e230b6Smaya bool CubeFaceEnableNegativeX; 93410e230b6Smaya uint32_t MediaBoundaryPixelMode; 93510e230b6Smaya#define NORMAL_MODE 0 93610e230b6Smaya#define PROGRESSIVE_FRAME 2 93710e230b6Smaya#define INTERLACED_FRAME 3 93810e230b6Smaya uint32_t RenderCacheReadWriteMode; 93910e230b6Smaya uint32_t SurfaceArraySpacing; 94010e230b6Smaya#define ARYSPC_FULL 0 94110e230b6Smaya#define ARYSPC_LOD0 1 94210e230b6Smaya uint32_t VerticalLineStrideOffset; 94310e230b6Smaya uint32_t VerticalLineStride; 94410e230b6Smaya uint32_t TileWalk; 94510e230b6Smaya#define TILEWALK_XMAJOR 0 94610e230b6Smaya#define TILEWALK_YMAJOR 1 94710e230b6Smaya bool TiledSurface; 94810e230b6Smaya uint32_t SurfaceHorizontalAlignment; 94910e230b6Smaya#define HALIGN_4 0 95010e230b6Smaya#define HALIGN_8 1 95110e230b6Smaya uint32_t SurfaceVerticalAlignment; 95210e230b6Smaya#define VALIGN_2 0 95310e230b6Smaya#define VALIGN_4 1 95410e230b6Smaya uint32_t SurfaceFormat; 95510e230b6Smaya bool SurfaceArray; 95610e230b6Smaya uint32_t SurfaceType; 95710e230b6Smaya#define SURFTYPE_1D 0 95810e230b6Smaya#define SURFTYPE_2D 1 95910e230b6Smaya#define SURFTYPE_3D 2 96010e230b6Smaya#define SURFTYPE_CUBE 3 96110e230b6Smaya#define SURFTYPE_BUFFER 4 96210e230b6Smaya#define SURFTYPE_STRBUF 5 96310e230b6Smaya#define SURFTYPE_NULL 7 96410e230b6Smaya __gen_address_type SurfaceBaseAddress; 96510e230b6Smaya uint32_t Width; 96610e230b6Smaya uint32_t Height; 96710e230b6Smaya uint32_t SurfacePitch; 96810e230b6Smaya uint32_t IntegerSurfaceFormat; 96910e230b6Smaya uint32_t Depth; 97010e230b6Smaya uint32_t MultisamplePositionPaletteIndex; 97110e230b6Smaya uint32_t StrbufMinimumArrayElement; 97210e230b6Smaya uint32_t NumberofMultisamples; 97310e230b6Smaya#define MULTISAMPLECOUNT_1 0 97410e230b6Smaya#define MULTISAMPLECOUNT_4 2 97510e230b6Smaya#define MULTISAMPLECOUNT_8 3 97610e230b6Smaya uint32_t MultisampledSurfaceStorageFormat; 97710e230b6Smaya#define MSFMT_MSS 0 97810e230b6Smaya#define MSFMT_DEPTH_STENCIL 1 97910e230b6Smaya uint32_t RenderTargetViewExtent; 98010e230b6Smaya uint32_t MinimumArrayElement; 98110e230b6Smaya uint32_t RenderTargetRotation; 98210e230b6Smaya#define RTROTATE_0DEG 0 98310e230b6Smaya#define RTROTATE_90DEG 1 98410e230b6Smaya#define RTROTATE_270DEG 3 98510e230b6Smaya uint32_t MIPCountLOD; 98610e230b6Smaya uint32_t SurfaceMinLOD; 98710e230b6Smaya uint32_t MOCS; 98810e230b6Smaya uint32_t YOffset; 98910e230b6Smaya uint32_t XOffset; 99010e230b6Smaya bool MCSEnable; 99110e230b6Smaya uint32_t YOffsetforUVPlane; 99210e230b6Smaya bool AppendCounterEnable; 99310e230b6Smaya uint32_t AuxiliarySurfacePitch; 99410e230b6Smaya __gen_address_type AppendCounterAddress; 99510e230b6Smaya __gen_address_type AuxiliarySurfaceBaseAddress; 99610e230b6Smaya uint32_t XOffsetforUVPlane; 99710e230b6Smaya uint32_t ReservedMBZ; 99810e230b6Smaya float ResourceMinLOD; 99910e230b6Smaya enum GEN75_ShaderChannelSelect ShaderChannelSelectAlpha; 100010e230b6Smaya enum GEN75_ShaderChannelSelect ShaderChannelSelectBlue; 100110e230b6Smaya enum GEN75_ShaderChannelSelect ShaderChannelSelectGreen; 100210e230b6Smaya enum GEN75_ShaderChannelSelect ShaderChannelSelectRed; 100310e230b6Smaya uint32_t AlphaClearColor; 100410e230b6Smaya uint32_t BlueClearColor; 100510e230b6Smaya uint32_t GreenClearColor; 100610e230b6Smaya uint32_t RedClearColor; 100710e230b6Smaya}; 100810e230b6Smaya 100910e230b6Smayastatic inline void 101010e230b6SmayaGEN75_RENDER_SURFACE_STATE_pack(__attribute__((unused)) __gen_user_data *data, 101110e230b6Smaya __attribute__((unused)) void * restrict dst, 101210e230b6Smaya __attribute__((unused)) const struct GEN75_RENDER_SURFACE_STATE * restrict values) 101310e230b6Smaya{ 101410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 101510e230b6Smaya 101610e230b6Smaya dw[0] = 101710e230b6Smaya __gen_uint(values->CubeFaceEnablePositiveZ, 0, 0) | 101810e230b6Smaya __gen_uint(values->CubeFaceEnableNegativeZ, 1, 1) | 101910e230b6Smaya __gen_uint(values->CubeFaceEnablePositiveY, 2, 2) | 102010e230b6Smaya __gen_uint(values->CubeFaceEnableNegativeY, 3, 3) | 102110e230b6Smaya __gen_uint(values->CubeFaceEnablePositiveX, 4, 4) | 102210e230b6Smaya __gen_uint(values->CubeFaceEnableNegativeX, 5, 5) | 102310e230b6Smaya __gen_uint(values->MediaBoundaryPixelMode, 6, 7) | 102410e230b6Smaya __gen_uint(values->RenderCacheReadWriteMode, 8, 8) | 102510e230b6Smaya __gen_uint(values->SurfaceArraySpacing, 10, 10) | 102610e230b6Smaya __gen_uint(values->VerticalLineStrideOffset, 11, 11) | 102710e230b6Smaya __gen_uint(values->VerticalLineStride, 12, 12) | 102810e230b6Smaya __gen_uint(values->TileWalk, 13, 13) | 102910e230b6Smaya __gen_uint(values->TiledSurface, 14, 14) | 103010e230b6Smaya __gen_uint(values->SurfaceHorizontalAlignment, 15, 15) | 103110e230b6Smaya __gen_uint(values->SurfaceVerticalAlignment, 16, 17) | 103210e230b6Smaya __gen_uint(values->SurfaceFormat, 18, 26) | 103310e230b6Smaya __gen_uint(values->SurfaceArray, 28, 28) | 103410e230b6Smaya __gen_uint(values->SurfaceType, 29, 31); 103510e230b6Smaya 103610e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->SurfaceBaseAddress, 0); 103710e230b6Smaya 103810e230b6Smaya dw[2] = 103910e230b6Smaya __gen_uint(values->Width, 0, 13) | 104010e230b6Smaya __gen_uint(values->Height, 16, 29); 104110e230b6Smaya 104210e230b6Smaya dw[3] = 104310e230b6Smaya __gen_uint(values->SurfacePitch, 0, 17) | 104410e230b6Smaya __gen_uint(values->IntegerSurfaceFormat, 18, 20) | 104510e230b6Smaya __gen_uint(values->Depth, 21, 31); 104610e230b6Smaya 104710e230b6Smaya dw[4] = 104810e230b6Smaya __gen_uint(values->MultisamplePositionPaletteIndex, 0, 2) | 104910e230b6Smaya __gen_uint(values->StrbufMinimumArrayElement, 0, 26) | 105010e230b6Smaya __gen_uint(values->NumberofMultisamples, 3, 5) | 105110e230b6Smaya __gen_uint(values->MultisampledSurfaceStorageFormat, 6, 6) | 105210e230b6Smaya __gen_uint(values->RenderTargetViewExtent, 7, 17) | 105310e230b6Smaya __gen_uint(values->MinimumArrayElement, 18, 28) | 105410e230b6Smaya __gen_uint(values->RenderTargetRotation, 29, 30); 105510e230b6Smaya 105610e230b6Smaya dw[5] = 105710e230b6Smaya __gen_uint(values->MIPCountLOD, 0, 3) | 105810e230b6Smaya __gen_uint(values->SurfaceMinLOD, 4, 7) | 105910e230b6Smaya __gen_uint(values->MOCS, 16, 19) | 106010e230b6Smaya __gen_uint(values->YOffset, 20, 23) | 106110e230b6Smaya __gen_uint(values->XOffset, 25, 31); 106210e230b6Smaya 106310e230b6Smaya const uint32_t v6 = 106410e230b6Smaya __gen_uint(values->MCSEnable, 0, 0) | 106510e230b6Smaya __gen_uint(values->YOffsetforUVPlane, 0, 13) | 106610e230b6Smaya __gen_uint(values->AppendCounterEnable, 1, 1) | 106710e230b6Smaya __gen_uint(values->AuxiliarySurfacePitch, 3, 11) | 106810e230b6Smaya __gen_uint(values->XOffsetforUVPlane, 16, 29) | 106910e230b6Smaya __gen_uint(values->ReservedMBZ, 30, 31); 107010e230b6Smaya dw[6] = __gen_combine_address(data, &dw[6], values->AuxiliarySurfaceBaseAddress, v6); 107110e230b6Smaya 107210e230b6Smaya dw[7] = 107310e230b6Smaya __gen_ufixed(values->ResourceMinLOD, 0, 11, 8) | 107410e230b6Smaya __gen_uint(values->ShaderChannelSelectAlpha, 16, 18) | 107510e230b6Smaya __gen_uint(values->ShaderChannelSelectBlue, 19, 21) | 107610e230b6Smaya __gen_uint(values->ShaderChannelSelectGreen, 22, 24) | 107710e230b6Smaya __gen_uint(values->ShaderChannelSelectRed, 25, 27) | 107810e230b6Smaya __gen_uint(values->AlphaClearColor, 28, 28) | 107910e230b6Smaya __gen_uint(values->BlueClearColor, 29, 29) | 108010e230b6Smaya __gen_uint(values->GreenClearColor, 30, 30) | 108110e230b6Smaya __gen_uint(values->RedClearColor, 31, 31); 108210e230b6Smaya} 108310e230b6Smaya 108410e230b6Smaya#define GEN75_SAMPLER_BORDER_COLOR_STATE_length 20 108510e230b6Smayastruct GEN75_SAMPLER_BORDER_COLOR_STATE { 108610e230b6Smaya float BorderColorFloatRed; 108710e230b6Smaya float BorderColorFloatGreen; 108810e230b6Smaya float BorderColorFloatBlue; 108910e230b6Smaya float BorderColorFloatAlpha; 109010e230b6Smaya uint32_t BorderColor8bitRed; 109110e230b6Smaya uint32_t BorderColor16bitRed; 109210e230b6Smaya uint32_t BorderColor32bitRed; 109310e230b6Smaya uint32_t BorderColor8bitGreen; 109410e230b6Smaya uint32_t BorderColor8bitBlue; 109510e230b6Smaya uint32_t BorderColor16bitGreen; 109610e230b6Smaya uint32_t BorderColor8bitAlpha; 109710e230b6Smaya uint32_t BorderColor32bitGreen; 109810e230b6Smaya uint32_t BorderColor16bitBlue; 109910e230b6Smaya uint32_t BorderColor32bitBlue; 110010e230b6Smaya uint32_t BorderColor16bitAlpha; 110110e230b6Smaya uint32_t BorderColor32bitAlpha; 110210e230b6Smaya}; 110310e230b6Smaya 110410e230b6Smayastatic inline void 110510e230b6SmayaGEN75_SAMPLER_BORDER_COLOR_STATE_pack(__attribute__((unused)) __gen_user_data *data, 110610e230b6Smaya __attribute__((unused)) void * restrict dst, 110710e230b6Smaya __attribute__((unused)) const struct GEN75_SAMPLER_BORDER_COLOR_STATE * restrict values) 110810e230b6Smaya{ 110910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 111010e230b6Smaya 111110e230b6Smaya dw[0] = 111210e230b6Smaya __gen_float(values->BorderColorFloatRed); 111310e230b6Smaya 111410e230b6Smaya dw[1] = 111510e230b6Smaya __gen_float(values->BorderColorFloatGreen); 111610e230b6Smaya 111710e230b6Smaya dw[2] = 111810e230b6Smaya __gen_float(values->BorderColorFloatBlue); 111910e230b6Smaya 112010e230b6Smaya dw[3] = 112110e230b6Smaya __gen_float(values->BorderColorFloatAlpha); 112210e230b6Smaya 112310e230b6Smaya dw[4] = 0; 112410e230b6Smaya 112510e230b6Smaya dw[5] = 0; 112610e230b6Smaya 112710e230b6Smaya dw[6] = 0; 112810e230b6Smaya 112910e230b6Smaya dw[7] = 0; 113010e230b6Smaya 113110e230b6Smaya dw[8] = 0; 113210e230b6Smaya 113310e230b6Smaya dw[9] = 0; 113410e230b6Smaya 113510e230b6Smaya dw[10] = 0; 113610e230b6Smaya 113710e230b6Smaya dw[11] = 0; 113810e230b6Smaya 113910e230b6Smaya dw[12] = 0; 114010e230b6Smaya 114110e230b6Smaya dw[13] = 0; 114210e230b6Smaya 114310e230b6Smaya dw[14] = 0; 114410e230b6Smaya 114510e230b6Smaya dw[15] = 0; 114610e230b6Smaya 114710e230b6Smaya dw[16] = 114810e230b6Smaya __gen_uint(values->BorderColor8bitRed, 0, 7) | 114910e230b6Smaya __gen_uint(values->BorderColor16bitRed, 0, 15) | 115010e230b6Smaya __gen_uint(values->BorderColor32bitRed, 0, 31) | 115110e230b6Smaya __gen_uint(values->BorderColor8bitGreen, 8, 15) | 115210e230b6Smaya __gen_uint(values->BorderColor8bitBlue, 16, 23) | 115310e230b6Smaya __gen_uint(values->BorderColor16bitGreen, 16, 31) | 115410e230b6Smaya __gen_uint(values->BorderColor8bitAlpha, 24, 31); 115510e230b6Smaya 115610e230b6Smaya dw[17] = 115710e230b6Smaya __gen_uint(values->BorderColor32bitGreen, 0, 31); 115810e230b6Smaya 115910e230b6Smaya dw[18] = 116010e230b6Smaya __gen_uint(values->BorderColor16bitBlue, 0, 15) | 116110e230b6Smaya __gen_uint(values->BorderColor32bitBlue, 0, 31) | 116210e230b6Smaya __gen_uint(values->BorderColor16bitAlpha, 16, 31); 116310e230b6Smaya 116410e230b6Smaya dw[19] = 116510e230b6Smaya __gen_uint(values->BorderColor32bitAlpha, 0, 31); 116610e230b6Smaya} 116710e230b6Smaya 116810e230b6Smaya#define GEN75_SAMPLER_STATE_length 4 116910e230b6Smayastruct GEN75_SAMPLER_STATE { 117010e230b6Smaya uint32_t AnisotropicAlgorithm; 117110e230b6Smaya#define LEGACY 0 117210e230b6Smaya#define EWAApproximation 1 117310e230b6Smaya float TextureLODBias; 117410e230b6Smaya uint32_t MinModeFilter; 117510e230b6Smaya#define MAPFILTER_NEAREST 0 117610e230b6Smaya#define MAPFILTER_LINEAR 1 117710e230b6Smaya#define MAPFILTER_ANISOTROPIC 2 117810e230b6Smaya#define MAPFILTER_MONO 6 117910e230b6Smaya uint32_t MagModeFilter; 118010e230b6Smaya#define MAPFILTER_NEAREST 0 118110e230b6Smaya#define MAPFILTER_LINEAR 1 118210e230b6Smaya#define MAPFILTER_ANISOTROPIC 2 118310e230b6Smaya#define MAPFILTER_MONO 6 118410e230b6Smaya uint32_t MipModeFilter; 118510e230b6Smaya#define MIPFILTER_NONE 0 118610e230b6Smaya#define MIPFILTER_NEAREST 1 118710e230b6Smaya#define MIPFILTER_LINEAR 3 118810e230b6Smaya float BaseMipLevel; 118910e230b6Smaya uint32_t LODPreClampEnable; 119010e230b6Smaya#define CLAMP_ENABLE_OGL 1 119110e230b6Smaya uint32_t TextureBorderColorMode; 119210e230b6Smaya#define DX10OGL 0 119310e230b6Smaya#define DX9 1 119410e230b6Smaya bool SamplerDisable; 119510e230b6Smaya uint32_t CubeSurfaceControlMode; 119610e230b6Smaya#define PROGRAMMED 0 119710e230b6Smaya#define OVERRIDE 1 119810e230b6Smaya uint32_t ShadowFunction; 119910e230b6Smaya#define PREFILTEROPALWAYS 0 120010e230b6Smaya#define PREFILTEROPNEVER 1 120110e230b6Smaya#define PREFILTEROPLESS 2 120210e230b6Smaya#define PREFILTEROPEQUAL 3 120310e230b6Smaya#define PREFILTEROPLEQUAL 4 120410e230b6Smaya#define PREFILTEROPGREATER 5 120510e230b6Smaya#define PREFILTEROPNOTEQUAL 6 120610e230b6Smaya#define PREFILTEROPGEQUAL 7 120710e230b6Smaya float MaxLOD; 120810e230b6Smaya float MinLOD; 120910e230b6Smaya uint64_t BorderColorPointer; 121010e230b6Smaya enum GEN75_TextureCoordinateMode TCZAddressControlMode; 121110e230b6Smaya enum GEN75_TextureCoordinateMode TCYAddressControlMode; 121210e230b6Smaya enum GEN75_TextureCoordinateMode TCXAddressControlMode; 121310e230b6Smaya bool NonnormalizedCoordinateEnable; 121410e230b6Smaya uint32_t TrilinearFilterQuality; 121510e230b6Smaya#define FULL 0 121610e230b6Smaya#define TRIQUAL_HIGHMAG_CLAMP_MIPFILTER 1 121710e230b6Smaya#define MED 2 121810e230b6Smaya#define LOW 3 121910e230b6Smaya bool RAddressMinFilterRoundingEnable; 122010e230b6Smaya bool RAddressMagFilterRoundingEnable; 122110e230b6Smaya bool VAddressMinFilterRoundingEnable; 122210e230b6Smaya bool VAddressMagFilterRoundingEnable; 122310e230b6Smaya bool UAddressMinFilterRoundingEnable; 122410e230b6Smaya bool UAddressMagFilterRoundingEnable; 122510e230b6Smaya uint32_t MaximumAnisotropy; 122610e230b6Smaya#define RATIO21 0 122710e230b6Smaya#define RATIO41 1 122810e230b6Smaya#define RATIO61 2 122910e230b6Smaya#define RATIO81 3 123010e230b6Smaya#define RATIO101 4 123110e230b6Smaya#define RATIO121 5 123210e230b6Smaya#define RATIO141 6 123310e230b6Smaya#define RATIO161 7 123410e230b6Smaya uint32_t ChromaKeyMode; 123510e230b6Smaya#define KEYFILTER_KILL_ON_ANY_MATCH 0 123610e230b6Smaya#define KEYFILTER_REPLACE_BLACK 1 123710e230b6Smaya uint32_t ChromaKeyIndex; 123810e230b6Smaya bool ChromaKeyEnable; 123910e230b6Smaya}; 124010e230b6Smaya 124110e230b6Smayastatic inline void 124210e230b6SmayaGEN75_SAMPLER_STATE_pack(__attribute__((unused)) __gen_user_data *data, 124310e230b6Smaya __attribute__((unused)) void * restrict dst, 124410e230b6Smaya __attribute__((unused)) const struct GEN75_SAMPLER_STATE * restrict values) 124510e230b6Smaya{ 124610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 124710e230b6Smaya 124810e230b6Smaya dw[0] = 124910e230b6Smaya __gen_uint(values->AnisotropicAlgorithm, 0, 0) | 125010e230b6Smaya __gen_sfixed(values->TextureLODBias, 1, 13, 8) | 125110e230b6Smaya __gen_uint(values->MinModeFilter, 14, 16) | 125210e230b6Smaya __gen_uint(values->MagModeFilter, 17, 19) | 125310e230b6Smaya __gen_uint(values->MipModeFilter, 20, 21) | 125410e230b6Smaya __gen_ufixed(values->BaseMipLevel, 22, 26, 1) | 125510e230b6Smaya __gen_uint(values->LODPreClampEnable, 28, 28) | 125610e230b6Smaya __gen_uint(values->TextureBorderColorMode, 29, 29) | 125710e230b6Smaya __gen_uint(values->SamplerDisable, 31, 31); 125810e230b6Smaya 125910e230b6Smaya dw[1] = 126010e230b6Smaya __gen_uint(values->CubeSurfaceControlMode, 0, 0) | 126110e230b6Smaya __gen_uint(values->ShadowFunction, 1, 3) | 126210e230b6Smaya __gen_ufixed(values->MaxLOD, 8, 19, 8) | 126310e230b6Smaya __gen_ufixed(values->MinLOD, 20, 31, 8); 126410e230b6Smaya 126510e230b6Smaya dw[2] = 126610e230b6Smaya __gen_offset(values->BorderColorPointer, 5, 31); 126710e230b6Smaya 126810e230b6Smaya dw[3] = 126910e230b6Smaya __gen_uint(values->TCZAddressControlMode, 0, 2) | 127010e230b6Smaya __gen_uint(values->TCYAddressControlMode, 3, 5) | 127110e230b6Smaya __gen_uint(values->TCXAddressControlMode, 6, 8) | 127210e230b6Smaya __gen_uint(values->NonnormalizedCoordinateEnable, 10, 10) | 127310e230b6Smaya __gen_uint(values->TrilinearFilterQuality, 11, 12) | 127410e230b6Smaya __gen_uint(values->RAddressMinFilterRoundingEnable, 13, 13) | 127510e230b6Smaya __gen_uint(values->RAddressMagFilterRoundingEnable, 14, 14) | 127610e230b6Smaya __gen_uint(values->VAddressMinFilterRoundingEnable, 15, 15) | 127710e230b6Smaya __gen_uint(values->VAddressMagFilterRoundingEnable, 16, 16) | 127810e230b6Smaya __gen_uint(values->UAddressMinFilterRoundingEnable, 17, 17) | 127910e230b6Smaya __gen_uint(values->UAddressMagFilterRoundingEnable, 18, 18) | 128010e230b6Smaya __gen_uint(values->MaximumAnisotropy, 19, 21) | 128110e230b6Smaya __gen_uint(values->ChromaKeyMode, 22, 22) | 128210e230b6Smaya __gen_uint(values->ChromaKeyIndex, 23, 24) | 128310e230b6Smaya __gen_uint(values->ChromaKeyEnable, 25, 25); 128410e230b6Smaya} 128510e230b6Smaya 128610e230b6Smaya#define GEN75_SCISSOR_RECT_length 2 128710e230b6Smayastruct GEN75_SCISSOR_RECT { 128810e230b6Smaya uint32_t ScissorRectangleXMin; 128910e230b6Smaya uint32_t ScissorRectangleYMin; 129010e230b6Smaya uint32_t ScissorRectangleXMax; 129110e230b6Smaya uint32_t ScissorRectangleYMax; 129210e230b6Smaya}; 129310e230b6Smaya 129410e230b6Smayastatic inline void 129510e230b6SmayaGEN75_SCISSOR_RECT_pack(__attribute__((unused)) __gen_user_data *data, 129610e230b6Smaya __attribute__((unused)) void * restrict dst, 129710e230b6Smaya __attribute__((unused)) const struct GEN75_SCISSOR_RECT * restrict values) 129810e230b6Smaya{ 129910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 130010e230b6Smaya 130110e230b6Smaya dw[0] = 130210e230b6Smaya __gen_uint(values->ScissorRectangleXMin, 0, 15) | 130310e230b6Smaya __gen_uint(values->ScissorRectangleYMin, 16, 31); 130410e230b6Smaya 130510e230b6Smaya dw[1] = 130610e230b6Smaya __gen_uint(values->ScissorRectangleXMax, 0, 15) | 130710e230b6Smaya __gen_uint(values->ScissorRectangleYMax, 16, 31); 130810e230b6Smaya} 130910e230b6Smaya 131010e230b6Smaya#define GEN75_SF_CLIP_VIEWPORT_length 16 131110e230b6Smayastruct GEN75_SF_CLIP_VIEWPORT { 131210e230b6Smaya float ViewportMatrixElementm00; 131310e230b6Smaya float ViewportMatrixElementm11; 131410e230b6Smaya float ViewportMatrixElementm22; 131510e230b6Smaya float ViewportMatrixElementm30; 131610e230b6Smaya float ViewportMatrixElementm31; 131710e230b6Smaya float ViewportMatrixElementm32; 131810e230b6Smaya float XMinClipGuardband; 131910e230b6Smaya float XMaxClipGuardband; 132010e230b6Smaya float YMinClipGuardband; 132110e230b6Smaya float YMaxClipGuardband; 132210e230b6Smaya}; 132310e230b6Smaya 132410e230b6Smayastatic inline void 132510e230b6SmayaGEN75_SF_CLIP_VIEWPORT_pack(__attribute__((unused)) __gen_user_data *data, 132610e230b6Smaya __attribute__((unused)) void * restrict dst, 132710e230b6Smaya __attribute__((unused)) const struct GEN75_SF_CLIP_VIEWPORT * restrict values) 132810e230b6Smaya{ 132910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 133010e230b6Smaya 133110e230b6Smaya dw[0] = 133210e230b6Smaya __gen_float(values->ViewportMatrixElementm00); 133310e230b6Smaya 133410e230b6Smaya dw[1] = 133510e230b6Smaya __gen_float(values->ViewportMatrixElementm11); 133610e230b6Smaya 133710e230b6Smaya dw[2] = 133810e230b6Smaya __gen_float(values->ViewportMatrixElementm22); 133910e230b6Smaya 134010e230b6Smaya dw[3] = 134110e230b6Smaya __gen_float(values->ViewportMatrixElementm30); 134210e230b6Smaya 134310e230b6Smaya dw[4] = 134410e230b6Smaya __gen_float(values->ViewportMatrixElementm31); 134510e230b6Smaya 134610e230b6Smaya dw[5] = 134710e230b6Smaya __gen_float(values->ViewportMatrixElementm32); 134810e230b6Smaya 134910e230b6Smaya dw[6] = 0; 135010e230b6Smaya 135110e230b6Smaya dw[7] = 0; 135210e230b6Smaya 135310e230b6Smaya dw[8] = 135410e230b6Smaya __gen_float(values->XMinClipGuardband); 135510e230b6Smaya 135610e230b6Smaya dw[9] = 135710e230b6Smaya __gen_float(values->XMaxClipGuardband); 135810e230b6Smaya 135910e230b6Smaya dw[10] = 136010e230b6Smaya __gen_float(values->YMinClipGuardband); 136110e230b6Smaya 136210e230b6Smaya dw[11] = 136310e230b6Smaya __gen_float(values->YMaxClipGuardband); 136410e230b6Smaya 136510e230b6Smaya dw[12] = 0; 136610e230b6Smaya 136710e230b6Smaya dw[13] = 0; 136810e230b6Smaya 136910e230b6Smaya dw[14] = 0; 137010e230b6Smaya 137110e230b6Smaya dw[15] = 0; 137210e230b6Smaya} 137310e230b6Smaya 137410e230b6Smaya#define GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_length 1 137510e230b6Smayastruct GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL { 137610e230b6Smaya uint32_t SourceAttribute; 137710e230b6Smaya uint32_t SwizzleSelect; 137810e230b6Smaya#define INPUTATTR 0 137910e230b6Smaya#define INPUTATTR_FACING 1 138010e230b6Smaya#define INPUTATTR_W 2 138110e230b6Smaya#define INPUTATTR_FACING_W 3 138210e230b6Smaya uint32_t ConstantSource; 138310e230b6Smaya#define CONST_0000 0 138410e230b6Smaya#define CONST_0001_FLOAT 1 138510e230b6Smaya#define CONST_1111_FLOAT 2 138610e230b6Smaya#define PRIM_ID 3 138710e230b6Smaya uint32_t SwizzleControlMode; 138810e230b6Smaya bool ComponentOverrideX; 138910e230b6Smaya bool ComponentOverrideY; 139010e230b6Smaya bool ComponentOverrideZ; 139110e230b6Smaya bool ComponentOverrideW; 139210e230b6Smaya}; 139310e230b6Smaya 139410e230b6Smayastatic inline void 139510e230b6SmayaGEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(__attribute__((unused)) __gen_user_data *data, 139610e230b6Smaya __attribute__((unused)) void * restrict dst, 139710e230b6Smaya __attribute__((unused)) const struct GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL * restrict values) 139810e230b6Smaya{ 139910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 140010e230b6Smaya 140110e230b6Smaya dw[0] = 140210e230b6Smaya __gen_uint(values->SourceAttribute, 0, 4) | 140310e230b6Smaya __gen_uint(values->SwizzleSelect, 6, 7) | 140410e230b6Smaya __gen_uint(values->ConstantSource, 9, 10) | 140510e230b6Smaya __gen_uint(values->SwizzleControlMode, 11, 11) | 140610e230b6Smaya __gen_uint(values->ComponentOverrideX, 12, 12) | 140710e230b6Smaya __gen_uint(values->ComponentOverrideY, 13, 13) | 140810e230b6Smaya __gen_uint(values->ComponentOverrideZ, 14, 14) | 140910e230b6Smaya __gen_uint(values->ComponentOverrideW, 15, 15); 141010e230b6Smaya} 141110e230b6Smaya 141210e230b6Smaya#define GEN75_SO_DECL_length 1 141310e230b6Smayastruct GEN75_SO_DECL { 141410e230b6Smaya uint32_t ComponentMask; 141510e230b6Smaya uint32_t RegisterIndex; 141610e230b6Smaya uint32_t HoleFlag; 141710e230b6Smaya uint32_t OutputBufferSlot; 141810e230b6Smaya}; 141910e230b6Smaya 142010e230b6Smayastatic inline void 142110e230b6SmayaGEN75_SO_DECL_pack(__attribute__((unused)) __gen_user_data *data, 142210e230b6Smaya __attribute__((unused)) void * restrict dst, 142310e230b6Smaya __attribute__((unused)) const struct GEN75_SO_DECL * restrict values) 142410e230b6Smaya{ 142510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 142610e230b6Smaya 142710e230b6Smaya dw[0] = 142810e230b6Smaya __gen_uint(values->ComponentMask, 0, 3) | 142910e230b6Smaya __gen_uint(values->RegisterIndex, 4, 9) | 143010e230b6Smaya __gen_uint(values->HoleFlag, 11, 11) | 143110e230b6Smaya __gen_uint(values->OutputBufferSlot, 12, 13); 143210e230b6Smaya} 143310e230b6Smaya 143410e230b6Smaya#define GEN75_SO_DECL_ENTRY_length 2 143510e230b6Smayastruct GEN75_SO_DECL_ENTRY { 143610e230b6Smaya struct GEN75_SO_DECL Stream0Decl; 143710e230b6Smaya struct GEN75_SO_DECL Stream1Decl; 143810e230b6Smaya struct GEN75_SO_DECL Stream2Decl; 143910e230b6Smaya struct GEN75_SO_DECL Stream3Decl; 144010e230b6Smaya}; 144110e230b6Smaya 144210e230b6Smayastatic inline void 144310e230b6SmayaGEN75_SO_DECL_ENTRY_pack(__attribute__((unused)) __gen_user_data *data, 144410e230b6Smaya __attribute__((unused)) void * restrict dst, 144510e230b6Smaya __attribute__((unused)) const struct GEN75_SO_DECL_ENTRY * restrict values) 144610e230b6Smaya{ 144710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 144810e230b6Smaya 144910e230b6Smaya uint32_t v0_0; 145010e230b6Smaya GEN75_SO_DECL_pack(data, &v0_0, &values->Stream0Decl); 145110e230b6Smaya 145210e230b6Smaya uint32_t v0_1; 145310e230b6Smaya GEN75_SO_DECL_pack(data, &v0_1, &values->Stream1Decl); 145410e230b6Smaya 145510e230b6Smaya dw[0] = 145610e230b6Smaya __gen_uint(v0_0, 0, 15) | 145710e230b6Smaya __gen_uint(v0_1, 16, 31); 145810e230b6Smaya 145910e230b6Smaya uint32_t v1_0; 146010e230b6Smaya GEN75_SO_DECL_pack(data, &v1_0, &values->Stream2Decl); 146110e230b6Smaya 146210e230b6Smaya uint32_t v1_1; 146310e230b6Smaya GEN75_SO_DECL_pack(data, &v1_1, &values->Stream3Decl); 146410e230b6Smaya 146510e230b6Smaya dw[1] = 146610e230b6Smaya __gen_uint(v1_0, 0, 15) | 146710e230b6Smaya __gen_uint(v1_1, 16, 31); 146810e230b6Smaya} 146910e230b6Smaya 147010e230b6Smaya#define GEN75_VERTEX_BUFFER_STATE_length 4 147110e230b6Smayastruct GEN75_VERTEX_BUFFER_STATE { 147210e230b6Smaya uint32_t BufferPitch; 147310e230b6Smaya bool VertexFetchInvalidate; 147410e230b6Smaya bool NullVertexBuffer; 147510e230b6Smaya bool AddressModifyEnable; 147610e230b6Smaya uint32_t MOCS; 147710e230b6Smaya uint32_t BufferAccessType; 147810e230b6Smaya#define VERTEXDATA 0 147910e230b6Smaya#define INSTANCEDATA 1 148010e230b6Smaya uint32_t VertexBufferIndex; 148110e230b6Smaya __gen_address_type BufferStartingAddress; 148210e230b6Smaya __gen_address_type EndAddress; 148310e230b6Smaya uint32_t InstanceDataStepRate; 148410e230b6Smaya}; 148510e230b6Smaya 148610e230b6Smayastatic inline void 148710e230b6SmayaGEN75_VERTEX_BUFFER_STATE_pack(__attribute__((unused)) __gen_user_data *data, 148810e230b6Smaya __attribute__((unused)) void * restrict dst, 148910e230b6Smaya __attribute__((unused)) const struct GEN75_VERTEX_BUFFER_STATE * restrict values) 149010e230b6Smaya{ 149110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 149210e230b6Smaya 149310e230b6Smaya dw[0] = 149410e230b6Smaya __gen_uint(values->BufferPitch, 0, 11) | 149510e230b6Smaya __gen_uint(values->VertexFetchInvalidate, 12, 12) | 149610e230b6Smaya __gen_uint(values->NullVertexBuffer, 13, 13) | 149710e230b6Smaya __gen_uint(values->AddressModifyEnable, 14, 14) | 149810e230b6Smaya __gen_uint(values->MOCS, 16, 19) | 149910e230b6Smaya __gen_uint(values->BufferAccessType, 20, 20) | 150010e230b6Smaya __gen_uint(values->VertexBufferIndex, 26, 31); 150110e230b6Smaya 150210e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->BufferStartingAddress, 0); 150310e230b6Smaya 150410e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->EndAddress, 0); 150510e230b6Smaya 150610e230b6Smaya dw[3] = 150710e230b6Smaya __gen_uint(values->InstanceDataStepRate, 0, 31); 150810e230b6Smaya} 150910e230b6Smaya 151010e230b6Smaya#define GEN75_VERTEX_ELEMENT_STATE_length 2 151110e230b6Smayastruct GEN75_VERTEX_ELEMENT_STATE { 151210e230b6Smaya uint32_t SourceElementOffset; 151310e230b6Smaya bool EdgeFlagEnable; 151410e230b6Smaya uint32_t SourceElementFormat; 151510e230b6Smaya bool Valid; 151610e230b6Smaya uint32_t VertexBufferIndex; 151710e230b6Smaya enum GEN75_3D_Vertex_Component_Control Component3Control; 151810e230b6Smaya enum GEN75_3D_Vertex_Component_Control Component2Control; 151910e230b6Smaya enum GEN75_3D_Vertex_Component_Control Component1Control; 152010e230b6Smaya enum GEN75_3D_Vertex_Component_Control Component0Control; 152110e230b6Smaya}; 152210e230b6Smaya 152310e230b6Smayastatic inline void 152410e230b6SmayaGEN75_VERTEX_ELEMENT_STATE_pack(__attribute__((unused)) __gen_user_data *data, 152510e230b6Smaya __attribute__((unused)) void * restrict dst, 152610e230b6Smaya __attribute__((unused)) const struct GEN75_VERTEX_ELEMENT_STATE * restrict values) 152710e230b6Smaya{ 152810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 152910e230b6Smaya 153010e230b6Smaya dw[0] = 153110e230b6Smaya __gen_uint(values->SourceElementOffset, 0, 11) | 153210e230b6Smaya __gen_uint(values->EdgeFlagEnable, 15, 15) | 153310e230b6Smaya __gen_uint(values->SourceElementFormat, 16, 24) | 153410e230b6Smaya __gen_uint(values->Valid, 25, 25) | 153510e230b6Smaya __gen_uint(values->VertexBufferIndex, 26, 31); 153610e230b6Smaya 153710e230b6Smaya dw[1] = 153810e230b6Smaya __gen_uint(values->Component3Control, 16, 18) | 153910e230b6Smaya __gen_uint(values->Component2Control, 20, 22) | 154010e230b6Smaya __gen_uint(values->Component1Control, 24, 26) | 154110e230b6Smaya __gen_uint(values->Component0Control, 28, 30); 154210e230b6Smaya} 154310e230b6Smaya 154410e230b6Smaya#define GEN75_3DPRIMITIVE_length 7 154510e230b6Smaya#define GEN75_3DPRIMITIVE_length_bias 2 154610e230b6Smaya#define GEN75_3DPRIMITIVE_header \ 154710e230b6Smaya .DWordLength = 5, \ 154810e230b6Smaya ._3DCommandSubOpcode = 0, \ 154910e230b6Smaya ._3DCommandOpcode = 3, \ 155010e230b6Smaya .CommandSubType = 3, \ 155110e230b6Smaya .CommandType = 3 155210e230b6Smaya 155310e230b6Smayastruct GEN75_3DPRIMITIVE { 155410e230b6Smaya uint32_t DWordLength; 155510e230b6Smaya bool PredicateEnable; 155610e230b6Smaya bool UAVCoherencyRequired; 155710e230b6Smaya bool IndirectParameterEnable; 155810e230b6Smaya uint32_t _3DCommandSubOpcode; 155910e230b6Smaya uint32_t _3DCommandOpcode; 156010e230b6Smaya uint32_t CommandSubType; 156110e230b6Smaya uint32_t CommandType; 156210e230b6Smaya enum GEN75_3D_Prim_Topo_Type PrimitiveTopologyType; 156310e230b6Smaya uint32_t VertexAccessType; 156410e230b6Smaya#define SEQUENTIAL 0 156510e230b6Smaya#define RANDOM 1 156610e230b6Smaya bool EndOffsetEnable; 156710e230b6Smaya uint32_t VertexCountPerInstance; 156810e230b6Smaya uint32_t StartVertexLocation; 156910e230b6Smaya uint32_t InstanceCount; 157010e230b6Smaya uint32_t StartInstanceLocation; 157110e230b6Smaya int32_t BaseVertexLocation; 157210e230b6Smaya}; 157310e230b6Smaya 157410e230b6Smayastatic inline void 157510e230b6SmayaGEN75_3DPRIMITIVE_pack(__attribute__((unused)) __gen_user_data *data, 157610e230b6Smaya __attribute__((unused)) void * restrict dst, 157710e230b6Smaya __attribute__((unused)) const struct GEN75_3DPRIMITIVE * restrict values) 157810e230b6Smaya{ 157910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 158010e230b6Smaya 158110e230b6Smaya dw[0] = 158210e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 158310e230b6Smaya __gen_uint(values->PredicateEnable, 8, 8) | 158410e230b6Smaya __gen_uint(values->UAVCoherencyRequired, 9, 9) | 158510e230b6Smaya __gen_uint(values->IndirectParameterEnable, 10, 10) | 158610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 158710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 158810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 158910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 159010e230b6Smaya 159110e230b6Smaya dw[1] = 159210e230b6Smaya __gen_uint(values->PrimitiveTopologyType, 0, 5) | 159310e230b6Smaya __gen_uint(values->VertexAccessType, 8, 8) | 159410e230b6Smaya __gen_uint(values->EndOffsetEnable, 9, 9); 159510e230b6Smaya 159610e230b6Smaya dw[2] = 159710e230b6Smaya __gen_uint(values->VertexCountPerInstance, 0, 31); 159810e230b6Smaya 159910e230b6Smaya dw[3] = 160010e230b6Smaya __gen_uint(values->StartVertexLocation, 0, 31); 160110e230b6Smaya 160210e230b6Smaya dw[4] = 160310e230b6Smaya __gen_uint(values->InstanceCount, 0, 31); 160410e230b6Smaya 160510e230b6Smaya dw[5] = 160610e230b6Smaya __gen_uint(values->StartInstanceLocation, 0, 31); 160710e230b6Smaya 160810e230b6Smaya dw[6] = 160910e230b6Smaya __gen_sint(values->BaseVertexLocation, 0, 31); 161010e230b6Smaya} 161110e230b6Smaya 161210e230b6Smaya#define GEN75_3DSTATE_AA_LINE_PARAMETERS_length 3 161310e230b6Smaya#define GEN75_3DSTATE_AA_LINE_PARAMETERS_length_bias 2 161410e230b6Smaya#define GEN75_3DSTATE_AA_LINE_PARAMETERS_header \ 161510e230b6Smaya .DWordLength = 1, \ 161610e230b6Smaya ._3DCommandSubOpcode = 10, \ 161710e230b6Smaya ._3DCommandOpcode = 1, \ 161810e230b6Smaya .CommandSubType = 3, \ 161910e230b6Smaya .CommandType = 3 162010e230b6Smaya 162110e230b6Smayastruct GEN75_3DSTATE_AA_LINE_PARAMETERS { 162210e230b6Smaya uint32_t DWordLength; 162310e230b6Smaya uint32_t _3DCommandSubOpcode; 162410e230b6Smaya uint32_t _3DCommandOpcode; 162510e230b6Smaya uint32_t CommandSubType; 162610e230b6Smaya uint32_t CommandType; 162710e230b6Smaya float AACoverageSlope; 162810e230b6Smaya float AACoverageBias; 162910e230b6Smaya float AACoverageEndCapSlope; 163010e230b6Smaya float AACoverageEndCapBias; 163110e230b6Smaya}; 163210e230b6Smaya 163310e230b6Smayastatic inline void 163410e230b6SmayaGEN75_3DSTATE_AA_LINE_PARAMETERS_pack(__attribute__((unused)) __gen_user_data *data, 163510e230b6Smaya __attribute__((unused)) void * restrict dst, 163610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_AA_LINE_PARAMETERS * restrict values) 163710e230b6Smaya{ 163810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 163910e230b6Smaya 164010e230b6Smaya dw[0] = 164110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 164210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 164310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 164410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 164510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 164610e230b6Smaya 164710e230b6Smaya dw[1] = 164810e230b6Smaya __gen_ufixed(values->AACoverageSlope, 0, 7, 8) | 164910e230b6Smaya __gen_ufixed(values->AACoverageBias, 16, 23, 8); 165010e230b6Smaya 165110e230b6Smaya dw[2] = 165210e230b6Smaya __gen_ufixed(values->AACoverageEndCapSlope, 0, 7, 8) | 165310e230b6Smaya __gen_ufixed(values->AACoverageEndCapBias, 16, 23, 8); 165410e230b6Smaya} 165510e230b6Smaya 165610e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_DS_length_bias 2 165710e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_DS_header\ 165810e230b6Smaya .DWordLength = 0, \ 165910e230b6Smaya ._3DCommandSubOpcode = 70, \ 166010e230b6Smaya ._3DCommandOpcode = 0, \ 166110e230b6Smaya .CommandSubType = 3, \ 166210e230b6Smaya .CommandType = 3 166310e230b6Smaya 166410e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_DS { 166510e230b6Smaya uint32_t DWordLength; 166610e230b6Smaya uint32_t _3DCommandSubOpcode; 166710e230b6Smaya uint32_t _3DCommandOpcode; 166810e230b6Smaya uint32_t CommandSubType; 166910e230b6Smaya uint32_t CommandType; 167010e230b6Smaya uint32_t BindingTableEditTarget; 167110e230b6Smaya#define AllCores 3 167210e230b6Smaya#define Core1 2 167310e230b6Smaya#define Core0 1 167410e230b6Smaya uint32_t BindingTableBlockClear; 167510e230b6Smaya /* variable length fields follow */ 167610e230b6Smaya}; 167710e230b6Smaya 167810e230b6Smayastatic inline void 167910e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_DS_pack(__attribute__((unused)) __gen_user_data *data, 168010e230b6Smaya __attribute__((unused)) void * restrict dst, 168110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_DS * restrict values) 168210e230b6Smaya{ 168310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 168410e230b6Smaya 168510e230b6Smaya dw[0] = 168610e230b6Smaya __gen_uint(values->DWordLength, 0, 8) | 168710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 168810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 168910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 169010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 169110e230b6Smaya 169210e230b6Smaya dw[1] = 169310e230b6Smaya __gen_uint(values->BindingTableEditTarget, 0, 1) | 169410e230b6Smaya __gen_uint(values->BindingTableBlockClear, 16, 31); 169510e230b6Smaya} 169610e230b6Smaya 169710e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_GS_length_bias 2 169810e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_GS_header\ 169910e230b6Smaya .DWordLength = 0, \ 170010e230b6Smaya ._3DCommandSubOpcode = 68, \ 170110e230b6Smaya ._3DCommandOpcode = 0, \ 170210e230b6Smaya .CommandSubType = 3, \ 170310e230b6Smaya .CommandType = 3 170410e230b6Smaya 170510e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_GS { 170610e230b6Smaya uint32_t DWordLength; 170710e230b6Smaya uint32_t _3DCommandSubOpcode; 170810e230b6Smaya uint32_t _3DCommandOpcode; 170910e230b6Smaya uint32_t CommandSubType; 171010e230b6Smaya uint32_t CommandType; 171110e230b6Smaya uint32_t BindingTableEditTarget; 171210e230b6Smaya#define AllCores 3 171310e230b6Smaya#define Core1 2 171410e230b6Smaya#define Core0 1 171510e230b6Smaya uint32_t BindingTableBlockClear; 171610e230b6Smaya /* variable length fields follow */ 171710e230b6Smaya}; 171810e230b6Smaya 171910e230b6Smayastatic inline void 172010e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_GS_pack(__attribute__((unused)) __gen_user_data *data, 172110e230b6Smaya __attribute__((unused)) void * restrict dst, 172210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_GS * restrict values) 172310e230b6Smaya{ 172410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 172510e230b6Smaya 172610e230b6Smaya dw[0] = 172710e230b6Smaya __gen_uint(values->DWordLength, 0, 8) | 172810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 172910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 173010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 173110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 173210e230b6Smaya 173310e230b6Smaya dw[1] = 173410e230b6Smaya __gen_uint(values->BindingTableEditTarget, 0, 1) | 173510e230b6Smaya __gen_uint(values->BindingTableBlockClear, 16, 31); 173610e230b6Smaya} 173710e230b6Smaya 173810e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_HS_length_bias 2 173910e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_HS_header\ 174010e230b6Smaya .DWordLength = 0, \ 174110e230b6Smaya ._3DCommandSubOpcode = 69, \ 174210e230b6Smaya ._3DCommandOpcode = 0, \ 174310e230b6Smaya .CommandSubType = 3, \ 174410e230b6Smaya .CommandType = 3 174510e230b6Smaya 174610e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_HS { 174710e230b6Smaya uint32_t DWordLength; 174810e230b6Smaya uint32_t _3DCommandSubOpcode; 174910e230b6Smaya uint32_t _3DCommandOpcode; 175010e230b6Smaya uint32_t CommandSubType; 175110e230b6Smaya uint32_t CommandType; 175210e230b6Smaya uint32_t BindingTableEditTarget; 175310e230b6Smaya#define AllCores 3 175410e230b6Smaya#define Core1 2 175510e230b6Smaya#define Core0 1 175610e230b6Smaya uint32_t BindingTableBlockClear; 175710e230b6Smaya /* variable length fields follow */ 175810e230b6Smaya}; 175910e230b6Smaya 176010e230b6Smayastatic inline void 176110e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_HS_pack(__attribute__((unused)) __gen_user_data *data, 176210e230b6Smaya __attribute__((unused)) void * restrict dst, 176310e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_HS * restrict values) 176410e230b6Smaya{ 176510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 176610e230b6Smaya 176710e230b6Smaya dw[0] = 176810e230b6Smaya __gen_uint(values->DWordLength, 0, 8) | 176910e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 177010e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 177110e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 177210e230b6Smaya __gen_uint(values->CommandType, 29, 31); 177310e230b6Smaya 177410e230b6Smaya dw[1] = 177510e230b6Smaya __gen_uint(values->BindingTableEditTarget, 0, 1) | 177610e230b6Smaya __gen_uint(values->BindingTableBlockClear, 16, 31); 177710e230b6Smaya} 177810e230b6Smaya 177910e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_PS_length_bias 2 178010e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_PS_header\ 178110e230b6Smaya .DWordLength = 0, \ 178210e230b6Smaya ._3DCommandSubOpcode = 71, \ 178310e230b6Smaya ._3DCommandOpcode = 0, \ 178410e230b6Smaya .CommandSubType = 3, \ 178510e230b6Smaya .CommandType = 3 178610e230b6Smaya 178710e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_PS { 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 180210e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_PS_pack(__attribute__((unused)) __gen_user_data *data, 180310e230b6Smaya __attribute__((unused)) void * restrict dst, 180410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_PS * 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 GEN75_3DSTATE_BINDING_TABLE_EDIT_VS_length_bias 2 182110e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_VS_header\ 182210e230b6Smaya .DWordLength = 0, \ 182310e230b6Smaya ._3DCommandSubOpcode = 67, \ 182410e230b6Smaya ._3DCommandOpcode = 0, \ 182510e230b6Smaya .CommandSubType = 3, \ 182610e230b6Smaya .CommandType = 3 182710e230b6Smaya 182810e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_VS { 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 184310e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_VS_pack(__attribute__((unused)) __gen_user_data *data, 184410e230b6Smaya __attribute__((unused)) void * restrict dst, 184510e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_VS * 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 GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS_length 2 186210e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS_length_bias 2 186310e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS_header\ 186410e230b6Smaya .DWordLength = 0, \ 186510e230b6Smaya ._3DCommandSubOpcode = 40, \ 186610e230b6Smaya ._3DCommandOpcode = 0, \ 186710e230b6Smaya .CommandSubType = 3, \ 186810e230b6Smaya .CommandType = 3 186910e230b6Smaya 187010e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS { 187110e230b6Smaya uint32_t DWordLength; 187210e230b6Smaya uint32_t _3DCommandSubOpcode; 187310e230b6Smaya uint32_t _3DCommandOpcode; 187410e230b6Smaya uint32_t CommandSubType; 187510e230b6Smaya uint32_t CommandType; 187610e230b6Smaya uint64_t PointertoDSBindingTable; 187710e230b6Smaya}; 187810e230b6Smaya 187910e230b6Smayastatic inline void 188010e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_DS_pack(__attribute__((unused)) __gen_user_data *data, 188110e230b6Smaya __attribute__((unused)) void * restrict dst, 188210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS * restrict values) 188310e230b6Smaya{ 188410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 188510e230b6Smaya 188610e230b6Smaya dw[0] = 188710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 188810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 188910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 189010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 189110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 189210e230b6Smaya 189310e230b6Smaya dw[1] = 189410e230b6Smaya __gen_offset(values->PointertoDSBindingTable, 5, 15); 189510e230b6Smaya} 189610e230b6Smaya 189710e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS_length 2 189810e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS_length_bias 2 189910e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS_header\ 190010e230b6Smaya .DWordLength = 0, \ 190110e230b6Smaya ._3DCommandSubOpcode = 41, \ 190210e230b6Smaya ._3DCommandOpcode = 0, \ 190310e230b6Smaya .CommandSubType = 3, \ 190410e230b6Smaya .CommandType = 3 190510e230b6Smaya 190610e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS { 190710e230b6Smaya uint32_t DWordLength; 190810e230b6Smaya uint32_t _3DCommandSubOpcode; 190910e230b6Smaya uint32_t _3DCommandOpcode; 191010e230b6Smaya uint32_t CommandSubType; 191110e230b6Smaya uint32_t CommandType; 191210e230b6Smaya uint64_t PointertoGSBindingTable; 191310e230b6Smaya}; 191410e230b6Smaya 191510e230b6Smayastatic inline void 191610e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_GS_pack(__attribute__((unused)) __gen_user_data *data, 191710e230b6Smaya __attribute__((unused)) void * restrict dst, 191810e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS * restrict values) 191910e230b6Smaya{ 192010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 192110e230b6Smaya 192210e230b6Smaya dw[0] = 192310e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 192410e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 192510e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 192610e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 192710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 192810e230b6Smaya 192910e230b6Smaya dw[1] = 193010e230b6Smaya __gen_offset(values->PointertoGSBindingTable, 5, 15); 193110e230b6Smaya} 193210e230b6Smaya 193310e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS_length 2 193410e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS_length_bias 2 193510e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS_header\ 193610e230b6Smaya .DWordLength = 0, \ 193710e230b6Smaya ._3DCommandSubOpcode = 39, \ 193810e230b6Smaya ._3DCommandOpcode = 0, \ 193910e230b6Smaya .CommandSubType = 3, \ 194010e230b6Smaya .CommandType = 3 194110e230b6Smaya 194210e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS { 194310e230b6Smaya uint32_t DWordLength; 194410e230b6Smaya uint32_t _3DCommandSubOpcode; 194510e230b6Smaya uint32_t _3DCommandOpcode; 194610e230b6Smaya uint32_t CommandSubType; 194710e230b6Smaya uint32_t CommandType; 194810e230b6Smaya uint64_t PointertoHSBindingTable; 194910e230b6Smaya}; 195010e230b6Smaya 195110e230b6Smayastatic inline void 195210e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_HS_pack(__attribute__((unused)) __gen_user_data *data, 195310e230b6Smaya __attribute__((unused)) void * restrict dst, 195410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS * restrict values) 195510e230b6Smaya{ 195610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 195710e230b6Smaya 195810e230b6Smaya dw[0] = 195910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 196010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 196110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 196210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 196310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 196410e230b6Smaya 196510e230b6Smaya dw[1] = 196610e230b6Smaya __gen_offset(values->PointertoHSBindingTable, 5, 15); 196710e230b6Smaya} 196810e230b6Smaya 196910e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS_length 2 197010e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS_length_bias 2 197110e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS_header\ 197210e230b6Smaya .DWordLength = 0, \ 197310e230b6Smaya ._3DCommandSubOpcode = 42, \ 197410e230b6Smaya ._3DCommandOpcode = 0, \ 197510e230b6Smaya .CommandSubType = 3, \ 197610e230b6Smaya .CommandType = 3 197710e230b6Smaya 197810e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS { 197910e230b6Smaya uint32_t DWordLength; 198010e230b6Smaya uint32_t _3DCommandSubOpcode; 198110e230b6Smaya uint32_t _3DCommandOpcode; 198210e230b6Smaya uint32_t CommandSubType; 198310e230b6Smaya uint32_t CommandType; 198410e230b6Smaya uint64_t PointertoPSBindingTable; 198510e230b6Smaya}; 198610e230b6Smaya 198710e230b6Smayastatic inline void 198810e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_PS_pack(__attribute__((unused)) __gen_user_data *data, 198910e230b6Smaya __attribute__((unused)) void * restrict dst, 199010e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS * restrict values) 199110e230b6Smaya{ 199210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 199310e230b6Smaya 199410e230b6Smaya dw[0] = 199510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 199610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 199710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 199810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 199910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 200010e230b6Smaya 200110e230b6Smaya dw[1] = 200210e230b6Smaya __gen_offset(values->PointertoPSBindingTable, 5, 15); 200310e230b6Smaya} 200410e230b6Smaya 200510e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS_length 2 200610e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS_length_bias 2 200710e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS_header\ 200810e230b6Smaya .DWordLength = 0, \ 200910e230b6Smaya ._3DCommandSubOpcode = 38, \ 201010e230b6Smaya ._3DCommandOpcode = 0, \ 201110e230b6Smaya .CommandSubType = 3, \ 201210e230b6Smaya .CommandType = 3 201310e230b6Smaya 201410e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS { 201510e230b6Smaya uint32_t DWordLength; 201610e230b6Smaya uint32_t _3DCommandSubOpcode; 201710e230b6Smaya uint32_t _3DCommandOpcode; 201810e230b6Smaya uint32_t CommandSubType; 201910e230b6Smaya uint32_t CommandType; 202010e230b6Smaya uint64_t PointertoVSBindingTable; 202110e230b6Smaya}; 202210e230b6Smaya 202310e230b6Smayastatic inline void 202410e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_VS_pack(__attribute__((unused)) __gen_user_data *data, 202510e230b6Smaya __attribute__((unused)) void * restrict dst, 202610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS * restrict values) 202710e230b6Smaya{ 202810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 202910e230b6Smaya 203010e230b6Smaya dw[0] = 203110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 203210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 203310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 203410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 203510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 203610e230b6Smaya 203710e230b6Smaya dw[1] = 203810e230b6Smaya __gen_offset(values->PointertoVSBindingTable, 5, 15); 203910e230b6Smaya} 204010e230b6Smaya 204110e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_length 3 204210e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_length_bias 2 204310e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_header\ 204410e230b6Smaya .DWordLength = 1, \ 204510e230b6Smaya ._3DCommandSubOpcode = 25, \ 204610e230b6Smaya ._3DCommandOpcode = 1, \ 204710e230b6Smaya .CommandSubType = 3, \ 204810e230b6Smaya .CommandType = 3 204910e230b6Smaya 205010e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC { 205110e230b6Smaya uint32_t DWordLength; 205210e230b6Smaya uint32_t _3DCommandSubOpcode; 205310e230b6Smaya uint32_t _3DCommandOpcode; 205410e230b6Smaya uint32_t CommandSubType; 205510e230b6Smaya uint32_t CommandType; 205610e230b6Smaya uint32_t MOCS; 205710e230b6Smaya uint32_t BindingTablePoolEnable; 205810e230b6Smaya __gen_address_type BindingTablePoolBaseAddress; 205910e230b6Smaya __gen_address_type BindingTablePoolUpperBound; 206010e230b6Smaya}; 206110e230b6Smaya 206210e230b6Smayastatic inline void 206310e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_pack(__attribute__((unused)) __gen_user_data *data, 206410e230b6Smaya __attribute__((unused)) void * restrict dst, 206510e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC * restrict values) 206610e230b6Smaya{ 206710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 206810e230b6Smaya 206910e230b6Smaya dw[0] = 207010e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 207110e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 207210e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 207310e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 207410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 207510e230b6Smaya 207610e230b6Smaya const uint32_t v1 = 207710e230b6Smaya __gen_uint(values->MOCS, 7, 10) | 207810e230b6Smaya __gen_uint(values->BindingTablePoolEnable, 11, 11); 207910e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->BindingTablePoolBaseAddress, v1); 208010e230b6Smaya 208110e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->BindingTablePoolUpperBound, 0); 208210e230b6Smaya} 208310e230b6Smaya 208410e230b6Smaya#define GEN75_3DSTATE_BLEND_STATE_POINTERS_length 2 208510e230b6Smaya#define GEN75_3DSTATE_BLEND_STATE_POINTERS_length_bias 2 208610e230b6Smaya#define GEN75_3DSTATE_BLEND_STATE_POINTERS_header\ 208710e230b6Smaya .DWordLength = 0, \ 208810e230b6Smaya ._3DCommandSubOpcode = 36, \ 208910e230b6Smaya ._3DCommandOpcode = 0, \ 209010e230b6Smaya .CommandSubType = 3, \ 209110e230b6Smaya .CommandType = 3 209210e230b6Smaya 209310e230b6Smayastruct GEN75_3DSTATE_BLEND_STATE_POINTERS { 209410e230b6Smaya uint32_t DWordLength; 209510e230b6Smaya uint32_t _3DCommandSubOpcode; 209610e230b6Smaya uint32_t _3DCommandOpcode; 209710e230b6Smaya uint32_t CommandSubType; 209810e230b6Smaya uint32_t CommandType; 209910e230b6Smaya uint64_t BlendStatePointer; 210010e230b6Smaya}; 210110e230b6Smaya 210210e230b6Smayastatic inline void 210310e230b6SmayaGEN75_3DSTATE_BLEND_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data, 210410e230b6Smaya __attribute__((unused)) void * restrict dst, 210510e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_BLEND_STATE_POINTERS * restrict values) 210610e230b6Smaya{ 210710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 210810e230b6Smaya 210910e230b6Smaya dw[0] = 211010e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 211110e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 211210e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 211310e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 211410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 211510e230b6Smaya 211610e230b6Smaya dw[1] = 211710e230b6Smaya __gen_mbo(0, 0) | 211810e230b6Smaya __gen_offset(values->BlendStatePointer, 6, 31); 211910e230b6Smaya} 212010e230b6Smaya 212110e230b6Smaya#define GEN75_3DSTATE_CC_STATE_POINTERS_length 2 212210e230b6Smaya#define GEN75_3DSTATE_CC_STATE_POINTERS_length_bias 2 212310e230b6Smaya#define GEN75_3DSTATE_CC_STATE_POINTERS_header \ 212410e230b6Smaya .DWordLength = 0, \ 212510e230b6Smaya ._3DCommandSubOpcode = 14, \ 212610e230b6Smaya ._3DCommandOpcode = 0, \ 212710e230b6Smaya .CommandSubType = 3, \ 212810e230b6Smaya .CommandType = 3 212910e230b6Smaya 213010e230b6Smayastruct GEN75_3DSTATE_CC_STATE_POINTERS { 213110e230b6Smaya uint32_t DWordLength; 213210e230b6Smaya uint32_t _3DCommandSubOpcode; 213310e230b6Smaya uint32_t _3DCommandOpcode; 213410e230b6Smaya uint32_t CommandSubType; 213510e230b6Smaya uint32_t CommandType; 213610e230b6Smaya uint64_t ColorCalcStatePointer; 213710e230b6Smaya}; 213810e230b6Smaya 213910e230b6Smayastatic inline void 214010e230b6SmayaGEN75_3DSTATE_CC_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data, 214110e230b6Smaya __attribute__((unused)) void * restrict dst, 214210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CC_STATE_POINTERS * restrict values) 214310e230b6Smaya{ 214410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 214510e230b6Smaya 214610e230b6Smaya dw[0] = 214710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 214810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 214910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 215010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 215110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 215210e230b6Smaya 215310e230b6Smaya dw[1] = 215410e230b6Smaya __gen_mbo(0, 0) | 215510e230b6Smaya __gen_offset(values->ColorCalcStatePointer, 6, 31); 215610e230b6Smaya} 215710e230b6Smaya 215810e230b6Smaya#define GEN75_3DSTATE_CHROMA_KEY_length 4 215910e230b6Smaya#define GEN75_3DSTATE_CHROMA_KEY_length_bias 2 216010e230b6Smaya#define GEN75_3DSTATE_CHROMA_KEY_header \ 216110e230b6Smaya .DWordLength = 2, \ 216210e230b6Smaya ._3DCommandSubOpcode = 4, \ 216310e230b6Smaya ._3DCommandOpcode = 1, \ 216410e230b6Smaya .CommandSubType = 3, \ 216510e230b6Smaya .CommandType = 3 216610e230b6Smaya 216710e230b6Smayastruct GEN75_3DSTATE_CHROMA_KEY { 216810e230b6Smaya uint32_t DWordLength; 216910e230b6Smaya uint32_t _3DCommandSubOpcode; 217010e230b6Smaya uint32_t _3DCommandOpcode; 217110e230b6Smaya uint32_t CommandSubType; 217210e230b6Smaya uint32_t CommandType; 217310e230b6Smaya uint32_t ChromaKeyTableIndex; 217410e230b6Smaya uint32_t ChromaKeyLowValue; 217510e230b6Smaya uint32_t ChromaKeyHighValue; 217610e230b6Smaya}; 217710e230b6Smaya 217810e230b6Smayastatic inline void 217910e230b6SmayaGEN75_3DSTATE_CHROMA_KEY_pack(__attribute__((unused)) __gen_user_data *data, 218010e230b6Smaya __attribute__((unused)) void * restrict dst, 218110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CHROMA_KEY * restrict values) 218210e230b6Smaya{ 218310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 218410e230b6Smaya 218510e230b6Smaya dw[0] = 218610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 218710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 218810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 218910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 219010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 219110e230b6Smaya 219210e230b6Smaya dw[1] = 219310e230b6Smaya __gen_uint(values->ChromaKeyTableIndex, 30, 31); 219410e230b6Smaya 219510e230b6Smaya dw[2] = 219610e230b6Smaya __gen_uint(values->ChromaKeyLowValue, 0, 31); 219710e230b6Smaya 219810e230b6Smaya dw[3] = 219910e230b6Smaya __gen_uint(values->ChromaKeyHighValue, 0, 31); 220010e230b6Smaya} 220110e230b6Smaya 220210e230b6Smaya#define GEN75_3DSTATE_CLEAR_PARAMS_length 3 220310e230b6Smaya#define GEN75_3DSTATE_CLEAR_PARAMS_length_bias 2 220410e230b6Smaya#define GEN75_3DSTATE_CLEAR_PARAMS_header \ 220510e230b6Smaya .DWordLength = 1, \ 220610e230b6Smaya ._3DCommandSubOpcode = 4, \ 220710e230b6Smaya ._3DCommandOpcode = 0, \ 220810e230b6Smaya .CommandSubType = 3, \ 220910e230b6Smaya .CommandType = 3 221010e230b6Smaya 221110e230b6Smayastruct GEN75_3DSTATE_CLEAR_PARAMS { 221210e230b6Smaya uint32_t DWordLength; 221310e230b6Smaya uint32_t _3DCommandSubOpcode; 221410e230b6Smaya uint32_t _3DCommandOpcode; 221510e230b6Smaya uint32_t CommandSubType; 221610e230b6Smaya uint32_t CommandType; 221710e230b6Smaya uint32_t DepthClearValue; 221810e230b6Smaya bool DepthClearValueValid; 221910e230b6Smaya}; 222010e230b6Smaya 222110e230b6Smayastatic inline void 222210e230b6SmayaGEN75_3DSTATE_CLEAR_PARAMS_pack(__attribute__((unused)) __gen_user_data *data, 222310e230b6Smaya __attribute__((unused)) void * restrict dst, 222410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CLEAR_PARAMS * restrict values) 222510e230b6Smaya{ 222610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 222710e230b6Smaya 222810e230b6Smaya dw[0] = 222910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 223010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 223110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 223210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 223310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 223410e230b6Smaya 223510e230b6Smaya dw[1] = 223610e230b6Smaya __gen_uint(values->DepthClearValue, 0, 31); 223710e230b6Smaya 223810e230b6Smaya dw[2] = 223910e230b6Smaya __gen_uint(values->DepthClearValueValid, 0, 0); 224010e230b6Smaya} 224110e230b6Smaya 224210e230b6Smaya#define GEN75_3DSTATE_CLIP_length 4 224310e230b6Smaya#define GEN75_3DSTATE_CLIP_length_bias 2 224410e230b6Smaya#define GEN75_3DSTATE_CLIP_header \ 224510e230b6Smaya .DWordLength = 2, \ 224610e230b6Smaya ._3DCommandSubOpcode = 18, \ 224710e230b6Smaya ._3DCommandOpcode = 0, \ 224810e230b6Smaya .CommandSubType = 3, \ 224910e230b6Smaya .CommandType = 3 225010e230b6Smaya 225110e230b6Smayastruct GEN75_3DSTATE_CLIP { 225210e230b6Smaya uint32_t DWordLength; 225310e230b6Smaya uint32_t _3DCommandSubOpcode; 225410e230b6Smaya uint32_t _3DCommandOpcode; 225510e230b6Smaya uint32_t CommandSubType; 225610e230b6Smaya uint32_t CommandType; 225710e230b6Smaya uint32_t UserClipDistanceCullTestEnableBitmask; 225810e230b6Smaya bool StatisticsEnable; 225910e230b6Smaya uint32_t CullMode; 226010e230b6Smaya#define CULLMODE_BOTH 0 226110e230b6Smaya#define CULLMODE_NONE 1 226210e230b6Smaya#define CULLMODE_FRONT 2 226310e230b6Smaya#define CULLMODE_BACK 3 226410e230b6Smaya bool EarlyCullEnable; 226510e230b6Smaya uint32_t VertexSubPixelPrecisionSelect; 226610e230b6Smaya uint32_t FrontWinding; 226710e230b6Smaya uint32_t TriangleFanProvokingVertexSelect; 226810e230b6Smaya#define Vertex0 0 226910e230b6Smaya#define Vertex1 1 227010e230b6Smaya#define Vertex2 2 227110e230b6Smaya uint32_t LineStripListProvokingVertexSelect; 227210e230b6Smaya#define Vertex0 0 227310e230b6Smaya#define Vertex1 1 227410e230b6Smaya uint32_t TriangleStripListProvokingVertexSelect; 227510e230b6Smaya#define Vertex0 0 227610e230b6Smaya#define Vertex1 1 227710e230b6Smaya#define Vertex2 2 227810e230b6Smaya bool NonPerspectiveBarycentricEnable; 227910e230b6Smaya bool PerspectiveDivideDisable; 228010e230b6Smaya uint32_t ClipMode; 228110e230b6Smaya#define CLIPMODE_NORMAL 0 228210e230b6Smaya#define CLIPMODE_REJECT_ALL 3 228310e230b6Smaya#define CLIPMODE_ACCEPT_ALL 4 228410e230b6Smaya uint32_t UserClipDistanceClipTestEnableBitmask; 228510e230b6Smaya bool GuardbandClipTestEnable; 228610e230b6Smaya bool ViewportZClipTestEnable; 228710e230b6Smaya bool ViewportXYClipTestEnable; 228810e230b6Smaya uint32_t APIMode; 228910e230b6Smaya#define APIMODE_OGL 0 229010e230b6Smaya#define APIMODE_D3D 1 229110e230b6Smaya bool ClipEnable; 229210e230b6Smaya uint32_t MaximumVPIndex; 229310e230b6Smaya bool ForceZeroRTAIndexEnable; 229410e230b6Smaya float MaximumPointWidth; 229510e230b6Smaya float MinimumPointWidth; 229610e230b6Smaya}; 229710e230b6Smaya 229810e230b6Smayastatic inline void 229910e230b6SmayaGEN75_3DSTATE_CLIP_pack(__attribute__((unused)) __gen_user_data *data, 230010e230b6Smaya __attribute__((unused)) void * restrict dst, 230110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CLIP * restrict values) 230210e230b6Smaya{ 230310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 230410e230b6Smaya 230510e230b6Smaya dw[0] = 230610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 230710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 230810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 230910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 231010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 231110e230b6Smaya 231210e230b6Smaya dw[1] = 231310e230b6Smaya __gen_uint(values->UserClipDistanceCullTestEnableBitmask, 0, 7) | 231410e230b6Smaya __gen_uint(values->StatisticsEnable, 10, 10) | 231510e230b6Smaya __gen_uint(values->CullMode, 16, 17) | 231610e230b6Smaya __gen_uint(values->EarlyCullEnable, 18, 18) | 231710e230b6Smaya __gen_uint(values->VertexSubPixelPrecisionSelect, 19, 19) | 231810e230b6Smaya __gen_uint(values->FrontWinding, 20, 20); 231910e230b6Smaya 232010e230b6Smaya dw[2] = 232110e230b6Smaya __gen_uint(values->TriangleFanProvokingVertexSelect, 0, 1) | 232210e230b6Smaya __gen_uint(values->LineStripListProvokingVertexSelect, 2, 3) | 232310e230b6Smaya __gen_uint(values->TriangleStripListProvokingVertexSelect, 4, 5) | 232410e230b6Smaya __gen_uint(values->NonPerspectiveBarycentricEnable, 8, 8) | 232510e230b6Smaya __gen_uint(values->PerspectiveDivideDisable, 9, 9) | 232610e230b6Smaya __gen_uint(values->ClipMode, 13, 15) | 232710e230b6Smaya __gen_uint(values->UserClipDistanceClipTestEnableBitmask, 16, 23) | 232810e230b6Smaya __gen_uint(values->GuardbandClipTestEnable, 26, 26) | 232910e230b6Smaya __gen_uint(values->ViewportZClipTestEnable, 27, 27) | 233010e230b6Smaya __gen_uint(values->ViewportXYClipTestEnable, 28, 28) | 233110e230b6Smaya __gen_uint(values->APIMode, 30, 30) | 233210e230b6Smaya __gen_uint(values->ClipEnable, 31, 31); 233310e230b6Smaya 233410e230b6Smaya dw[3] = 233510e230b6Smaya __gen_uint(values->MaximumVPIndex, 0, 3) | 233610e230b6Smaya __gen_uint(values->ForceZeroRTAIndexEnable, 5, 5) | 233710e230b6Smaya __gen_ufixed(values->MaximumPointWidth, 6, 16, 3) | 233810e230b6Smaya __gen_ufixed(values->MinimumPointWidth, 17, 27, 3); 233910e230b6Smaya} 234010e230b6Smaya 234110e230b6Smaya#define GEN75_3DSTATE_CONSTANT_DS_length 7 234210e230b6Smaya#define GEN75_3DSTATE_CONSTANT_DS_length_bias 2 234310e230b6Smaya#define GEN75_3DSTATE_CONSTANT_DS_header \ 234410e230b6Smaya .DWordLength = 5, \ 234510e230b6Smaya ._3DCommandSubOpcode = 26, \ 234610e230b6Smaya ._3DCommandOpcode = 0, \ 234710e230b6Smaya .CommandSubType = 3, \ 234810e230b6Smaya .CommandType = 3 234910e230b6Smaya 235010e230b6Smayastruct GEN75_3DSTATE_CONSTANT_DS { 235110e230b6Smaya uint32_t DWordLength; 235210e230b6Smaya uint32_t _3DCommandSubOpcode; 235310e230b6Smaya uint32_t _3DCommandOpcode; 235410e230b6Smaya uint32_t CommandSubType; 235510e230b6Smaya uint32_t CommandType; 235610e230b6Smaya struct GEN75_3DSTATE_CONSTANT_BODY ConstantBody; 235710e230b6Smaya}; 235810e230b6Smaya 235910e230b6Smayastatic inline void 236010e230b6SmayaGEN75_3DSTATE_CONSTANT_DS_pack(__attribute__((unused)) __gen_user_data *data, 236110e230b6Smaya __attribute__((unused)) void * restrict dst, 236210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_DS * restrict values) 236310e230b6Smaya{ 236410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 236510e230b6Smaya 236610e230b6Smaya dw[0] = 236710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 236810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 236910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 237010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 237110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 237210e230b6Smaya 237310e230b6Smaya GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody); 237410e230b6Smaya} 237510e230b6Smaya 237610e230b6Smaya#define GEN75_3DSTATE_CONSTANT_GS_length 7 237710e230b6Smaya#define GEN75_3DSTATE_CONSTANT_GS_length_bias 2 237810e230b6Smaya#define GEN75_3DSTATE_CONSTANT_GS_header \ 237910e230b6Smaya .DWordLength = 5, \ 238010e230b6Smaya ._3DCommandSubOpcode = 22, \ 238110e230b6Smaya ._3DCommandOpcode = 0, \ 238210e230b6Smaya .CommandSubType = 3, \ 238310e230b6Smaya .CommandType = 3 238410e230b6Smaya 238510e230b6Smayastruct GEN75_3DSTATE_CONSTANT_GS { 238610e230b6Smaya uint32_t DWordLength; 238710e230b6Smaya uint32_t _3DCommandSubOpcode; 238810e230b6Smaya uint32_t _3DCommandOpcode; 238910e230b6Smaya uint32_t CommandSubType; 239010e230b6Smaya uint32_t CommandType; 239110e230b6Smaya struct GEN75_3DSTATE_CONSTANT_BODY ConstantBody; 239210e230b6Smaya}; 239310e230b6Smaya 239410e230b6Smayastatic inline void 239510e230b6SmayaGEN75_3DSTATE_CONSTANT_GS_pack(__attribute__((unused)) __gen_user_data *data, 239610e230b6Smaya __attribute__((unused)) void * restrict dst, 239710e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_GS * restrict values) 239810e230b6Smaya{ 239910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 240010e230b6Smaya 240110e230b6Smaya dw[0] = 240210e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 240310e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 240410e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 240510e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 240610e230b6Smaya __gen_uint(values->CommandType, 29, 31); 240710e230b6Smaya 240810e230b6Smaya GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody); 240910e230b6Smaya} 241010e230b6Smaya 241110e230b6Smaya#define GEN75_3DSTATE_CONSTANT_HS_length 7 241210e230b6Smaya#define GEN75_3DSTATE_CONSTANT_HS_length_bias 2 241310e230b6Smaya#define GEN75_3DSTATE_CONSTANT_HS_header \ 241410e230b6Smaya .DWordLength = 5, \ 241510e230b6Smaya ._3DCommandSubOpcode = 25, \ 241610e230b6Smaya ._3DCommandOpcode = 0, \ 241710e230b6Smaya .CommandSubType = 3, \ 241810e230b6Smaya .CommandType = 3 241910e230b6Smaya 242010e230b6Smayastruct GEN75_3DSTATE_CONSTANT_HS { 242110e230b6Smaya uint32_t DWordLength; 242210e230b6Smaya uint32_t _3DCommandSubOpcode; 242310e230b6Smaya uint32_t _3DCommandOpcode; 242410e230b6Smaya uint32_t CommandSubType; 242510e230b6Smaya uint32_t CommandType; 242610e230b6Smaya struct GEN75_3DSTATE_CONSTANT_BODY ConstantBody; 242710e230b6Smaya}; 242810e230b6Smaya 242910e230b6Smayastatic inline void 243010e230b6SmayaGEN75_3DSTATE_CONSTANT_HS_pack(__attribute__((unused)) __gen_user_data *data, 243110e230b6Smaya __attribute__((unused)) void * restrict dst, 243210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_HS * restrict values) 243310e230b6Smaya{ 243410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 243510e230b6Smaya 243610e230b6Smaya dw[0] = 243710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 243810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 243910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 244010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 244110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 244210e230b6Smaya 244310e230b6Smaya GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody); 244410e230b6Smaya} 244510e230b6Smaya 244610e230b6Smaya#define GEN75_3DSTATE_CONSTANT_PS_length 7 244710e230b6Smaya#define GEN75_3DSTATE_CONSTANT_PS_length_bias 2 244810e230b6Smaya#define GEN75_3DSTATE_CONSTANT_PS_header \ 244910e230b6Smaya .DWordLength = 5, \ 245010e230b6Smaya ._3DCommandSubOpcode = 23, \ 245110e230b6Smaya ._3DCommandOpcode = 0, \ 245210e230b6Smaya .CommandSubType = 3, \ 245310e230b6Smaya .CommandType = 3 245410e230b6Smaya 245510e230b6Smayastruct GEN75_3DSTATE_CONSTANT_PS { 245610e230b6Smaya uint32_t DWordLength; 245710e230b6Smaya uint32_t _3DCommandSubOpcode; 245810e230b6Smaya uint32_t _3DCommandOpcode; 245910e230b6Smaya uint32_t CommandSubType; 246010e230b6Smaya uint32_t CommandType; 246110e230b6Smaya struct GEN75_3DSTATE_CONSTANT_BODY ConstantBody; 246210e230b6Smaya}; 246310e230b6Smaya 246410e230b6Smayastatic inline void 246510e230b6SmayaGEN75_3DSTATE_CONSTANT_PS_pack(__attribute__((unused)) __gen_user_data *data, 246610e230b6Smaya __attribute__((unused)) void * restrict dst, 246710e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_PS * restrict values) 246810e230b6Smaya{ 246910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 247010e230b6Smaya 247110e230b6Smaya dw[0] = 247210e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 247310e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 247410e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 247510e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 247610e230b6Smaya __gen_uint(values->CommandType, 29, 31); 247710e230b6Smaya 247810e230b6Smaya GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody); 247910e230b6Smaya} 248010e230b6Smaya 248110e230b6Smaya#define GEN75_3DSTATE_CONSTANT_VS_length 7 248210e230b6Smaya#define GEN75_3DSTATE_CONSTANT_VS_length_bias 2 248310e230b6Smaya#define GEN75_3DSTATE_CONSTANT_VS_header \ 248410e230b6Smaya .DWordLength = 5, \ 248510e230b6Smaya ._3DCommandSubOpcode = 21, \ 248610e230b6Smaya ._3DCommandOpcode = 0, \ 248710e230b6Smaya .CommandSubType = 3, \ 248810e230b6Smaya .CommandType = 3 248910e230b6Smaya 249010e230b6Smayastruct GEN75_3DSTATE_CONSTANT_VS { 249110e230b6Smaya uint32_t DWordLength; 249210e230b6Smaya uint32_t _3DCommandSubOpcode; 249310e230b6Smaya uint32_t _3DCommandOpcode; 249410e230b6Smaya uint32_t CommandSubType; 249510e230b6Smaya uint32_t CommandType; 249610e230b6Smaya struct GEN75_3DSTATE_CONSTANT_BODY ConstantBody; 249710e230b6Smaya}; 249810e230b6Smaya 249910e230b6Smayastatic inline void 250010e230b6SmayaGEN75_3DSTATE_CONSTANT_VS_pack(__attribute__((unused)) __gen_user_data *data, 250110e230b6Smaya __attribute__((unused)) void * restrict dst, 250210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_VS * restrict values) 250310e230b6Smaya{ 250410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 250510e230b6Smaya 250610e230b6Smaya dw[0] = 250710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 250810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 250910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 251010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 251110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 251210e230b6Smaya 251310e230b6Smaya GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody); 251410e230b6Smaya} 251510e230b6Smaya 251610e230b6Smaya#define GEN75_3DSTATE_DEPTH_BUFFER_length 7 251710e230b6Smaya#define GEN75_3DSTATE_DEPTH_BUFFER_length_bias 2 251810e230b6Smaya#define GEN75_3DSTATE_DEPTH_BUFFER_header \ 251910e230b6Smaya .DWordLength = 5, \ 252010e230b6Smaya ._3DCommandSubOpcode = 5, \ 252110e230b6Smaya ._3DCommandOpcode = 0, \ 252210e230b6Smaya .CommandSubType = 3, \ 252310e230b6Smaya .CommandType = 3 252410e230b6Smaya 252510e230b6Smayastruct GEN75_3DSTATE_DEPTH_BUFFER { 252610e230b6Smaya uint32_t DWordLength; 252710e230b6Smaya uint32_t _3DCommandSubOpcode; 252810e230b6Smaya uint32_t _3DCommandOpcode; 252910e230b6Smaya uint32_t CommandSubType; 253010e230b6Smaya uint32_t CommandType; 253110e230b6Smaya uint32_t SurfacePitch; 253210e230b6Smaya uint32_t SurfaceFormat; 253310e230b6Smaya#define D32_FLOAT 1 253410e230b6Smaya#define D24_UNORM_X8_UINT 3 253510e230b6Smaya#define D16_UNORM 5 253610e230b6Smaya bool HierarchicalDepthBufferEnable; 253710e230b6Smaya bool StencilWriteEnable; 253810e230b6Smaya bool DepthWriteEnable; 253910e230b6Smaya uint32_t SurfaceType; 254010e230b6Smaya#define SURFTYPE_1D 0 254110e230b6Smaya#define SURFTYPE_2D 1 254210e230b6Smaya#define SURFTYPE_3D 2 254310e230b6Smaya#define SURFTYPE_CUBE 3 254410e230b6Smaya#define SURFTYPE_NULL 7 254510e230b6Smaya __gen_address_type SurfaceBaseAddress; 254610e230b6Smaya uint32_t LOD; 254710e230b6Smaya uint32_t Width; 254810e230b6Smaya uint32_t Height; 254910e230b6Smaya uint32_t MOCS; 255010e230b6Smaya uint32_t MinimumArrayElement; 255110e230b6Smaya uint32_t Depth; 255210e230b6Smaya#define SURFTYPE_CUBEmustbezero 0 255310e230b6Smaya int32_t DepthCoordinateOffsetX; 255410e230b6Smaya int32_t DepthCoordinateOffsetY; 255510e230b6Smaya uint32_t RenderTargetViewExtent; 255610e230b6Smaya}; 255710e230b6Smaya 255810e230b6Smayastatic inline void 255910e230b6SmayaGEN75_3DSTATE_DEPTH_BUFFER_pack(__attribute__((unused)) __gen_user_data *data, 256010e230b6Smaya __attribute__((unused)) void * restrict dst, 256110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_DEPTH_BUFFER * restrict values) 256210e230b6Smaya{ 256310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 256410e230b6Smaya 256510e230b6Smaya dw[0] = 256610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 256710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 256810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 256910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 257010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 257110e230b6Smaya 257210e230b6Smaya dw[1] = 257310e230b6Smaya __gen_uint(values->SurfacePitch, 0, 17) | 257410e230b6Smaya __gen_uint(values->SurfaceFormat, 18, 20) | 257510e230b6Smaya __gen_uint(values->HierarchicalDepthBufferEnable, 22, 22) | 257610e230b6Smaya __gen_uint(values->StencilWriteEnable, 27, 27) | 257710e230b6Smaya __gen_uint(values->DepthWriteEnable, 28, 28) | 257810e230b6Smaya __gen_uint(values->SurfaceType, 29, 31); 257910e230b6Smaya 258010e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0); 258110e230b6Smaya 258210e230b6Smaya dw[3] = 258310e230b6Smaya __gen_uint(values->LOD, 0, 3) | 258410e230b6Smaya __gen_uint(values->Width, 4, 17) | 258510e230b6Smaya __gen_uint(values->Height, 18, 31); 258610e230b6Smaya 258710e230b6Smaya dw[4] = 258810e230b6Smaya __gen_uint(values->MOCS, 0, 3) | 258910e230b6Smaya __gen_uint(values->MinimumArrayElement, 10, 20) | 259010e230b6Smaya __gen_uint(values->Depth, 21, 31); 259110e230b6Smaya 259210e230b6Smaya dw[5] = 259310e230b6Smaya __gen_sint(values->DepthCoordinateOffsetX, 0, 15) | 259410e230b6Smaya __gen_sint(values->DepthCoordinateOffsetY, 16, 31); 259510e230b6Smaya 259610e230b6Smaya dw[6] = 259710e230b6Smaya __gen_uint(values->RenderTargetViewExtent, 21, 31); 259810e230b6Smaya} 259910e230b6Smaya 260010e230b6Smaya#define GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_length 2 260110e230b6Smaya#define GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_length_bias 2 260210e230b6Smaya#define GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_header\ 260310e230b6Smaya .DWordLength = 0, \ 260410e230b6Smaya ._3DCommandSubOpcode = 37, \ 260510e230b6Smaya ._3DCommandOpcode = 0, \ 260610e230b6Smaya .CommandSubType = 3, \ 260710e230b6Smaya .CommandType = 3 260810e230b6Smaya 260910e230b6Smayastruct GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS { 261010e230b6Smaya uint32_t DWordLength; 261110e230b6Smaya uint32_t _3DCommandSubOpcode; 261210e230b6Smaya uint32_t _3DCommandOpcode; 261310e230b6Smaya uint32_t CommandSubType; 261410e230b6Smaya uint32_t CommandType; 261510e230b6Smaya uint64_t PointertoDEPTH_STENCIL_STATE; 261610e230b6Smaya}; 261710e230b6Smaya 261810e230b6Smayastatic inline void 261910e230b6SmayaGEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data, 262010e230b6Smaya __attribute__((unused)) void * restrict dst, 262110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS * restrict values) 262210e230b6Smaya{ 262310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 262410e230b6Smaya 262510e230b6Smaya dw[0] = 262610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 262710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 262810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 262910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 263010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 263110e230b6Smaya 263210e230b6Smaya dw[1] = 263310e230b6Smaya __gen_mbo(0, 0) | 263410e230b6Smaya __gen_offset(values->PointertoDEPTH_STENCIL_STATE, 6, 31); 263510e230b6Smaya} 263610e230b6Smaya 263710e230b6Smaya#define GEN75_3DSTATE_DRAWING_RECTANGLE_length 4 263810e230b6Smaya#define GEN75_3DSTATE_DRAWING_RECTANGLE_length_bias 2 263910e230b6Smaya#define GEN75_3DSTATE_DRAWING_RECTANGLE_header \ 264010e230b6Smaya .DWordLength = 2, \ 264110e230b6Smaya ._3DCommandSubOpcode = 0, \ 264210e230b6Smaya ._3DCommandOpcode = 1, \ 264310e230b6Smaya .CommandSubType = 3, \ 264410e230b6Smaya .CommandType = 3 264510e230b6Smaya 264610e230b6Smayastruct GEN75_3DSTATE_DRAWING_RECTANGLE { 264710e230b6Smaya uint32_t DWordLength; 264810e230b6Smaya uint32_t CoreModeSelect; 264910e230b6Smaya#define Legacy 0 265010e230b6Smaya#define Core0Enabled 1 265110e230b6Smaya#define Core1Enabled 2 265210e230b6Smaya uint32_t _3DCommandSubOpcode; 265310e230b6Smaya uint32_t _3DCommandOpcode; 265410e230b6Smaya uint32_t CommandSubType; 265510e230b6Smaya uint32_t CommandType; 265610e230b6Smaya uint32_t ClippedDrawingRectangleXMin; 265710e230b6Smaya uint32_t ClippedDrawingRectangleYMin; 265810e230b6Smaya uint32_t ClippedDrawingRectangleXMax; 265910e230b6Smaya uint32_t ClippedDrawingRectangleYMax; 266010e230b6Smaya int32_t DrawingRectangleOriginX; 266110e230b6Smaya int32_t DrawingRectangleOriginY; 266210e230b6Smaya}; 266310e230b6Smaya 266410e230b6Smayastatic inline void 266510e230b6SmayaGEN75_3DSTATE_DRAWING_RECTANGLE_pack(__attribute__((unused)) __gen_user_data *data, 266610e230b6Smaya __attribute__((unused)) void * restrict dst, 266710e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_DRAWING_RECTANGLE * restrict values) 266810e230b6Smaya{ 266910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 267010e230b6Smaya 267110e230b6Smaya dw[0] = 267210e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 267310e230b6Smaya __gen_uint(values->CoreModeSelect, 14, 15) | 267410e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 267510e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 267610e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 267710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 267810e230b6Smaya 267910e230b6Smaya dw[1] = 268010e230b6Smaya __gen_uint(values->ClippedDrawingRectangleXMin, 0, 15) | 268110e230b6Smaya __gen_uint(values->ClippedDrawingRectangleYMin, 16, 31); 268210e230b6Smaya 268310e230b6Smaya dw[2] = 268410e230b6Smaya __gen_uint(values->ClippedDrawingRectangleXMax, 0, 15) | 268510e230b6Smaya __gen_uint(values->ClippedDrawingRectangleYMax, 16, 31); 268610e230b6Smaya 268710e230b6Smaya dw[3] = 268810e230b6Smaya __gen_sint(values->DrawingRectangleOriginX, 0, 15) | 268910e230b6Smaya __gen_sint(values->DrawingRectangleOriginY, 16, 31); 269010e230b6Smaya} 269110e230b6Smaya 269210e230b6Smaya#define GEN75_3DSTATE_DS_length 6 269310e230b6Smaya#define GEN75_3DSTATE_DS_length_bias 2 269410e230b6Smaya#define GEN75_3DSTATE_DS_header \ 269510e230b6Smaya .DWordLength = 4, \ 269610e230b6Smaya ._3DCommandSubOpcode = 29, \ 269710e230b6Smaya ._3DCommandOpcode = 0, \ 269810e230b6Smaya .CommandSubType = 3, \ 269910e230b6Smaya .CommandType = 3 270010e230b6Smaya 270110e230b6Smayastruct GEN75_3DSTATE_DS { 270210e230b6Smaya uint32_t DWordLength; 270310e230b6Smaya uint32_t _3DCommandSubOpcode; 270410e230b6Smaya uint32_t _3DCommandOpcode; 270510e230b6Smaya uint32_t CommandSubType; 270610e230b6Smaya uint32_t CommandType; 270710e230b6Smaya uint64_t KernelStartPointer; 270810e230b6Smaya bool SoftwareExceptionEnable; 270910e230b6Smaya bool IllegalOpcodeExceptionEnable; 271010e230b6Smaya bool AccessesUAV; 271110e230b6Smaya uint32_t FloatingPointMode; 271210e230b6Smaya#define IEEE754 0 271310e230b6Smaya#define Alternate 1 271410e230b6Smaya uint32_t ThreadDispatchPriority; 271510e230b6Smaya#define High 1 271610e230b6Smaya uint32_t BindingTableEntryCount; 271710e230b6Smaya uint32_t SamplerCount; 271810e230b6Smaya#define NoSamplers 0 271910e230b6Smaya#define _14Samplers 1 272010e230b6Smaya#define _58Samplers 2 272110e230b6Smaya#define _912Samplers 3 272210e230b6Smaya#define _1316Samplers 4 272310e230b6Smaya bool VectorMaskEnable; 272410e230b6Smaya uint32_t SingleDomainPointDispatch; 272510e230b6Smaya uint32_t PerThreadScratchSpace; 272610e230b6Smaya __gen_address_type ScratchSpaceBasePointer; 272710e230b6Smaya uint32_t PatchURBEntryReadOffset; 272810e230b6Smaya uint32_t PatchURBEntryReadLength; 272910e230b6Smaya uint32_t DispatchGRFStartRegisterForURBData; 273010e230b6Smaya bool Enable; 273110e230b6Smaya bool DSCacheDisable; 273210e230b6Smaya bool ComputeWCoordinateEnable; 273310e230b6Smaya bool StatisticsEnable; 273410e230b6Smaya uint32_t MaximumNumberofThreads; 273510e230b6Smaya}; 273610e230b6Smaya 273710e230b6Smayastatic inline void 273810e230b6SmayaGEN75_3DSTATE_DS_pack(__attribute__((unused)) __gen_user_data *data, 273910e230b6Smaya __attribute__((unused)) void * restrict dst, 274010e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_DS * restrict values) 274110e230b6Smaya{ 274210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 274310e230b6Smaya 274410e230b6Smaya dw[0] = 274510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 274610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 274710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 274810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 274910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 275010e230b6Smaya 275110e230b6Smaya dw[1] = 275210e230b6Smaya __gen_offset(values->KernelStartPointer, 6, 31); 275310e230b6Smaya 275410e230b6Smaya dw[2] = 275510e230b6Smaya __gen_uint(values->SoftwareExceptionEnable, 7, 7) | 275610e230b6Smaya __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) | 275710e230b6Smaya __gen_uint(values->AccessesUAV, 14, 14) | 275810e230b6Smaya __gen_uint(values->FloatingPointMode, 16, 16) | 275910e230b6Smaya __gen_uint(values->ThreadDispatchPriority, 17, 17) | 276010e230b6Smaya __gen_uint(values->BindingTableEntryCount, 18, 25) | 276110e230b6Smaya __gen_uint(values->SamplerCount, 27, 29) | 276210e230b6Smaya __gen_uint(values->VectorMaskEnable, 30, 30) | 276310e230b6Smaya __gen_uint(values->SingleDomainPointDispatch, 31, 31); 276410e230b6Smaya 276510e230b6Smaya const uint32_t v3 = 276610e230b6Smaya __gen_uint(values->PerThreadScratchSpace, 0, 3); 276710e230b6Smaya dw[3] = __gen_combine_address(data, &dw[3], values->ScratchSpaceBasePointer, v3); 276810e230b6Smaya 276910e230b6Smaya dw[4] = 277010e230b6Smaya __gen_uint(values->PatchURBEntryReadOffset, 4, 9) | 277110e230b6Smaya __gen_uint(values->PatchURBEntryReadLength, 11, 17) | 277210e230b6Smaya __gen_uint(values->DispatchGRFStartRegisterForURBData, 20, 24); 277310e230b6Smaya 277410e230b6Smaya dw[5] = 277510e230b6Smaya __gen_uint(values->Enable, 0, 0) | 277610e230b6Smaya __gen_uint(values->DSCacheDisable, 1, 1) | 277710e230b6Smaya __gen_uint(values->ComputeWCoordinateEnable, 2, 2) | 277810e230b6Smaya __gen_uint(values->StatisticsEnable, 10, 10) | 277910e230b6Smaya __gen_uint(values->MaximumNumberofThreads, 21, 29); 278010e230b6Smaya} 278110e230b6Smaya 278210e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_DS_length_bias 2 278310e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_DS_header \ 278410e230b6Smaya .DWordLength = 1, \ 278510e230b6Smaya ._3DCommandSubOpcode = 55, \ 278610e230b6Smaya ._3DCommandOpcode = 0, \ 278710e230b6Smaya .CommandSubType = 3, \ 278810e230b6Smaya .CommandType = 3 278910e230b6Smaya 279010e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_DS { 279110e230b6Smaya uint32_t DWordLength; 279210e230b6Smaya uint32_t _3DCommandSubOpcode; 279310e230b6Smaya uint32_t _3DCommandOpcode; 279410e230b6Smaya uint32_t CommandSubType; 279510e230b6Smaya uint32_t CommandType; 279610e230b6Smaya uint32_t ConstantBufferBindingTableBlock; 279710e230b6Smaya uint32_t ConstantBufferValid; 279810e230b6Smaya uint64_t GatherBufferOffset; 279910e230b6Smaya /* variable length fields follow */ 280010e230b6Smaya}; 280110e230b6Smaya 280210e230b6Smayastatic inline void 280310e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_DS_pack(__attribute__((unused)) __gen_user_data *data, 280410e230b6Smaya __attribute__((unused)) void * restrict dst, 280510e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_DS * restrict values) 280610e230b6Smaya{ 280710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 280810e230b6Smaya 280910e230b6Smaya dw[0] = 281010e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 281110e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 281210e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 281310e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 281410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 281510e230b6Smaya 281610e230b6Smaya dw[1] = 281710e230b6Smaya __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) | 281810e230b6Smaya __gen_uint(values->ConstantBufferValid, 16, 31); 281910e230b6Smaya 282010e230b6Smaya dw[2] = 282110e230b6Smaya __gen_offset(values->GatherBufferOffset, 6, 22); 282210e230b6Smaya} 282310e230b6Smaya 282410e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_GS_length_bias 2 282510e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_GS_header \ 282610e230b6Smaya .DWordLength = 1, \ 282710e230b6Smaya ._3DCommandSubOpcode = 53, \ 282810e230b6Smaya ._3DCommandOpcode = 0, \ 282910e230b6Smaya .CommandSubType = 3, \ 283010e230b6Smaya .CommandType = 3 283110e230b6Smaya 283210e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_GS { 283310e230b6Smaya uint32_t DWordLength; 283410e230b6Smaya uint32_t _3DCommandSubOpcode; 283510e230b6Smaya uint32_t _3DCommandOpcode; 283610e230b6Smaya uint32_t CommandSubType; 283710e230b6Smaya uint32_t CommandType; 283810e230b6Smaya uint32_t ConstantBufferBindingTableBlock; 283910e230b6Smaya uint32_t ConstantBufferValid; 284010e230b6Smaya uint64_t GatherBufferOffset; 284110e230b6Smaya /* variable length fields follow */ 284210e230b6Smaya}; 284310e230b6Smaya 284410e230b6Smayastatic inline void 284510e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_GS_pack(__attribute__((unused)) __gen_user_data *data, 284610e230b6Smaya __attribute__((unused)) void * restrict dst, 284710e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_GS * restrict values) 284810e230b6Smaya{ 284910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 285010e230b6Smaya 285110e230b6Smaya dw[0] = 285210e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 285310e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 285410e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 285510e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 285610e230b6Smaya __gen_uint(values->CommandType, 29, 31); 285710e230b6Smaya 285810e230b6Smaya dw[1] = 285910e230b6Smaya __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) | 286010e230b6Smaya __gen_uint(values->ConstantBufferValid, 16, 31); 286110e230b6Smaya 286210e230b6Smaya dw[2] = 286310e230b6Smaya __gen_offset(values->GatherBufferOffset, 6, 22); 286410e230b6Smaya} 286510e230b6Smaya 286610e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_HS_length_bias 2 286710e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_HS_header \ 286810e230b6Smaya .DWordLength = 1, \ 286910e230b6Smaya ._3DCommandSubOpcode = 54, \ 287010e230b6Smaya ._3DCommandOpcode = 0, \ 287110e230b6Smaya .CommandSubType = 3, \ 287210e230b6Smaya .CommandType = 3 287310e230b6Smaya 287410e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_HS { 287510e230b6Smaya uint32_t DWordLength; 287610e230b6Smaya uint32_t _3DCommandSubOpcode; 287710e230b6Smaya uint32_t _3DCommandOpcode; 287810e230b6Smaya uint32_t CommandSubType; 287910e230b6Smaya uint32_t CommandType; 288010e230b6Smaya uint32_t ConstantBufferBindingTableBlock; 288110e230b6Smaya uint32_t ConstantBufferValid; 288210e230b6Smaya uint64_t GatherBufferOffset; 288310e230b6Smaya /* variable length fields follow */ 288410e230b6Smaya}; 288510e230b6Smaya 288610e230b6Smayastatic inline void 288710e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_HS_pack(__attribute__((unused)) __gen_user_data *data, 288810e230b6Smaya __attribute__((unused)) void * restrict dst, 288910e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_HS * restrict values) 289010e230b6Smaya{ 289110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 289210e230b6Smaya 289310e230b6Smaya dw[0] = 289410e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 289510e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 289610e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 289710e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 289810e230b6Smaya __gen_uint(values->CommandType, 29, 31); 289910e230b6Smaya 290010e230b6Smaya dw[1] = 290110e230b6Smaya __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) | 290210e230b6Smaya __gen_uint(values->ConstantBufferValid, 16, 31); 290310e230b6Smaya 290410e230b6Smaya dw[2] = 290510e230b6Smaya __gen_offset(values->GatherBufferOffset, 6, 22); 290610e230b6Smaya} 290710e230b6Smaya 290810e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_PS_length_bias 2 290910e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_PS_header \ 291010e230b6Smaya .DWordLength = 1, \ 291110e230b6Smaya ._3DCommandSubOpcode = 56, \ 291210e230b6Smaya ._3DCommandOpcode = 0, \ 291310e230b6Smaya .CommandSubType = 3, \ 291410e230b6Smaya .CommandType = 3 291510e230b6Smaya 291610e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_PS { 291710e230b6Smaya uint32_t DWordLength; 291810e230b6Smaya uint32_t _3DCommandSubOpcode; 291910e230b6Smaya uint32_t _3DCommandOpcode; 292010e230b6Smaya uint32_t CommandSubType; 292110e230b6Smaya uint32_t CommandType; 292210e230b6Smaya uint32_t ConstantBufferBindingTableBlock; 292310e230b6Smaya uint32_t ConstantBufferValid; 292410e230b6Smaya bool ConstantBufferDx9Enable; 292510e230b6Smaya uint64_t GatherBufferOffset; 292610e230b6Smaya /* variable length fields follow */ 292710e230b6Smaya}; 292810e230b6Smaya 292910e230b6Smayastatic inline void 293010e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_PS_pack(__attribute__((unused)) __gen_user_data *data, 293110e230b6Smaya __attribute__((unused)) void * restrict dst, 293210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_PS * restrict values) 293310e230b6Smaya{ 293410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 293510e230b6Smaya 293610e230b6Smaya dw[0] = 293710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 293810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 293910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 294010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 294110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 294210e230b6Smaya 294310e230b6Smaya dw[1] = 294410e230b6Smaya __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) | 294510e230b6Smaya __gen_uint(values->ConstantBufferValid, 16, 31); 294610e230b6Smaya 294710e230b6Smaya dw[2] = 294810e230b6Smaya __gen_uint(values->ConstantBufferDx9Enable, 4, 4) | 294910e230b6Smaya __gen_offset(values->GatherBufferOffset, 6, 22); 295010e230b6Smaya} 295110e230b6Smaya 295210e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_VS_length_bias 2 295310e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_VS_header \ 295410e230b6Smaya .DWordLength = 0, \ 295510e230b6Smaya ._3DCommandSubOpcode = 52, \ 295610e230b6Smaya ._3DCommandOpcode = 0, \ 295710e230b6Smaya .CommandSubType = 3, \ 295810e230b6Smaya .CommandType = 3 295910e230b6Smaya 296010e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_VS { 296110e230b6Smaya uint32_t DWordLength; 296210e230b6Smaya uint32_t _3DCommandSubOpcode; 296310e230b6Smaya uint32_t _3DCommandOpcode; 296410e230b6Smaya uint32_t CommandSubType; 296510e230b6Smaya uint32_t CommandType; 296610e230b6Smaya uint32_t ConstantBufferBindingTableBlock; 296710e230b6Smaya uint32_t ConstantBufferValid; 296810e230b6Smaya bool ConstantBufferDx9Enable; 296910e230b6Smaya uint64_t GatherBufferOffset; 297010e230b6Smaya /* variable length fields follow */ 297110e230b6Smaya}; 297210e230b6Smaya 297310e230b6Smayastatic inline void 297410e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_VS_pack(__attribute__((unused)) __gen_user_data *data, 297510e230b6Smaya __attribute__((unused)) void * restrict dst, 297610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_VS * restrict values) 297710e230b6Smaya{ 297810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 297910e230b6Smaya 298010e230b6Smaya dw[0] = 298110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 298210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 298310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 298410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 298510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 298610e230b6Smaya 298710e230b6Smaya dw[1] = 298810e230b6Smaya __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) | 298910e230b6Smaya __gen_uint(values->ConstantBufferValid, 16, 31); 299010e230b6Smaya 299110e230b6Smaya dw[2] = 299210e230b6Smaya __gen_uint(values->ConstantBufferDx9Enable, 4, 4) | 299310e230b6Smaya __gen_offset(values->GatherBufferOffset, 6, 22); 299410e230b6Smaya} 299510e230b6Smaya 299610e230b6Smaya#define GEN75_3DSTATE_GATHER_POOL_ALLOC_length 3 299710e230b6Smaya#define GEN75_3DSTATE_GATHER_POOL_ALLOC_length_bias 2 299810e230b6Smaya#define GEN75_3DSTATE_GATHER_POOL_ALLOC_header \ 299910e230b6Smaya .DWordLength = 1, \ 300010e230b6Smaya ._3DCommandSubOpcode = 26, \ 300110e230b6Smaya ._3DCommandOpcode = 1, \ 300210e230b6Smaya .CommandSubType = 3, \ 300310e230b6Smaya .CommandType = 3 300410e230b6Smaya 300510e230b6Smayastruct GEN75_3DSTATE_GATHER_POOL_ALLOC { 300610e230b6Smaya uint32_t DWordLength; 300710e230b6Smaya uint32_t _3DCommandSubOpcode; 300810e230b6Smaya uint32_t _3DCommandOpcode; 300910e230b6Smaya uint32_t CommandSubType; 301010e230b6Smaya uint32_t CommandType; 301110e230b6Smaya uint32_t MOCS; 301210e230b6Smaya bool GatherPoolEnable; 301310e230b6Smaya __gen_address_type GatherPoolBaseAddress; 301410e230b6Smaya __gen_address_type GatherPoolUpperBound; 301510e230b6Smaya}; 301610e230b6Smaya 301710e230b6Smayastatic inline void 301810e230b6SmayaGEN75_3DSTATE_GATHER_POOL_ALLOC_pack(__attribute__((unused)) __gen_user_data *data, 301910e230b6Smaya __attribute__((unused)) void * restrict dst, 302010e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_POOL_ALLOC * restrict values) 302110e230b6Smaya{ 302210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 302310e230b6Smaya 302410e230b6Smaya dw[0] = 302510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 302610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 302710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 302810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 302910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 303010e230b6Smaya 303110e230b6Smaya const uint32_t v1 = 303210e230b6Smaya __gen_uint(values->MOCS, 0, 3) | 303310e230b6Smaya __gen_mbo(4, 5) | 303410e230b6Smaya __gen_uint(values->GatherPoolEnable, 11, 11); 303510e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->GatherPoolBaseAddress, v1); 303610e230b6Smaya 303710e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->GatherPoolUpperBound, 0); 303810e230b6Smaya} 303910e230b6Smaya 304010e230b6Smaya#define GEN75_3DSTATE_GS_length 7 304110e230b6Smaya#define GEN75_3DSTATE_GS_length_bias 2 304210e230b6Smaya#define GEN75_3DSTATE_GS_header \ 304310e230b6Smaya .DWordLength = 5, \ 304410e230b6Smaya ._3DCommandSubOpcode = 17, \ 304510e230b6Smaya ._3DCommandOpcode = 0, \ 304610e230b6Smaya .CommandSubType = 3, \ 304710e230b6Smaya .CommandType = 3 304810e230b6Smaya 304910e230b6Smayastruct GEN75_3DSTATE_GS { 305010e230b6Smaya uint32_t DWordLength; 305110e230b6Smaya uint32_t _3DCommandSubOpcode; 305210e230b6Smaya uint32_t _3DCommandOpcode; 305310e230b6Smaya uint32_t CommandSubType; 305410e230b6Smaya uint32_t CommandType; 305510e230b6Smaya uint64_t KernelStartPointer; 305610e230b6Smaya bool SoftwareExceptionEnable; 305710e230b6Smaya bool MaskStackExceptionEnable; 305810e230b6Smaya uint32_t GSaccessesUAV; 305910e230b6Smaya bool IllegalOpcodeExceptionEnable; 306010e230b6Smaya uint32_t FloatingPointMode; 306110e230b6Smaya#define IEEE754 0 306210e230b6Smaya#define Alternate 1 306310e230b6Smaya uint32_t ThreadPriority; 306410e230b6Smaya#define NormalPriority 0 306510e230b6Smaya#define HighPriority 1 306610e230b6Smaya uint32_t BindingTableEntryCount; 306710e230b6Smaya uint32_t SamplerCount; 306810e230b6Smaya#define NoSamplers 0 306910e230b6Smaya#define _14Samplers 1 307010e230b6Smaya#define _58Samplers 2 307110e230b6Smaya#define _912Samplers 3 307210e230b6Smaya#define _1316Samplers 4 307310e230b6Smaya bool VectorMaskEnable; 307410e230b6Smaya bool SingleProgramFlow; 307510e230b6Smaya uint32_t PerThreadScratchSpace; 307610e230b6Smaya __gen_address_type ScratchSpaceBasePointer; 307710e230b6Smaya uint32_t DispatchGRFStartRegisterForURBData; 307810e230b6Smaya uint32_t VertexURBEntryReadOffset; 307910e230b6Smaya bool IncludeVertexHandles; 308010e230b6Smaya uint32_t VertexURBEntryReadLength; 308110e230b6Smaya enum GEN75_3D_Prim_Topo_Type OutputTopology; 308210e230b6Smaya uint32_t OutputVertexSize; 308310e230b6Smaya bool Enable; 308410e230b6Smaya bool DiscardAdjacency; 308510e230b6Smaya uint32_t ReorderMode; 308610e230b6Smaya#define LEADING 0 308710e230b6Smaya#define TRAILING 1 308810e230b6Smaya uint32_t Hint; 308910e230b6Smaya bool IncludePrimitiveID; 309010e230b6Smaya uint32_t GSInvocationsIncrementValue; 309110e230b6Smaya uint32_t StatisticsEnable; 309210e230b6Smaya uint32_t DispatchMode; 309310e230b6Smaya#define DISPATCH_MODE_SINGLE 0 309410e230b6Smaya#define DISPATCH_MODE_DUAL_INSTANCE 1 309510e230b6Smaya#define DISPATCH_MODE_DUAL_OBJECT 2 309610e230b6Smaya uint32_t DefaultStreamID; 309710e230b6Smaya uint32_t InstanceControl; 309810e230b6Smaya uint32_t ControlDataHeaderSize; 309910e230b6Smaya uint32_t MaximumNumberofThreads; 310010e230b6Smaya uint64_t SemaphoreHandle; 310110e230b6Smaya uint32_t ControlDataFormat; 310210e230b6Smaya#define GSCTL_CUT 0 310310e230b6Smaya#define GSCTL_SID 1 310410e230b6Smaya}; 310510e230b6Smaya 310610e230b6Smayastatic inline void 310710e230b6SmayaGEN75_3DSTATE_GS_pack(__attribute__((unused)) __gen_user_data *data, 310810e230b6Smaya __attribute__((unused)) void * restrict dst, 310910e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_GS * restrict values) 311010e230b6Smaya{ 311110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 311210e230b6Smaya 311310e230b6Smaya dw[0] = 311410e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 311510e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 311610e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 311710e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 311810e230b6Smaya __gen_uint(values->CommandType, 29, 31); 311910e230b6Smaya 312010e230b6Smaya dw[1] = 312110e230b6Smaya __gen_offset(values->KernelStartPointer, 6, 31); 312210e230b6Smaya 312310e230b6Smaya dw[2] = 312410e230b6Smaya __gen_uint(values->SoftwareExceptionEnable, 7, 7) | 312510e230b6Smaya __gen_uint(values->MaskStackExceptionEnable, 11, 11) | 312610e230b6Smaya __gen_uint(values->GSaccessesUAV, 12, 12) | 312710e230b6Smaya __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) | 312810e230b6Smaya __gen_uint(values->FloatingPointMode, 16, 16) | 312910e230b6Smaya __gen_uint(values->ThreadPriority, 17, 17) | 313010e230b6Smaya __gen_uint(values->BindingTableEntryCount, 18, 25) | 313110e230b6Smaya __gen_uint(values->SamplerCount, 27, 29) | 313210e230b6Smaya __gen_uint(values->VectorMaskEnable, 30, 30) | 313310e230b6Smaya __gen_uint(values->SingleProgramFlow, 31, 31); 313410e230b6Smaya 313510e230b6Smaya const uint32_t v3 = 313610e230b6Smaya __gen_uint(values->PerThreadScratchSpace, 0, 3); 313710e230b6Smaya dw[3] = __gen_combine_address(data, &dw[3], values->ScratchSpaceBasePointer, v3); 313810e230b6Smaya 313910e230b6Smaya dw[4] = 314010e230b6Smaya __gen_uint(values->DispatchGRFStartRegisterForURBData, 0, 3) | 314110e230b6Smaya __gen_uint(values->VertexURBEntryReadOffset, 4, 9) | 314210e230b6Smaya __gen_uint(values->IncludeVertexHandles, 10, 10) | 314310e230b6Smaya __gen_uint(values->VertexURBEntryReadLength, 11, 16) | 314410e230b6Smaya __gen_uint(values->OutputTopology, 17, 22) | 314510e230b6Smaya __gen_uint(values->OutputVertexSize, 23, 28); 314610e230b6Smaya 314710e230b6Smaya dw[5] = 314810e230b6Smaya __gen_uint(values->Enable, 0, 0) | 314910e230b6Smaya __gen_uint(values->DiscardAdjacency, 1, 1) | 315010e230b6Smaya __gen_uint(values->ReorderMode, 2, 2) | 315110e230b6Smaya __gen_uint(values->Hint, 3, 3) | 315210e230b6Smaya __gen_uint(values->IncludePrimitiveID, 4, 4) | 315310e230b6Smaya __gen_uint(values->GSInvocationsIncrementValue, 5, 9) | 315410e230b6Smaya __gen_uint(values->StatisticsEnable, 10, 10) | 315510e230b6Smaya __gen_uint(values->DispatchMode, 11, 12) | 315610e230b6Smaya __gen_uint(values->DefaultStreamID, 13, 14) | 315710e230b6Smaya __gen_uint(values->InstanceControl, 15, 19) | 315810e230b6Smaya __gen_uint(values->ControlDataHeaderSize, 20, 23) | 315910e230b6Smaya __gen_uint(values->MaximumNumberofThreads, 24, 31); 316010e230b6Smaya 316110e230b6Smaya dw[6] = 316210e230b6Smaya __gen_offset(values->SemaphoreHandle, 0, 12) | 316310e230b6Smaya __gen_uint(values->ControlDataFormat, 31, 31); 316410e230b6Smaya} 316510e230b6Smaya 316610e230b6Smaya#define GEN75_3DSTATE_HIER_DEPTH_BUFFER_length 3 316710e230b6Smaya#define GEN75_3DSTATE_HIER_DEPTH_BUFFER_length_bias 2 316810e230b6Smaya#define GEN75_3DSTATE_HIER_DEPTH_BUFFER_header \ 316910e230b6Smaya .DWordLength = 1, \ 317010e230b6Smaya ._3DCommandSubOpcode = 7, \ 317110e230b6Smaya ._3DCommandOpcode = 0, \ 317210e230b6Smaya .CommandSubType = 3, \ 317310e230b6Smaya .CommandType = 3 317410e230b6Smaya 317510e230b6Smayastruct GEN75_3DSTATE_HIER_DEPTH_BUFFER { 317610e230b6Smaya uint32_t DWordLength; 317710e230b6Smaya uint32_t _3DCommandSubOpcode; 317810e230b6Smaya uint32_t _3DCommandOpcode; 317910e230b6Smaya uint32_t CommandSubType; 318010e230b6Smaya uint32_t CommandType; 318110e230b6Smaya uint32_t SurfacePitch; 318210e230b6Smaya uint32_t MOCS; 318310e230b6Smaya __gen_address_type SurfaceBaseAddress; 318410e230b6Smaya}; 318510e230b6Smaya 318610e230b6Smayastatic inline void 318710e230b6SmayaGEN75_3DSTATE_HIER_DEPTH_BUFFER_pack(__attribute__((unused)) __gen_user_data *data, 318810e230b6Smaya __attribute__((unused)) void * restrict dst, 318910e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_HIER_DEPTH_BUFFER * restrict values) 319010e230b6Smaya{ 319110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 319210e230b6Smaya 319310e230b6Smaya dw[0] = 319410e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 319510e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 319610e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 319710e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 319810e230b6Smaya __gen_uint(values->CommandType, 29, 31); 319910e230b6Smaya 320010e230b6Smaya dw[1] = 320110e230b6Smaya __gen_uint(values->SurfacePitch, 0, 16) | 320210e230b6Smaya __gen_uint(values->MOCS, 25, 28); 320310e230b6Smaya 320410e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0); 320510e230b6Smaya} 320610e230b6Smaya 320710e230b6Smaya#define GEN75_3DSTATE_HS_length 7 320810e230b6Smaya#define GEN75_3DSTATE_HS_length_bias 2 320910e230b6Smaya#define GEN75_3DSTATE_HS_header \ 321010e230b6Smaya .DWordLength = 5, \ 321110e230b6Smaya ._3DCommandSubOpcode = 27, \ 321210e230b6Smaya ._3DCommandOpcode = 0, \ 321310e230b6Smaya .CommandSubType = 3, \ 321410e230b6Smaya .CommandType = 3 321510e230b6Smaya 321610e230b6Smayastruct GEN75_3DSTATE_HS { 321710e230b6Smaya uint32_t DWordLength; 321810e230b6Smaya uint32_t _3DCommandSubOpcode; 321910e230b6Smaya uint32_t _3DCommandOpcode; 322010e230b6Smaya uint32_t CommandSubType; 322110e230b6Smaya uint32_t CommandType; 322210e230b6Smaya uint32_t MaximumNumberofThreads; 322310e230b6Smaya bool SoftwareExceptionEnable; 322410e230b6Smaya bool IllegalOpcodeExceptionEnable; 322510e230b6Smaya uint32_t FloatingPointMode; 322610e230b6Smaya#define IEEE754 0 322710e230b6Smaya#define Alternate 1 322810e230b6Smaya uint32_t ThreadDispatchPriority; 322910e230b6Smaya#define High 1 323010e230b6Smaya uint32_t BindingTableEntryCount; 323110e230b6Smaya uint32_t SamplerCount; 323210e230b6Smaya#define NoSamplers 0 323310e230b6Smaya#define _14Samplers 1 323410e230b6Smaya#define _58Samplers 2 323510e230b6Smaya#define _912Samplers 3 323610e230b6Smaya#define _1316Samplers 4 323710e230b6Smaya uint32_t InstanceCount; 323810e230b6Smaya bool StatisticsEnable; 323910e230b6Smaya bool Enable; 324010e230b6Smaya uint64_t KernelStartPointer; 324110e230b6Smaya uint32_t PerThreadScratchSpace; 324210e230b6Smaya __gen_address_type ScratchSpaceBasePointer; 324310e230b6Smaya uint32_t VertexURBEntryReadOffset; 324410e230b6Smaya uint32_t VertexURBEntryReadLength; 324510e230b6Smaya uint32_t DispatchGRFStartRegisterForURBData; 324610e230b6Smaya bool IncludeVertexHandles; 324710e230b6Smaya bool HSaccessesUAV; 324810e230b6Smaya bool VectorMaskEnable; 324910e230b6Smaya bool SingleProgramFlow; 325010e230b6Smaya uint64_t SemaphoreHandle; 325110e230b6Smaya}; 325210e230b6Smaya 325310e230b6Smayastatic inline void 325410e230b6SmayaGEN75_3DSTATE_HS_pack(__attribute__((unused)) __gen_user_data *data, 325510e230b6Smaya __attribute__((unused)) void * restrict dst, 325610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_HS * restrict values) 325710e230b6Smaya{ 325810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 325910e230b6Smaya 326010e230b6Smaya dw[0] = 326110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 326210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 326310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 326410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 326510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 326610e230b6Smaya 326710e230b6Smaya dw[1] = 326810e230b6Smaya __gen_uint(values->MaximumNumberofThreads, 0, 7) | 326910e230b6Smaya __gen_uint(values->SoftwareExceptionEnable, 12, 12) | 327010e230b6Smaya __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) | 327110e230b6Smaya __gen_uint(values->FloatingPointMode, 16, 16) | 327210e230b6Smaya __gen_uint(values->ThreadDispatchPriority, 17, 17) | 327310e230b6Smaya __gen_uint(values->BindingTableEntryCount, 18, 25) | 327410e230b6Smaya __gen_uint(values->SamplerCount, 27, 29); 327510e230b6Smaya 327610e230b6Smaya dw[2] = 327710e230b6Smaya __gen_uint(values->InstanceCount, 0, 3) | 327810e230b6Smaya __gen_uint(values->StatisticsEnable, 29, 29) | 327910e230b6Smaya __gen_uint(values->Enable, 31, 31); 328010e230b6Smaya 328110e230b6Smaya dw[3] = 328210e230b6Smaya __gen_offset(values->KernelStartPointer, 6, 31); 328310e230b6Smaya 328410e230b6Smaya const uint32_t v4 = 328510e230b6Smaya __gen_uint(values->PerThreadScratchSpace, 0, 3); 328610e230b6Smaya dw[4] = __gen_combine_address(data, &dw[4], values->ScratchSpaceBasePointer, v4); 328710e230b6Smaya 328810e230b6Smaya dw[5] = 328910e230b6Smaya __gen_uint(values->VertexURBEntryReadOffset, 4, 9) | 329010e230b6Smaya __gen_uint(values->VertexURBEntryReadLength, 11, 16) | 329110e230b6Smaya __gen_uint(values->DispatchGRFStartRegisterForURBData, 19, 23) | 329210e230b6Smaya __gen_uint(values->IncludeVertexHandles, 24, 24) | 329310e230b6Smaya __gen_uint(values->HSaccessesUAV, 25, 25) | 329410e230b6Smaya __gen_uint(values->VectorMaskEnable, 26, 26) | 329510e230b6Smaya __gen_uint(values->SingleProgramFlow, 27, 27); 329610e230b6Smaya 329710e230b6Smaya dw[6] = 329810e230b6Smaya __gen_offset(values->SemaphoreHandle, 0, 12); 329910e230b6Smaya} 330010e230b6Smaya 330110e230b6Smaya#define GEN75_3DSTATE_INDEX_BUFFER_length 3 330210e230b6Smaya#define GEN75_3DSTATE_INDEX_BUFFER_length_bias 2 330310e230b6Smaya#define GEN75_3DSTATE_INDEX_BUFFER_header \ 330410e230b6Smaya .DWordLength = 1, \ 330510e230b6Smaya ._3DCommandSubOpcode = 10, \ 330610e230b6Smaya ._3DCommandOpcode = 0, \ 330710e230b6Smaya .CommandSubType = 3, \ 330810e230b6Smaya .CommandType = 3 330910e230b6Smaya 331010e230b6Smayastruct GEN75_3DSTATE_INDEX_BUFFER { 331110e230b6Smaya uint32_t DWordLength; 331210e230b6Smaya uint32_t IndexFormat; 331310e230b6Smaya#define INDEX_BYTE 0 331410e230b6Smaya#define INDEX_WORD 1 331510e230b6Smaya#define INDEX_DWORD 2 331610e230b6Smaya uint32_t MOCS; 331710e230b6Smaya uint32_t _3DCommandSubOpcode; 331810e230b6Smaya uint32_t _3DCommandOpcode; 331910e230b6Smaya uint32_t CommandSubType; 332010e230b6Smaya uint32_t CommandType; 332110e230b6Smaya __gen_address_type BufferStartingAddress; 332210e230b6Smaya __gen_address_type BufferEndingAddress; 332310e230b6Smaya}; 332410e230b6Smaya 332510e230b6Smayastatic inline void 332610e230b6SmayaGEN75_3DSTATE_INDEX_BUFFER_pack(__attribute__((unused)) __gen_user_data *data, 332710e230b6Smaya __attribute__((unused)) void * restrict dst, 332810e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_INDEX_BUFFER * restrict values) 332910e230b6Smaya{ 333010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 333110e230b6Smaya 333210e230b6Smaya dw[0] = 333310e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 333410e230b6Smaya __gen_uint(values->IndexFormat, 8, 9) | 333510e230b6Smaya __gen_uint(values->MOCS, 12, 15) | 333610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 333710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 333810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 333910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 334010e230b6Smaya 334110e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->BufferStartingAddress, 0); 334210e230b6Smaya 334310e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->BufferEndingAddress, 0); 334410e230b6Smaya} 334510e230b6Smaya 334610e230b6Smaya#define GEN75_3DSTATE_LINE_STIPPLE_length 3 334710e230b6Smaya#define GEN75_3DSTATE_LINE_STIPPLE_length_bias 2 334810e230b6Smaya#define GEN75_3DSTATE_LINE_STIPPLE_header \ 334910e230b6Smaya .DWordLength = 1, \ 335010e230b6Smaya ._3DCommandSubOpcode = 8, \ 335110e230b6Smaya ._3DCommandOpcode = 1, \ 335210e230b6Smaya .CommandSubType = 3, \ 335310e230b6Smaya .CommandType = 3 335410e230b6Smaya 335510e230b6Smayastruct GEN75_3DSTATE_LINE_STIPPLE { 335610e230b6Smaya uint32_t DWordLength; 335710e230b6Smaya uint32_t _3DCommandSubOpcode; 335810e230b6Smaya uint32_t _3DCommandOpcode; 335910e230b6Smaya uint32_t CommandSubType; 336010e230b6Smaya uint32_t CommandType; 336110e230b6Smaya uint32_t LineStipplePattern; 336210e230b6Smaya uint32_t CurrentStippleIndex; 336310e230b6Smaya uint32_t CurrentRepeatCounter; 336410e230b6Smaya bool ModifyEnableCurrentRepeatCounterCurrentStippleIndex; 336510e230b6Smaya uint32_t LineStippleRepeatCount; 336610e230b6Smaya float LineStippleInverseRepeatCount; 336710e230b6Smaya}; 336810e230b6Smaya 336910e230b6Smayastatic inline void 337010e230b6SmayaGEN75_3DSTATE_LINE_STIPPLE_pack(__attribute__((unused)) __gen_user_data *data, 337110e230b6Smaya __attribute__((unused)) void * restrict dst, 337210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_LINE_STIPPLE * restrict values) 337310e230b6Smaya{ 337410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 337510e230b6Smaya 337610e230b6Smaya dw[0] = 337710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 337810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 337910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 338010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 338110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 338210e230b6Smaya 338310e230b6Smaya dw[1] = 338410e230b6Smaya __gen_uint(values->LineStipplePattern, 0, 15) | 338510e230b6Smaya __gen_uint(values->CurrentStippleIndex, 16, 19) | 338610e230b6Smaya __gen_uint(values->CurrentRepeatCounter, 21, 29) | 338710e230b6Smaya __gen_uint(values->ModifyEnableCurrentRepeatCounterCurrentStippleIndex, 31, 31); 338810e230b6Smaya 338910e230b6Smaya dw[2] = 339010e230b6Smaya __gen_uint(values->LineStippleRepeatCount, 0, 8) | 339110e230b6Smaya __gen_ufixed(values->LineStippleInverseRepeatCount, 15, 31, 16); 339210e230b6Smaya} 339310e230b6Smaya 339410e230b6Smaya#define GEN75_3DSTATE_MONOFILTER_SIZE_length 2 339510e230b6Smaya#define GEN75_3DSTATE_MONOFILTER_SIZE_length_bias 2 339610e230b6Smaya#define GEN75_3DSTATE_MONOFILTER_SIZE_header \ 339710e230b6Smaya .DWordLength = 0, \ 339810e230b6Smaya ._3DCommandSubOpcode = 17, \ 339910e230b6Smaya ._3DCommandOpcode = 1, \ 340010e230b6Smaya .CommandSubType = 3, \ 340110e230b6Smaya .CommandType = 3 340210e230b6Smaya 340310e230b6Smayastruct GEN75_3DSTATE_MONOFILTER_SIZE { 340410e230b6Smaya uint32_t DWordLength; 340510e230b6Smaya uint32_t _3DCommandSubOpcode; 340610e230b6Smaya uint32_t _3DCommandOpcode; 340710e230b6Smaya uint32_t CommandSubType; 340810e230b6Smaya uint32_t CommandType; 340910e230b6Smaya uint32_t MonochromeFilterHeight; 341010e230b6Smaya uint32_t MonochromeFilterWidth; 341110e230b6Smaya}; 341210e230b6Smaya 341310e230b6Smayastatic inline void 341410e230b6SmayaGEN75_3DSTATE_MONOFILTER_SIZE_pack(__attribute__((unused)) __gen_user_data *data, 341510e230b6Smaya __attribute__((unused)) void * restrict dst, 341610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_MONOFILTER_SIZE * restrict values) 341710e230b6Smaya{ 341810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 341910e230b6Smaya 342010e230b6Smaya dw[0] = 342110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 342210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 342310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 342410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 342510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 342610e230b6Smaya 342710e230b6Smaya dw[1] = 342810e230b6Smaya __gen_uint(values->MonochromeFilterHeight, 0, 2) | 342910e230b6Smaya __gen_uint(values->MonochromeFilterWidth, 3, 5); 343010e230b6Smaya} 343110e230b6Smaya 343210e230b6Smaya#define GEN75_3DSTATE_MULTISAMPLE_length 4 343310e230b6Smaya#define GEN75_3DSTATE_MULTISAMPLE_length_bias 2 343410e230b6Smaya#define GEN75_3DSTATE_MULTISAMPLE_header \ 343510e230b6Smaya .DWordLength = 2, \ 343610e230b6Smaya ._3DCommandSubOpcode = 13, \ 343710e230b6Smaya ._3DCommandOpcode = 1, \ 343810e230b6Smaya .CommandSubType = 3, \ 343910e230b6Smaya .CommandType = 3 344010e230b6Smaya 344110e230b6Smayastruct GEN75_3DSTATE_MULTISAMPLE { 344210e230b6Smaya uint32_t DWordLength; 344310e230b6Smaya uint32_t _3DCommandSubOpcode; 344410e230b6Smaya uint32_t _3DCommandOpcode; 344510e230b6Smaya uint32_t CommandSubType; 344610e230b6Smaya uint32_t CommandType; 344710e230b6Smaya uint32_t NumberofMultisamples; 344810e230b6Smaya#define NUMSAMPLES_1 0 344910e230b6Smaya#define NUMSAMPLES_4 2 345010e230b6Smaya#define NUMSAMPLES_8 3 345110e230b6Smaya uint32_t PixelLocation; 345210e230b6Smaya#define CENTER 0 345310e230b6Smaya#define UL_CORNER 1 345410e230b6Smaya bool MultiSampleEnable; 345510e230b6Smaya float Sample0YOffset; 345610e230b6Smaya float Sample0XOffset; 345710e230b6Smaya float Sample1YOffset; 345810e230b6Smaya float Sample1XOffset; 345910e230b6Smaya float Sample2YOffset; 346010e230b6Smaya float Sample2XOffset; 346110e230b6Smaya float Sample3YOffset; 346210e230b6Smaya float Sample3XOffset; 346310e230b6Smaya float Sample4YOffset; 346410e230b6Smaya float Sample4XOffset; 346510e230b6Smaya float Sample5YOffset; 346610e230b6Smaya float Sample5XOffset; 346710e230b6Smaya float Sample6YOffset; 346810e230b6Smaya float Sample6XOffset; 346910e230b6Smaya float Sample7YOffset; 347010e230b6Smaya float Sample7XOffset; 347110e230b6Smaya}; 347210e230b6Smaya 347310e230b6Smayastatic inline void 347410e230b6SmayaGEN75_3DSTATE_MULTISAMPLE_pack(__attribute__((unused)) __gen_user_data *data, 347510e230b6Smaya __attribute__((unused)) void * restrict dst, 347610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_MULTISAMPLE * restrict values) 347710e230b6Smaya{ 347810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 347910e230b6Smaya 348010e230b6Smaya dw[0] = 348110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 348210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 348310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 348410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 348510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 348610e230b6Smaya 348710e230b6Smaya dw[1] = 348810e230b6Smaya __gen_uint(values->NumberofMultisamples, 1, 3) | 348910e230b6Smaya __gen_uint(values->PixelLocation, 4, 4) | 349010e230b6Smaya __gen_uint(values->MultiSampleEnable, 5, 5); 349110e230b6Smaya 349210e230b6Smaya dw[2] = 349310e230b6Smaya __gen_ufixed(values->Sample0YOffset, 0, 3, 4) | 349410e230b6Smaya __gen_ufixed(values->Sample0XOffset, 4, 7, 4) | 349510e230b6Smaya __gen_ufixed(values->Sample1YOffset, 8, 11, 4) | 349610e230b6Smaya __gen_ufixed(values->Sample1XOffset, 12, 15, 4) | 349710e230b6Smaya __gen_ufixed(values->Sample2YOffset, 16, 19, 4) | 349810e230b6Smaya __gen_ufixed(values->Sample2XOffset, 20, 23, 4) | 349910e230b6Smaya __gen_ufixed(values->Sample3YOffset, 24, 27, 4) | 350010e230b6Smaya __gen_ufixed(values->Sample3XOffset, 28, 31, 4); 350110e230b6Smaya 350210e230b6Smaya dw[3] = 350310e230b6Smaya __gen_ufixed(values->Sample4YOffset, 0, 3, 4) | 350410e230b6Smaya __gen_ufixed(values->Sample4XOffset, 4, 7, 4) | 350510e230b6Smaya __gen_ufixed(values->Sample5YOffset, 8, 11, 4) | 350610e230b6Smaya __gen_ufixed(values->Sample5XOffset, 12, 15, 4) | 350710e230b6Smaya __gen_ufixed(values->Sample6YOffset, 16, 19, 4) | 350810e230b6Smaya __gen_ufixed(values->Sample6XOffset, 20, 23, 4) | 350910e230b6Smaya __gen_ufixed(values->Sample7YOffset, 24, 27, 4) | 351010e230b6Smaya __gen_ufixed(values->Sample7XOffset, 28, 31, 4); 351110e230b6Smaya} 351210e230b6Smaya 351310e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_OFFSET_length 2 351410e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_OFFSET_length_bias 2 351510e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_OFFSET_header\ 351610e230b6Smaya .DWordLength = 0, \ 351710e230b6Smaya ._3DCommandSubOpcode = 6, \ 351810e230b6Smaya ._3DCommandOpcode = 1, \ 351910e230b6Smaya .CommandSubType = 3, \ 352010e230b6Smaya .CommandType = 3 352110e230b6Smaya 352210e230b6Smayastruct GEN75_3DSTATE_POLY_STIPPLE_OFFSET { 352310e230b6Smaya uint32_t DWordLength; 352410e230b6Smaya uint32_t _3DCommandSubOpcode; 352510e230b6Smaya uint32_t _3DCommandOpcode; 352610e230b6Smaya uint32_t CommandSubType; 352710e230b6Smaya uint32_t CommandType; 352810e230b6Smaya uint32_t PolygonStippleYOffset; 352910e230b6Smaya uint32_t PolygonStippleXOffset; 353010e230b6Smaya}; 353110e230b6Smaya 353210e230b6Smayastatic inline void 353310e230b6SmayaGEN75_3DSTATE_POLY_STIPPLE_OFFSET_pack(__attribute__((unused)) __gen_user_data *data, 353410e230b6Smaya __attribute__((unused)) void * restrict dst, 353510e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_POLY_STIPPLE_OFFSET * restrict values) 353610e230b6Smaya{ 353710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 353810e230b6Smaya 353910e230b6Smaya dw[0] = 354010e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 354110e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 354210e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 354310e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 354410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 354510e230b6Smaya 354610e230b6Smaya dw[1] = 354710e230b6Smaya __gen_uint(values->PolygonStippleYOffset, 0, 4) | 354810e230b6Smaya __gen_uint(values->PolygonStippleXOffset, 8, 12); 354910e230b6Smaya} 355010e230b6Smaya 355110e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_PATTERN_length 33 355210e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_PATTERN_length_bias 2 355310e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_PATTERN_header\ 355410e230b6Smaya .DWordLength = 31, \ 355510e230b6Smaya ._3DCommandSubOpcode = 7, \ 355610e230b6Smaya ._3DCommandOpcode = 1, \ 355710e230b6Smaya .CommandSubType = 3, \ 355810e230b6Smaya .CommandType = 3 355910e230b6Smaya 356010e230b6Smayastruct GEN75_3DSTATE_POLY_STIPPLE_PATTERN { 356110e230b6Smaya uint32_t DWordLength; 356210e230b6Smaya uint32_t _3DCommandSubOpcode; 356310e230b6Smaya uint32_t _3DCommandOpcode; 356410e230b6Smaya uint32_t CommandSubType; 356510e230b6Smaya uint32_t CommandType; 356610e230b6Smaya uint32_t PatternRow[32]; 356710e230b6Smaya}; 356810e230b6Smaya 356910e230b6Smayastatic inline void 357010e230b6SmayaGEN75_3DSTATE_POLY_STIPPLE_PATTERN_pack(__attribute__((unused)) __gen_user_data *data, 357110e230b6Smaya __attribute__((unused)) void * restrict dst, 357210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_POLY_STIPPLE_PATTERN * restrict values) 357310e230b6Smaya{ 357410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 357510e230b6Smaya 357610e230b6Smaya dw[0] = 357710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 357810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 357910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 358010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 358110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 358210e230b6Smaya 358310e230b6Smaya dw[1] = 358410e230b6Smaya __gen_uint(values->PatternRow[0], 0, 31); 358510e230b6Smaya 358610e230b6Smaya dw[2] = 358710e230b6Smaya __gen_uint(values->PatternRow[1], 0, 31); 358810e230b6Smaya 358910e230b6Smaya dw[3] = 359010e230b6Smaya __gen_uint(values->PatternRow[2], 0, 31); 359110e230b6Smaya 359210e230b6Smaya dw[4] = 359310e230b6Smaya __gen_uint(values->PatternRow[3], 0, 31); 359410e230b6Smaya 359510e230b6Smaya dw[5] = 359610e230b6Smaya __gen_uint(values->PatternRow[4], 0, 31); 359710e230b6Smaya 359810e230b6Smaya dw[6] = 359910e230b6Smaya __gen_uint(values->PatternRow[5], 0, 31); 360010e230b6Smaya 360110e230b6Smaya dw[7] = 360210e230b6Smaya __gen_uint(values->PatternRow[6], 0, 31); 360310e230b6Smaya 360410e230b6Smaya dw[8] = 360510e230b6Smaya __gen_uint(values->PatternRow[7], 0, 31); 360610e230b6Smaya 360710e230b6Smaya dw[9] = 360810e230b6Smaya __gen_uint(values->PatternRow[8], 0, 31); 360910e230b6Smaya 361010e230b6Smaya dw[10] = 361110e230b6Smaya __gen_uint(values->PatternRow[9], 0, 31); 361210e230b6Smaya 361310e230b6Smaya dw[11] = 361410e230b6Smaya __gen_uint(values->PatternRow[10], 0, 31); 361510e230b6Smaya 361610e230b6Smaya dw[12] = 361710e230b6Smaya __gen_uint(values->PatternRow[11], 0, 31); 361810e230b6Smaya 361910e230b6Smaya dw[13] = 362010e230b6Smaya __gen_uint(values->PatternRow[12], 0, 31); 362110e230b6Smaya 362210e230b6Smaya dw[14] = 362310e230b6Smaya __gen_uint(values->PatternRow[13], 0, 31); 362410e230b6Smaya 362510e230b6Smaya dw[15] = 362610e230b6Smaya __gen_uint(values->PatternRow[14], 0, 31); 362710e230b6Smaya 362810e230b6Smaya dw[16] = 362910e230b6Smaya __gen_uint(values->PatternRow[15], 0, 31); 363010e230b6Smaya 363110e230b6Smaya dw[17] = 363210e230b6Smaya __gen_uint(values->PatternRow[16], 0, 31); 363310e230b6Smaya 363410e230b6Smaya dw[18] = 363510e230b6Smaya __gen_uint(values->PatternRow[17], 0, 31); 363610e230b6Smaya 363710e230b6Smaya dw[19] = 363810e230b6Smaya __gen_uint(values->PatternRow[18], 0, 31); 363910e230b6Smaya 364010e230b6Smaya dw[20] = 364110e230b6Smaya __gen_uint(values->PatternRow[19], 0, 31); 364210e230b6Smaya 364310e230b6Smaya dw[21] = 364410e230b6Smaya __gen_uint(values->PatternRow[20], 0, 31); 364510e230b6Smaya 364610e230b6Smaya dw[22] = 364710e230b6Smaya __gen_uint(values->PatternRow[21], 0, 31); 364810e230b6Smaya 364910e230b6Smaya dw[23] = 365010e230b6Smaya __gen_uint(values->PatternRow[22], 0, 31); 365110e230b6Smaya 365210e230b6Smaya dw[24] = 365310e230b6Smaya __gen_uint(values->PatternRow[23], 0, 31); 365410e230b6Smaya 365510e230b6Smaya dw[25] = 365610e230b6Smaya __gen_uint(values->PatternRow[24], 0, 31); 365710e230b6Smaya 365810e230b6Smaya dw[26] = 365910e230b6Smaya __gen_uint(values->PatternRow[25], 0, 31); 366010e230b6Smaya 366110e230b6Smaya dw[27] = 366210e230b6Smaya __gen_uint(values->PatternRow[26], 0, 31); 366310e230b6Smaya 366410e230b6Smaya dw[28] = 366510e230b6Smaya __gen_uint(values->PatternRow[27], 0, 31); 366610e230b6Smaya 366710e230b6Smaya dw[29] = 366810e230b6Smaya __gen_uint(values->PatternRow[28], 0, 31); 366910e230b6Smaya 367010e230b6Smaya dw[30] = 367110e230b6Smaya __gen_uint(values->PatternRow[29], 0, 31); 367210e230b6Smaya 367310e230b6Smaya dw[31] = 367410e230b6Smaya __gen_uint(values->PatternRow[30], 0, 31); 367510e230b6Smaya 367610e230b6Smaya dw[32] = 367710e230b6Smaya __gen_uint(values->PatternRow[31], 0, 31); 367810e230b6Smaya} 367910e230b6Smaya 368010e230b6Smaya#define GEN75_3DSTATE_PS_length 8 368110e230b6Smaya#define GEN75_3DSTATE_PS_length_bias 2 368210e230b6Smaya#define GEN75_3DSTATE_PS_header \ 368310e230b6Smaya .DWordLength = 6, \ 368410e230b6Smaya ._3DCommandSubOpcode = 32, \ 368510e230b6Smaya ._3DCommandOpcode = 0, \ 368610e230b6Smaya .CommandSubType = 3, \ 368710e230b6Smaya .CommandType = 3 368810e230b6Smaya 368910e230b6Smayastruct GEN75_3DSTATE_PS { 369010e230b6Smaya uint32_t DWordLength; 369110e230b6Smaya uint32_t _3DCommandSubOpcode; 369210e230b6Smaya uint32_t _3DCommandOpcode; 369310e230b6Smaya uint32_t CommandSubType; 369410e230b6Smaya uint32_t CommandType; 369510e230b6Smaya uint64_t KernelStartPointer0; 369610e230b6Smaya bool SoftwareExceptionEnable; 369710e230b6Smaya bool MaskStackExceptionEnable; 369810e230b6Smaya bool IllegalOpcodeExceptionEnable; 369910e230b6Smaya uint32_t RoundingMode; 370010e230b6Smaya#define RTNE 0 370110e230b6Smaya#define RU 1 370210e230b6Smaya#define RD 2 370310e230b6Smaya#define RTZ 3 370410e230b6Smaya uint32_t FloatingPointMode; 370510e230b6Smaya#define IEEE754 0 370610e230b6Smaya#define Alternate 1 370710e230b6Smaya uint32_t ThreadPriority; 370810e230b6Smaya#define High 1 370910e230b6Smaya uint32_t BindingTableEntryCount; 371010e230b6Smaya uint32_t DenormalMode; 371110e230b6Smaya#define FTZ 0 371210e230b6Smaya#define RET 1 371310e230b6Smaya uint32_t SamplerCount; 371410e230b6Smaya bool VectorMaskEnable; 371510e230b6Smaya bool SingleProgramFlow; 371610e230b6Smaya uint32_t PerThreadScratchSpace; 371710e230b6Smaya __gen_address_type ScratchSpaceBasePointer; 371810e230b6Smaya bool _8PixelDispatchEnable; 371910e230b6Smaya bool _16PixelDispatchEnable; 372010e230b6Smaya bool _32PixelDispatchEnable; 372110e230b6Smaya uint32_t PositionXYOffsetSelect; 372210e230b6Smaya#define POSOFFSET_NONE 0 372310e230b6Smaya#define POSOFFSET_CENTROID 2 372410e230b6Smaya#define POSOFFSET_SAMPLE 3 372510e230b6Smaya bool PSAccessesUAV; 372610e230b6Smaya bool RenderTargetResolveEnable; 372710e230b6Smaya bool DualSourceBlendEnable; 372810e230b6Smaya bool RenderTargetFastClearEnable; 372910e230b6Smaya bool oMaskPresenttoRenderTarget; 373010e230b6Smaya bool AttributeEnable; 373110e230b6Smaya bool PushConstantEnable; 373210e230b6Smaya uint32_t SampleMask; 373310e230b6Smaya uint32_t MaximumNumberofThreads; 373410e230b6Smaya uint32_t DispatchGRFStartRegisterForConstantSetupData2; 373510e230b6Smaya uint32_t DispatchGRFStartRegisterForConstantSetupData1; 373610e230b6Smaya uint32_t DispatchGRFStartRegisterForConstantSetupData0; 373710e230b6Smaya uint64_t KernelStartPointer1; 373810e230b6Smaya uint64_t KernelStartPointer2; 373910e230b6Smaya}; 374010e230b6Smaya 374110e230b6Smayastatic inline void 374210e230b6SmayaGEN75_3DSTATE_PS_pack(__attribute__((unused)) __gen_user_data *data, 374310e230b6Smaya __attribute__((unused)) void * restrict dst, 374410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_PS * restrict values) 374510e230b6Smaya{ 374610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 374710e230b6Smaya 374810e230b6Smaya dw[0] = 374910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 375010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 375110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 375210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 375310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 375410e230b6Smaya 375510e230b6Smaya dw[1] = 375610e230b6Smaya __gen_offset(values->KernelStartPointer0, 6, 31); 375710e230b6Smaya 375810e230b6Smaya dw[2] = 375910e230b6Smaya __gen_uint(values->SoftwareExceptionEnable, 7, 7) | 376010e230b6Smaya __gen_uint(values->MaskStackExceptionEnable, 11, 11) | 376110e230b6Smaya __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) | 376210e230b6Smaya __gen_uint(values->RoundingMode, 14, 15) | 376310e230b6Smaya __gen_uint(values->FloatingPointMode, 16, 16) | 376410e230b6Smaya __gen_uint(values->ThreadPriority, 17, 17) | 376510e230b6Smaya __gen_uint(values->BindingTableEntryCount, 18, 25) | 376610e230b6Smaya __gen_uint(values->DenormalMode, 26, 26) | 376710e230b6Smaya __gen_uint(values->SamplerCount, 27, 29) | 376810e230b6Smaya __gen_uint(values->VectorMaskEnable, 30, 30) | 376910e230b6Smaya __gen_uint(values->SingleProgramFlow, 31, 31); 377010e230b6Smaya 377110e230b6Smaya const uint32_t v3 = 377210e230b6Smaya __gen_uint(values->PerThreadScratchSpace, 0, 3); 377310e230b6Smaya dw[3] = __gen_combine_address(data, &dw[3], values->ScratchSpaceBasePointer, v3); 377410e230b6Smaya 377510e230b6Smaya dw[4] = 377610e230b6Smaya __gen_uint(values->_8PixelDispatchEnable, 0, 0) | 377710e230b6Smaya __gen_uint(values->_16PixelDispatchEnable, 1, 1) | 377810e230b6Smaya __gen_uint(values->_32PixelDispatchEnable, 2, 2) | 377910e230b6Smaya __gen_uint(values->PositionXYOffsetSelect, 3, 4) | 378010e230b6Smaya __gen_uint(values->PSAccessesUAV, 5, 5) | 378110e230b6Smaya __gen_uint(values->RenderTargetResolveEnable, 6, 6) | 378210e230b6Smaya __gen_uint(values->DualSourceBlendEnable, 7, 7) | 378310e230b6Smaya __gen_uint(values->RenderTargetFastClearEnable, 8, 8) | 378410e230b6Smaya __gen_uint(values->oMaskPresenttoRenderTarget, 9, 9) | 378510e230b6Smaya __gen_uint(values->AttributeEnable, 10, 10) | 378610e230b6Smaya __gen_uint(values->PushConstantEnable, 11, 11) | 378710e230b6Smaya __gen_uint(values->SampleMask, 12, 19) | 378810e230b6Smaya __gen_uint(values->MaximumNumberofThreads, 23, 31); 378910e230b6Smaya 379010e230b6Smaya dw[5] = 379110e230b6Smaya __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData2, 0, 6) | 379210e230b6Smaya __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData1, 8, 14) | 379310e230b6Smaya __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData0, 16, 22); 379410e230b6Smaya 379510e230b6Smaya dw[6] = 379610e230b6Smaya __gen_offset(values->KernelStartPointer1, 6, 31); 379710e230b6Smaya 379810e230b6Smaya dw[7] = 379910e230b6Smaya __gen_offset(values->KernelStartPointer2, 6, 31); 380010e230b6Smaya} 380110e230b6Smaya 380210e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length 2 380310e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length_bias 2 380410e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS_header\ 380510e230b6Smaya .DWordLength = 0, \ 380610e230b6Smaya ._3DCommandSubOpcode = 20, \ 380710e230b6Smaya ._3DCommandOpcode = 1, \ 380810e230b6Smaya .CommandSubType = 3, \ 380910e230b6Smaya .CommandType = 3 381010e230b6Smaya 381110e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS { 381210e230b6Smaya uint32_t DWordLength; 381310e230b6Smaya uint32_t _3DCommandSubOpcode; 381410e230b6Smaya uint32_t _3DCommandOpcode; 381510e230b6Smaya uint32_t CommandSubType; 381610e230b6Smaya uint32_t CommandType; 381710e230b6Smaya uint32_t ConstantBufferSize; 381810e230b6Smaya uint32_t ConstantBufferOffset; 381910e230b6Smaya}; 382010e230b6Smaya 382110e230b6Smayastatic inline void 382210e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS_pack(__attribute__((unused)) __gen_user_data *data, 382310e230b6Smaya __attribute__((unused)) void * restrict dst, 382410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS * restrict values) 382510e230b6Smaya{ 382610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 382710e230b6Smaya 382810e230b6Smaya dw[0] = 382910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 383010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 383110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 383210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 383310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 383410e230b6Smaya 383510e230b6Smaya dw[1] = 383610e230b6Smaya __gen_uint(values->ConstantBufferSize, 0, 5) | 383710e230b6Smaya __gen_uint(values->ConstantBufferOffset, 16, 20); 383810e230b6Smaya} 383910e230b6Smaya 384010e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length 2 384110e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length_bias 2 384210e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS_header\ 384310e230b6Smaya .DWordLength = 0, \ 384410e230b6Smaya ._3DCommandSubOpcode = 21, \ 384510e230b6Smaya ._3DCommandOpcode = 1, \ 384610e230b6Smaya .CommandSubType = 3, \ 384710e230b6Smaya .CommandType = 3 384810e230b6Smaya 384910e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS { 385010e230b6Smaya uint32_t DWordLength; 385110e230b6Smaya uint32_t _3DCommandSubOpcode; 385210e230b6Smaya uint32_t _3DCommandOpcode; 385310e230b6Smaya uint32_t CommandSubType; 385410e230b6Smaya uint32_t CommandType; 385510e230b6Smaya uint32_t ConstantBufferSize; 385610e230b6Smaya uint32_t ConstantBufferOffset; 385710e230b6Smaya}; 385810e230b6Smaya 385910e230b6Smayastatic inline void 386010e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS_pack(__attribute__((unused)) __gen_user_data *data, 386110e230b6Smaya __attribute__((unused)) void * restrict dst, 386210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS * restrict values) 386310e230b6Smaya{ 386410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 386510e230b6Smaya 386610e230b6Smaya dw[0] = 386710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 386810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 386910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 387010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 387110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 387210e230b6Smaya 387310e230b6Smaya dw[1] = 387410e230b6Smaya __gen_uint(values->ConstantBufferSize, 0, 5) | 387510e230b6Smaya __gen_uint(values->ConstantBufferOffset, 16, 20); 387610e230b6Smaya} 387710e230b6Smaya 387810e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length 2 387910e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length_bias 2 388010e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS_header\ 388110e230b6Smaya .DWordLength = 0, \ 388210e230b6Smaya ._3DCommandSubOpcode = 19, \ 388310e230b6Smaya ._3DCommandOpcode = 1, \ 388410e230b6Smaya .CommandSubType = 3, \ 388510e230b6Smaya .CommandType = 3 388610e230b6Smaya 388710e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS { 388810e230b6Smaya uint32_t DWordLength; 388910e230b6Smaya uint32_t _3DCommandSubOpcode; 389010e230b6Smaya uint32_t _3DCommandOpcode; 389110e230b6Smaya uint32_t CommandSubType; 389210e230b6Smaya uint32_t CommandType; 389310e230b6Smaya uint32_t ConstantBufferSize; 389410e230b6Smaya uint32_t ConstantBufferOffset; 389510e230b6Smaya}; 389610e230b6Smaya 389710e230b6Smayastatic inline void 389810e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS_pack(__attribute__((unused)) __gen_user_data *data, 389910e230b6Smaya __attribute__((unused)) void * restrict dst, 390010e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS * restrict values) 390110e230b6Smaya{ 390210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 390310e230b6Smaya 390410e230b6Smaya dw[0] = 390510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 390610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 390710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 390810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 390910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 391010e230b6Smaya 391110e230b6Smaya dw[1] = 391210e230b6Smaya __gen_uint(values->ConstantBufferSize, 0, 5) | 391310e230b6Smaya __gen_uint(values->ConstantBufferOffset, 16, 20); 391410e230b6Smaya} 391510e230b6Smaya 391610e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length 2 391710e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length_bias 2 391810e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS_header\ 391910e230b6Smaya .DWordLength = 0, \ 392010e230b6Smaya ._3DCommandSubOpcode = 22, \ 392110e230b6Smaya ._3DCommandOpcode = 1, \ 392210e230b6Smaya .CommandSubType = 3, \ 392310e230b6Smaya .CommandType = 3 392410e230b6Smaya 392510e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS { 392610e230b6Smaya uint32_t DWordLength; 392710e230b6Smaya uint32_t _3DCommandSubOpcode; 392810e230b6Smaya uint32_t _3DCommandOpcode; 392910e230b6Smaya uint32_t CommandSubType; 393010e230b6Smaya uint32_t CommandType; 393110e230b6Smaya uint32_t ConstantBufferSize; 393210e230b6Smaya uint32_t ConstantBufferOffset; 393310e230b6Smaya}; 393410e230b6Smaya 393510e230b6Smayastatic inline void 393610e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS_pack(__attribute__((unused)) __gen_user_data *data, 393710e230b6Smaya __attribute__((unused)) void * restrict dst, 393810e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS * restrict values) 393910e230b6Smaya{ 394010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 394110e230b6Smaya 394210e230b6Smaya dw[0] = 394310e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 394410e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 394510e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 394610e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 394710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 394810e230b6Smaya 394910e230b6Smaya dw[1] = 395010e230b6Smaya __gen_uint(values->ConstantBufferSize, 0, 5) | 395110e230b6Smaya __gen_uint(values->ConstantBufferOffset, 16, 20); 395210e230b6Smaya} 395310e230b6Smaya 395410e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length 2 395510e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length_bias 2 395610e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS_header\ 395710e230b6Smaya .DWordLength = 0, \ 395810e230b6Smaya ._3DCommandSubOpcode = 18, \ 395910e230b6Smaya ._3DCommandOpcode = 1, \ 396010e230b6Smaya .CommandSubType = 3, \ 396110e230b6Smaya .CommandType = 3 396210e230b6Smaya 396310e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS { 396410e230b6Smaya uint32_t DWordLength; 396510e230b6Smaya uint32_t _3DCommandSubOpcode; 396610e230b6Smaya uint32_t _3DCommandOpcode; 396710e230b6Smaya uint32_t CommandSubType; 396810e230b6Smaya uint32_t CommandType; 396910e230b6Smaya uint32_t ConstantBufferSize; 397010e230b6Smaya uint32_t ConstantBufferOffset; 397110e230b6Smaya}; 397210e230b6Smaya 397310e230b6Smayastatic inline void 397410e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS_pack(__attribute__((unused)) __gen_user_data *data, 397510e230b6Smaya __attribute__((unused)) void * restrict dst, 397610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS * restrict values) 397710e230b6Smaya{ 397810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 397910e230b6Smaya 398010e230b6Smaya dw[0] = 398110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 398210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 398310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 398410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 398510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 398610e230b6Smaya 398710e230b6Smaya dw[1] = 398810e230b6Smaya __gen_uint(values->ConstantBufferSize, 0, 5) | 398910e230b6Smaya __gen_uint(values->ConstantBufferOffset, 16, 20); 399010e230b6Smaya} 399110e230b6Smaya 399210e230b6Smaya#define GEN75_3DSTATE_RAST_MULTISAMPLE_length 6 399310e230b6Smaya#define GEN75_3DSTATE_RAST_MULTISAMPLE_length_bias 2 399410e230b6Smaya#define GEN75_3DSTATE_RAST_MULTISAMPLE_header \ 399510e230b6Smaya .DWordLength = 4, \ 399610e230b6Smaya ._3DCommandSubOpcode = 14, \ 399710e230b6Smaya ._3DCommandOpcode = 1, \ 399810e230b6Smaya .CommandSubType = 3, \ 399910e230b6Smaya .CommandType = 3 400010e230b6Smaya 400110e230b6Smayastruct GEN75_3DSTATE_RAST_MULTISAMPLE { 400210e230b6Smaya uint32_t DWordLength; 400310e230b6Smaya uint32_t _3DCommandSubOpcode; 400410e230b6Smaya uint32_t _3DCommandOpcode; 400510e230b6Smaya uint32_t CommandSubType; 400610e230b6Smaya uint32_t CommandType; 400710e230b6Smaya uint32_t NumberofRasterizationMultisamples; 400810e230b6Smaya#define NRM_NUMRASTSAMPLES_1 0 400910e230b6Smaya#define NRM_NUMRASTSAMPLES_2 1 401010e230b6Smaya#define NRM_NUMRASTSAMPLES_4 2 401110e230b6Smaya#define NRM_NUMRASTSAMPLES_8 3 401210e230b6Smaya#define NRM_NUMRASTSAMPLES_16 4 401310e230b6Smaya float Sample0YOffset; 401410e230b6Smaya float Sample0XOffset; 401510e230b6Smaya float Sample1YOffset; 401610e230b6Smaya float Sample1XOffset; 401710e230b6Smaya float Sample2YOffset; 401810e230b6Smaya float Sample2XOffset; 401910e230b6Smaya float Sample3YOffset; 402010e230b6Smaya float Sample3XOffset; 402110e230b6Smaya float Sample4YOffset; 402210e230b6Smaya float Sample4XOffset; 402310e230b6Smaya float Sample5YOffset; 402410e230b6Smaya float Sample5XOffset; 402510e230b6Smaya float Sample6YOffset; 402610e230b6Smaya float Sample6XOffset; 402710e230b6Smaya float Sample7YOffset; 402810e230b6Smaya float Sample7XOffset; 402910e230b6Smaya float Sample8YOffset; 403010e230b6Smaya float Sample8XOffset; 403110e230b6Smaya float Sample9YOffset; 403210e230b6Smaya float Sample9XOffset; 403310e230b6Smaya float Sample10YOffset; 403410e230b6Smaya float Sample10XOffset; 403510e230b6Smaya float Sample11YOffset; 403610e230b6Smaya float Sample11XOffset; 403710e230b6Smaya float Sample12YOffset; 403810e230b6Smaya float Sample12XOffset; 403910e230b6Smaya float Sample13YOffset; 404010e230b6Smaya float Sample13XOffset; 404110e230b6Smaya float Sample14YOffset; 404210e230b6Smaya float Sample14XOffset; 404310e230b6Smaya float Sample15YOffset; 404410e230b6Smaya float Sample15XOffset; 404510e230b6Smaya}; 404610e230b6Smaya 404710e230b6Smayastatic inline void 404810e230b6SmayaGEN75_3DSTATE_RAST_MULTISAMPLE_pack(__attribute__((unused)) __gen_user_data *data, 404910e230b6Smaya __attribute__((unused)) void * restrict dst, 405010e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_RAST_MULTISAMPLE * restrict values) 405110e230b6Smaya{ 405210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 405310e230b6Smaya 405410e230b6Smaya dw[0] = 405510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 405610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 405710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 405810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 405910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 406010e230b6Smaya 406110e230b6Smaya dw[1] = 406210e230b6Smaya __gen_uint(values->NumberofRasterizationMultisamples, 1, 3); 406310e230b6Smaya 406410e230b6Smaya dw[2] = 406510e230b6Smaya __gen_ufixed(values->Sample0YOffset, 0, 3, 4) | 406610e230b6Smaya __gen_ufixed(values->Sample0XOffset, 4, 7, 4) | 406710e230b6Smaya __gen_ufixed(values->Sample1YOffset, 8, 11, 4) | 406810e230b6Smaya __gen_ufixed(values->Sample1XOffset, 12, 15, 4) | 406910e230b6Smaya __gen_ufixed(values->Sample2YOffset, 16, 19, 4) | 407010e230b6Smaya __gen_ufixed(values->Sample2XOffset, 20, 23, 4) | 407110e230b6Smaya __gen_ufixed(values->Sample3YOffset, 24, 27, 4) | 407210e230b6Smaya __gen_ufixed(values->Sample3XOffset, 28, 31, 4); 407310e230b6Smaya 407410e230b6Smaya dw[3] = 407510e230b6Smaya __gen_ufixed(values->Sample4YOffset, 0, 3, 4) | 407610e230b6Smaya __gen_ufixed(values->Sample4XOffset, 4, 7, 4) | 407710e230b6Smaya __gen_ufixed(values->Sample5YOffset, 8, 11, 4) | 407810e230b6Smaya __gen_ufixed(values->Sample5XOffset, 12, 15, 4) | 407910e230b6Smaya __gen_ufixed(values->Sample6YOffset, 16, 19, 4) | 408010e230b6Smaya __gen_ufixed(values->Sample6XOffset, 20, 23, 4) | 408110e230b6Smaya __gen_ufixed(values->Sample7YOffset, 24, 27, 4) | 408210e230b6Smaya __gen_ufixed(values->Sample7XOffset, 28, 31, 4); 408310e230b6Smaya 408410e230b6Smaya dw[4] = 408510e230b6Smaya __gen_ufixed(values->Sample8YOffset, 0, 3, 4) | 408610e230b6Smaya __gen_ufixed(values->Sample8XOffset, 4, 7, 4) | 408710e230b6Smaya __gen_ufixed(values->Sample9YOffset, 8, 11, 4) | 408810e230b6Smaya __gen_ufixed(values->Sample9XOffset, 12, 15, 4) | 408910e230b6Smaya __gen_ufixed(values->Sample10YOffset, 16, 19, 4) | 409010e230b6Smaya __gen_ufixed(values->Sample10XOffset, 20, 23, 4) | 409110e230b6Smaya __gen_ufixed(values->Sample11YOffset, 24, 27, 4) | 409210e230b6Smaya __gen_ufixed(values->Sample11XOffset, 28, 31, 4); 409310e230b6Smaya 409410e230b6Smaya dw[5] = 409510e230b6Smaya __gen_ufixed(values->Sample12YOffset, 0, 3, 4) | 409610e230b6Smaya __gen_ufixed(values->Sample12XOffset, 4, 7, 4) | 409710e230b6Smaya __gen_ufixed(values->Sample13YOffset, 8, 11, 4) | 409810e230b6Smaya __gen_ufixed(values->Sample13XOffset, 12, 15, 4) | 409910e230b6Smaya __gen_ufixed(values->Sample14YOffset, 16, 19, 4) | 410010e230b6Smaya __gen_ufixed(values->Sample14XOffset, 20, 23, 4) | 410110e230b6Smaya __gen_ufixed(values->Sample15YOffset, 24, 27, 4) | 410210e230b6Smaya __gen_ufixed(values->Sample15XOffset, 28, 31, 4); 410310e230b6Smaya} 410410e230b6Smaya 410510e230b6Smaya#define GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0_length_bias 2 410610e230b6Smaya#define GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0_header\ 410710e230b6Smaya ._3DCommandSubOpcode = 2, \ 410810e230b6Smaya ._3DCommandOpcode = 1, \ 410910e230b6Smaya .CommandSubType = 3, \ 411010e230b6Smaya .CommandType = 3 411110e230b6Smaya 411210e230b6Smayastruct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0 { 411310e230b6Smaya uint32_t DWordLength; 411410e230b6Smaya uint32_t _3DCommandSubOpcode; 411510e230b6Smaya uint32_t _3DCommandOpcode; 411610e230b6Smaya uint32_t CommandSubType; 411710e230b6Smaya uint32_t CommandType; 411810e230b6Smaya /* variable length fields follow */ 411910e230b6Smaya}; 412010e230b6Smaya 412110e230b6Smayastatic inline void 412210e230b6SmayaGEN75_3DSTATE_SAMPLER_PALETTE_LOAD0_pack(__attribute__((unused)) __gen_user_data *data, 412310e230b6Smaya __attribute__((unused)) void * restrict dst, 412410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0 * restrict values) 412510e230b6Smaya{ 412610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 412710e230b6Smaya 412810e230b6Smaya dw[0] = 412910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 413010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 413110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 413210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 413310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 413410e230b6Smaya} 413510e230b6Smaya 413610e230b6Smaya#define GEN75_3DSTATE_SAMPLER_PALETTE_LOAD1_length_bias 2 413710e230b6Smaya#define GEN75_3DSTATE_SAMPLER_PALETTE_LOAD1_header\ 413810e230b6Smaya .DWordLength = 0, \ 413910e230b6Smaya ._3DCommandSubOpcode = 12, \ 414010e230b6Smaya ._3DCommandOpcode = 1, \ 414110e230b6Smaya .CommandSubType = 3, \ 414210e230b6Smaya .CommandType = 3 414310e230b6Smaya 414410e230b6Smayastruct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD1 { 414510e230b6Smaya uint32_t DWordLength; 414610e230b6Smaya uint32_t _3DCommandSubOpcode; 414710e230b6Smaya uint32_t _3DCommandOpcode; 414810e230b6Smaya uint32_t CommandSubType; 414910e230b6Smaya uint32_t CommandType; 415010e230b6Smaya /* variable length fields follow */ 415110e230b6Smaya}; 415210e230b6Smaya 415310e230b6Smayastatic inline void 415410e230b6SmayaGEN75_3DSTATE_SAMPLER_PALETTE_LOAD1_pack(__attribute__((unused)) __gen_user_data *data, 415510e230b6Smaya __attribute__((unused)) void * restrict dst, 415610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD1 * restrict values) 415710e230b6Smaya{ 415810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 415910e230b6Smaya 416010e230b6Smaya dw[0] = 416110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 416210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 416310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 416410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 416510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 416610e230b6Smaya} 416710e230b6Smaya 416810e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS_length 2 416910e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS_length_bias 2 417010e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS_header\ 417110e230b6Smaya .DWordLength = 0, \ 417210e230b6Smaya ._3DCommandSubOpcode = 45, \ 417310e230b6Smaya ._3DCommandOpcode = 0, \ 417410e230b6Smaya .CommandSubType = 3, \ 417510e230b6Smaya .CommandType = 3 417610e230b6Smaya 417710e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS { 417810e230b6Smaya uint32_t DWordLength; 417910e230b6Smaya uint32_t _3DCommandSubOpcode; 418010e230b6Smaya uint32_t _3DCommandOpcode; 418110e230b6Smaya uint32_t CommandSubType; 418210e230b6Smaya uint32_t CommandType; 418310e230b6Smaya uint64_t PointertoDSSamplerState; 418410e230b6Smaya}; 418510e230b6Smaya 418610e230b6Smayastatic inline void 418710e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS_pack(__attribute__((unused)) __gen_user_data *data, 418810e230b6Smaya __attribute__((unused)) void * restrict dst, 418910e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS * restrict values) 419010e230b6Smaya{ 419110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 419210e230b6Smaya 419310e230b6Smaya dw[0] = 419410e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 419510e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 419610e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 419710e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 419810e230b6Smaya __gen_uint(values->CommandType, 29, 31); 419910e230b6Smaya 420010e230b6Smaya dw[1] = 420110e230b6Smaya __gen_offset(values->PointertoDSSamplerState, 5, 31); 420210e230b6Smaya} 420310e230b6Smaya 420410e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS_length 2 420510e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS_length_bias 2 420610e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS_header\ 420710e230b6Smaya .DWordLength = 0, \ 420810e230b6Smaya ._3DCommandSubOpcode = 46, \ 420910e230b6Smaya ._3DCommandOpcode = 0, \ 421010e230b6Smaya .CommandSubType = 3, \ 421110e230b6Smaya .CommandType = 3 421210e230b6Smaya 421310e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS { 421410e230b6Smaya uint32_t DWordLength; 421510e230b6Smaya uint32_t _3DCommandSubOpcode; 421610e230b6Smaya uint32_t _3DCommandOpcode; 421710e230b6Smaya uint32_t CommandSubType; 421810e230b6Smaya uint32_t CommandType; 421910e230b6Smaya uint64_t PointertoGSSamplerState; 422010e230b6Smaya}; 422110e230b6Smaya 422210e230b6Smayastatic inline void 422310e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS_pack(__attribute__((unused)) __gen_user_data *data, 422410e230b6Smaya __attribute__((unused)) void * restrict dst, 422510e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS * restrict values) 422610e230b6Smaya{ 422710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 422810e230b6Smaya 422910e230b6Smaya dw[0] = 423010e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 423110e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 423210e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 423310e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 423410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 423510e230b6Smaya 423610e230b6Smaya dw[1] = 423710e230b6Smaya __gen_offset(values->PointertoGSSamplerState, 5, 31); 423810e230b6Smaya} 423910e230b6Smaya 424010e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS_length 2 424110e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS_length_bias 2 424210e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS_header\ 424310e230b6Smaya .DWordLength = 0, \ 424410e230b6Smaya ._3DCommandSubOpcode = 44, \ 424510e230b6Smaya ._3DCommandOpcode = 0, \ 424610e230b6Smaya .CommandSubType = 3, \ 424710e230b6Smaya .CommandType = 3 424810e230b6Smaya 424910e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS { 425010e230b6Smaya uint32_t DWordLength; 425110e230b6Smaya uint32_t _3DCommandSubOpcode; 425210e230b6Smaya uint32_t _3DCommandOpcode; 425310e230b6Smaya uint32_t CommandSubType; 425410e230b6Smaya uint32_t CommandType; 425510e230b6Smaya uint64_t PointertoHSSamplerState; 425610e230b6Smaya}; 425710e230b6Smaya 425810e230b6Smayastatic inline void 425910e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS_pack(__attribute__((unused)) __gen_user_data *data, 426010e230b6Smaya __attribute__((unused)) void * restrict dst, 426110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS * restrict values) 426210e230b6Smaya{ 426310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 426410e230b6Smaya 426510e230b6Smaya dw[0] = 426610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 426710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 426810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 426910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 427010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 427110e230b6Smaya 427210e230b6Smaya dw[1] = 427310e230b6Smaya __gen_offset(values->PointertoHSSamplerState, 5, 31); 427410e230b6Smaya} 427510e230b6Smaya 427610e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS_length 2 427710e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS_length_bias 2 427810e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS_header\ 427910e230b6Smaya .DWordLength = 0, \ 428010e230b6Smaya ._3DCommandSubOpcode = 47, \ 428110e230b6Smaya ._3DCommandOpcode = 0, \ 428210e230b6Smaya .CommandSubType = 3, \ 428310e230b6Smaya .CommandType = 3 428410e230b6Smaya 428510e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS { 428610e230b6Smaya uint32_t DWordLength; 428710e230b6Smaya uint32_t _3DCommandSubOpcode; 428810e230b6Smaya uint32_t _3DCommandOpcode; 428910e230b6Smaya uint32_t CommandSubType; 429010e230b6Smaya uint32_t CommandType; 429110e230b6Smaya uint64_t PointertoPSSamplerState; 429210e230b6Smaya}; 429310e230b6Smaya 429410e230b6Smayastatic inline void 429510e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS_pack(__attribute__((unused)) __gen_user_data *data, 429610e230b6Smaya __attribute__((unused)) void * restrict dst, 429710e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS * restrict values) 429810e230b6Smaya{ 429910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 430010e230b6Smaya 430110e230b6Smaya dw[0] = 430210e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 430310e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 430410e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 430510e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 430610e230b6Smaya __gen_uint(values->CommandType, 29, 31); 430710e230b6Smaya 430810e230b6Smaya dw[1] = 430910e230b6Smaya __gen_offset(values->PointertoPSSamplerState, 5, 31); 431010e230b6Smaya} 431110e230b6Smaya 431210e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS_length 2 431310e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS_length_bias 2 431410e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS_header\ 431510e230b6Smaya .DWordLength = 0, \ 431610e230b6Smaya ._3DCommandSubOpcode = 43, \ 431710e230b6Smaya ._3DCommandOpcode = 0, \ 431810e230b6Smaya .CommandSubType = 3, \ 431910e230b6Smaya .CommandType = 3 432010e230b6Smaya 432110e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS { 432210e230b6Smaya uint32_t DWordLength; 432310e230b6Smaya uint32_t _3DCommandSubOpcode; 432410e230b6Smaya uint32_t _3DCommandOpcode; 432510e230b6Smaya uint32_t CommandSubType; 432610e230b6Smaya uint32_t CommandType; 432710e230b6Smaya uint64_t PointertoVSSamplerState; 432810e230b6Smaya}; 432910e230b6Smaya 433010e230b6Smayastatic inline void 433110e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS_pack(__attribute__((unused)) __gen_user_data *data, 433210e230b6Smaya __attribute__((unused)) void * restrict dst, 433310e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS * restrict values) 433410e230b6Smaya{ 433510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 433610e230b6Smaya 433710e230b6Smaya dw[0] = 433810e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 433910e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 434010e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 434110e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 434210e230b6Smaya __gen_uint(values->CommandType, 29, 31); 434310e230b6Smaya 434410e230b6Smaya dw[1] = 434510e230b6Smaya __gen_offset(values->PointertoVSSamplerState, 5, 31); 434610e230b6Smaya} 434710e230b6Smaya 434810e230b6Smaya#define GEN75_3DSTATE_SAMPLE_MASK_length 2 434910e230b6Smaya#define GEN75_3DSTATE_SAMPLE_MASK_length_bias 2 435010e230b6Smaya#define GEN75_3DSTATE_SAMPLE_MASK_header \ 435110e230b6Smaya .DWordLength = 0, \ 435210e230b6Smaya ._3DCommandSubOpcode = 24, \ 435310e230b6Smaya ._3DCommandOpcode = 0, \ 435410e230b6Smaya .CommandSubType = 3, \ 435510e230b6Smaya .CommandType = 3 435610e230b6Smaya 435710e230b6Smayastruct GEN75_3DSTATE_SAMPLE_MASK { 435810e230b6Smaya uint32_t DWordLength; 435910e230b6Smaya uint32_t _3DCommandSubOpcode; 436010e230b6Smaya uint32_t _3DCommandOpcode; 436110e230b6Smaya uint32_t CommandSubType; 436210e230b6Smaya uint32_t CommandType; 436310e230b6Smaya uint32_t SampleMask; 436410e230b6Smaya}; 436510e230b6Smaya 436610e230b6Smayastatic inline void 436710e230b6SmayaGEN75_3DSTATE_SAMPLE_MASK_pack(__attribute__((unused)) __gen_user_data *data, 436810e230b6Smaya __attribute__((unused)) void * restrict dst, 436910e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLE_MASK * restrict values) 437010e230b6Smaya{ 437110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 437210e230b6Smaya 437310e230b6Smaya dw[0] = 437410e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 437510e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 437610e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 437710e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 437810e230b6Smaya __gen_uint(values->CommandType, 29, 31); 437910e230b6Smaya 438010e230b6Smaya dw[1] = 438110e230b6Smaya __gen_uint(values->SampleMask, 0, 7); 438210e230b6Smaya} 438310e230b6Smaya 438410e230b6Smaya#define GEN75_3DSTATE_SBE_length 14 438510e230b6Smaya#define GEN75_3DSTATE_SBE_length_bias 2 438610e230b6Smaya#define GEN75_3DSTATE_SBE_header \ 438710e230b6Smaya .DWordLength = 12, \ 438810e230b6Smaya ._3DCommandSubOpcode = 31, \ 438910e230b6Smaya ._3DCommandOpcode = 0, \ 439010e230b6Smaya .CommandSubType = 3, \ 439110e230b6Smaya .CommandType = 3 439210e230b6Smaya 439310e230b6Smayastruct GEN75_3DSTATE_SBE { 439410e230b6Smaya uint32_t DWordLength; 439510e230b6Smaya uint32_t _3DCommandSubOpcode; 439610e230b6Smaya uint32_t _3DCommandOpcode; 439710e230b6Smaya uint32_t CommandSubType; 439810e230b6Smaya uint32_t CommandType; 439910e230b6Smaya uint32_t VertexURBEntryReadOffset; 440010e230b6Smaya uint32_t VertexURBEntryReadLength; 440110e230b6Smaya uint32_t PointSpriteTextureCoordinateOrigin; 440210e230b6Smaya#define UPPERLEFT 0 440310e230b6Smaya#define LOWERLEFT 1 440410e230b6Smaya bool AttributeSwizzleEnable; 440510e230b6Smaya uint32_t NumberofSFOutputAttributes; 440610e230b6Smaya uint32_t AttributeSwizzleControlMode; 440710e230b6Smaya struct GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL Attribute[16]; 440810e230b6Smaya uint32_t PointSpriteTextureCoordinateEnable; 440910e230b6Smaya uint32_t ConstantInterpolationEnable; 441010e230b6Smaya uint32_t Attribute0WrapShortestEnables; 441110e230b6Smaya uint32_t Attribute1WrapShortestEnables; 441210e230b6Smaya uint32_t Attribute2WrapShortestEnables; 441310e230b6Smaya uint32_t Attribute3WrapShortestEnables; 441410e230b6Smaya uint32_t Attribute4WrapShortestEnables; 441510e230b6Smaya uint32_t Attribute5WrapShortestEnables; 441610e230b6Smaya uint32_t Attribute6WrapShortestEnables; 441710e230b6Smaya uint32_t Attribute7WrapShortestEnables; 441810e230b6Smaya uint32_t Attribute8WrapShortestEnables; 441910e230b6Smaya uint32_t Attribute9WrapShortestEnables; 442010e230b6Smaya uint32_t Attribute10WrapShortestEnables; 442110e230b6Smaya uint32_t Attribute11WrapShortestEnables; 442210e230b6Smaya uint32_t Attribute12WrapShortestEnables; 442310e230b6Smaya uint32_t Attribute13WrapShortestEnables; 442410e230b6Smaya uint32_t Attribute14WrapShortestEnables; 442510e230b6Smaya uint32_t Attribute15WrapShortestEnables; 442610e230b6Smaya}; 442710e230b6Smaya 442810e230b6Smayastatic inline void 442910e230b6SmayaGEN75_3DSTATE_SBE_pack(__attribute__((unused)) __gen_user_data *data, 443010e230b6Smaya __attribute__((unused)) void * restrict dst, 443110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SBE * restrict values) 443210e230b6Smaya{ 443310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 443410e230b6Smaya 443510e230b6Smaya dw[0] = 443610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 443710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 443810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 443910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 444010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 444110e230b6Smaya 444210e230b6Smaya dw[1] = 444310e230b6Smaya __gen_uint(values->VertexURBEntryReadOffset, 4, 9) | 444410e230b6Smaya __gen_uint(values->VertexURBEntryReadLength, 11, 15) | 444510e230b6Smaya __gen_uint(values->PointSpriteTextureCoordinateOrigin, 20, 20) | 444610e230b6Smaya __gen_uint(values->AttributeSwizzleEnable, 21, 21) | 444710e230b6Smaya __gen_uint(values->NumberofSFOutputAttributes, 22, 27) | 444810e230b6Smaya __gen_uint(values->AttributeSwizzleControlMode, 28, 28); 444910e230b6Smaya 445010e230b6Smaya uint32_t v2_0; 445110e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v2_0, &values->Attribute[0]); 445210e230b6Smaya 445310e230b6Smaya uint32_t v2_1; 445410e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v2_1, &values->Attribute[1]); 445510e230b6Smaya 445610e230b6Smaya dw[2] = 445710e230b6Smaya __gen_uint(v2_0, 0, 15) | 445810e230b6Smaya __gen_uint(v2_1, 16, 31); 445910e230b6Smaya 446010e230b6Smaya uint32_t v3_0; 446110e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v3_0, &values->Attribute[2]); 446210e230b6Smaya 446310e230b6Smaya uint32_t v3_1; 446410e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v3_1, &values->Attribute[3]); 446510e230b6Smaya 446610e230b6Smaya dw[3] = 446710e230b6Smaya __gen_uint(v3_0, 0, 15) | 446810e230b6Smaya __gen_uint(v3_1, 16, 31); 446910e230b6Smaya 447010e230b6Smaya uint32_t v4_0; 447110e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v4_0, &values->Attribute[4]); 447210e230b6Smaya 447310e230b6Smaya uint32_t v4_1; 447410e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v4_1, &values->Attribute[5]); 447510e230b6Smaya 447610e230b6Smaya dw[4] = 447710e230b6Smaya __gen_uint(v4_0, 0, 15) | 447810e230b6Smaya __gen_uint(v4_1, 16, 31); 447910e230b6Smaya 448010e230b6Smaya uint32_t v5_0; 448110e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v5_0, &values->Attribute[6]); 448210e230b6Smaya 448310e230b6Smaya uint32_t v5_1; 448410e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v5_1, &values->Attribute[7]); 448510e230b6Smaya 448610e230b6Smaya dw[5] = 448710e230b6Smaya __gen_uint(v5_0, 0, 15) | 448810e230b6Smaya __gen_uint(v5_1, 16, 31); 448910e230b6Smaya 449010e230b6Smaya uint32_t v6_0; 449110e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v6_0, &values->Attribute[8]); 449210e230b6Smaya 449310e230b6Smaya uint32_t v6_1; 449410e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v6_1, &values->Attribute[9]); 449510e230b6Smaya 449610e230b6Smaya dw[6] = 449710e230b6Smaya __gen_uint(v6_0, 0, 15) | 449810e230b6Smaya __gen_uint(v6_1, 16, 31); 449910e230b6Smaya 450010e230b6Smaya uint32_t v7_0; 450110e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v7_0, &values->Attribute[10]); 450210e230b6Smaya 450310e230b6Smaya uint32_t v7_1; 450410e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v7_1, &values->Attribute[11]); 450510e230b6Smaya 450610e230b6Smaya dw[7] = 450710e230b6Smaya __gen_uint(v7_0, 0, 15) | 450810e230b6Smaya __gen_uint(v7_1, 16, 31); 450910e230b6Smaya 451010e230b6Smaya uint32_t v8_0; 451110e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v8_0, &values->Attribute[12]); 451210e230b6Smaya 451310e230b6Smaya uint32_t v8_1; 451410e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v8_1, &values->Attribute[13]); 451510e230b6Smaya 451610e230b6Smaya dw[8] = 451710e230b6Smaya __gen_uint(v8_0, 0, 15) | 451810e230b6Smaya __gen_uint(v8_1, 16, 31); 451910e230b6Smaya 452010e230b6Smaya uint32_t v9_0; 452110e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v9_0, &values->Attribute[14]); 452210e230b6Smaya 452310e230b6Smaya uint32_t v9_1; 452410e230b6Smaya GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v9_1, &values->Attribute[15]); 452510e230b6Smaya 452610e230b6Smaya dw[9] = 452710e230b6Smaya __gen_uint(v9_0, 0, 15) | 452810e230b6Smaya __gen_uint(v9_1, 16, 31); 452910e230b6Smaya 453010e230b6Smaya dw[10] = 453110e230b6Smaya __gen_uint(values->PointSpriteTextureCoordinateEnable, 0, 31); 453210e230b6Smaya 453310e230b6Smaya dw[11] = 453410e230b6Smaya __gen_uint(values->ConstantInterpolationEnable, 0, 31); 453510e230b6Smaya 453610e230b6Smaya dw[12] = 453710e230b6Smaya __gen_uint(values->Attribute0WrapShortestEnables, 0, 3) | 453810e230b6Smaya __gen_uint(values->Attribute1WrapShortestEnables, 4, 7) | 453910e230b6Smaya __gen_uint(values->Attribute2WrapShortestEnables, 8, 11) | 454010e230b6Smaya __gen_uint(values->Attribute3WrapShortestEnables, 12, 15) | 454110e230b6Smaya __gen_uint(values->Attribute4WrapShortestEnables, 16, 19) | 454210e230b6Smaya __gen_uint(values->Attribute5WrapShortestEnables, 20, 23) | 454310e230b6Smaya __gen_uint(values->Attribute6WrapShortestEnables, 24, 27) | 454410e230b6Smaya __gen_uint(values->Attribute7WrapShortestEnables, 28, 31); 454510e230b6Smaya 454610e230b6Smaya dw[13] = 454710e230b6Smaya __gen_uint(values->Attribute8WrapShortestEnables, 0, 3) | 454810e230b6Smaya __gen_uint(values->Attribute9WrapShortestEnables, 4, 7) | 454910e230b6Smaya __gen_uint(values->Attribute10WrapShortestEnables, 8, 11) | 455010e230b6Smaya __gen_uint(values->Attribute11WrapShortestEnables, 12, 15) | 455110e230b6Smaya __gen_uint(values->Attribute12WrapShortestEnables, 16, 19) | 455210e230b6Smaya __gen_uint(values->Attribute13WrapShortestEnables, 20, 23) | 455310e230b6Smaya __gen_uint(values->Attribute14WrapShortestEnables, 24, 27) | 455410e230b6Smaya __gen_uint(values->Attribute15WrapShortestEnables, 28, 31); 455510e230b6Smaya} 455610e230b6Smaya 455710e230b6Smaya#define GEN75_3DSTATE_SCISSOR_STATE_POINTERS_length 2 455810e230b6Smaya#define GEN75_3DSTATE_SCISSOR_STATE_POINTERS_length_bias 2 455910e230b6Smaya#define GEN75_3DSTATE_SCISSOR_STATE_POINTERS_header\ 456010e230b6Smaya .DWordLength = 0, \ 456110e230b6Smaya ._3DCommandSubOpcode = 15, \ 456210e230b6Smaya ._3DCommandOpcode = 0, \ 456310e230b6Smaya .CommandSubType = 3, \ 456410e230b6Smaya .CommandType = 3 456510e230b6Smaya 456610e230b6Smayastruct GEN75_3DSTATE_SCISSOR_STATE_POINTERS { 456710e230b6Smaya uint32_t DWordLength; 456810e230b6Smaya uint32_t _3DCommandSubOpcode; 456910e230b6Smaya uint32_t _3DCommandOpcode; 457010e230b6Smaya uint32_t CommandSubType; 457110e230b6Smaya uint32_t CommandType; 457210e230b6Smaya uint64_t ScissorRectPointer; 457310e230b6Smaya}; 457410e230b6Smaya 457510e230b6Smayastatic inline void 457610e230b6SmayaGEN75_3DSTATE_SCISSOR_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data, 457710e230b6Smaya __attribute__((unused)) void * restrict dst, 457810e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SCISSOR_STATE_POINTERS * restrict values) 457910e230b6Smaya{ 458010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 458110e230b6Smaya 458210e230b6Smaya dw[0] = 458310e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 458410e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 458510e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 458610e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 458710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 458810e230b6Smaya 458910e230b6Smaya dw[1] = 459010e230b6Smaya __gen_offset(values->ScissorRectPointer, 5, 31); 459110e230b6Smaya} 459210e230b6Smaya 459310e230b6Smaya#define GEN75_3DSTATE_SF_length 7 459410e230b6Smaya#define GEN75_3DSTATE_SF_length_bias 2 459510e230b6Smaya#define GEN75_3DSTATE_SF_header \ 459610e230b6Smaya .DWordLength = 5, \ 459710e230b6Smaya ._3DCommandSubOpcode = 19, \ 459810e230b6Smaya ._3DCommandOpcode = 0, \ 459910e230b6Smaya .CommandSubType = 3, \ 460010e230b6Smaya .CommandType = 3 460110e230b6Smaya 460210e230b6Smayastruct GEN75_3DSTATE_SF { 460310e230b6Smaya uint32_t DWordLength; 460410e230b6Smaya uint32_t _3DCommandSubOpcode; 460510e230b6Smaya uint32_t _3DCommandOpcode; 460610e230b6Smaya uint32_t CommandSubType; 460710e230b6Smaya uint32_t CommandType; 460810e230b6Smaya uint32_t FrontWinding; 460910e230b6Smaya bool ViewportTransformEnable; 461010e230b6Smaya uint32_t BackFaceFillMode; 461110e230b6Smaya#define FILL_MODE_SOLID 0 461210e230b6Smaya#define FILL_MODE_WIREFRAME 1 461310e230b6Smaya#define FILL_MODE_POINT 2 461410e230b6Smaya uint32_t FrontFaceFillMode; 461510e230b6Smaya#define FILL_MODE_SOLID 0 461610e230b6Smaya#define FILL_MODE_WIREFRAME 1 461710e230b6Smaya#define FILL_MODE_POINT 2 461810e230b6Smaya bool GlobalDepthOffsetEnablePoint; 461910e230b6Smaya bool GlobalDepthOffsetEnableWireframe; 462010e230b6Smaya bool GlobalDepthOffsetEnableSolid; 462110e230b6Smaya bool StatisticsEnable; 462210e230b6Smaya bool LegacyGlobalDepthBiasEnable; 462310e230b6Smaya uint32_t DepthBufferSurfaceFormat; 462410e230b6Smaya#define D32_FLOAT_S8X24_UINT 0 462510e230b6Smaya#define D32_FLOAT 1 462610e230b6Smaya#define D24_UNORM_S8_UINT 2 462710e230b6Smaya#define D24_UNORM_X8_UINT 3 462810e230b6Smaya#define D16_UNORM 5 462910e230b6Smaya uint32_t MultisampleRasterizationMode; 463010e230b6Smaya bool RTIndependentRasterizationEnable; 463110e230b6Smaya bool ScissorRectangleEnable; 463210e230b6Smaya bool LineStippleEnable; 463310e230b6Smaya uint32_t LineEndCapAntialiasingRegionWidth; 463410e230b6Smaya#define _05pixels 0 463510e230b6Smaya#define _10pixels 1 463610e230b6Smaya#define _20pixels 2 463710e230b6Smaya#define _40pixels 3 463810e230b6Smaya float LineWidth; 463910e230b6Smaya uint32_t CullMode; 464010e230b6Smaya#define CULLMODE_BOTH 0 464110e230b6Smaya#define CULLMODE_NONE 1 464210e230b6Smaya#define CULLMODE_FRONT 2 464310e230b6Smaya#define CULLMODE_BACK 3 464410e230b6Smaya bool AntiAliasingEnable; 464510e230b6Smaya float PointWidth; 464610e230b6Smaya uint32_t PointWidthSource; 464710e230b6Smaya#define Vertex 0 464810e230b6Smaya#define State 1 464910e230b6Smaya uint32_t VertexSubPixelPrecisionSelect; 465010e230b6Smaya#define _8Bit 0 465110e230b6Smaya#define _4Bit 1 465210e230b6Smaya uint32_t AALineDistanceMode; 465310e230b6Smaya#define AALINEDISTANCE_TRUE 1 465410e230b6Smaya uint32_t TriangleFanProvokingVertexSelect; 465510e230b6Smaya#define Vertex0 0 465610e230b6Smaya#define Vertex1 1 465710e230b6Smaya#define Vertex2 2 465810e230b6Smaya uint32_t LineStripListProvokingVertexSelect; 465910e230b6Smaya uint32_t TriangleStripListProvokingVertexSelect; 466010e230b6Smaya#define Vertex0 0 466110e230b6Smaya#define Vertex1 1 466210e230b6Smaya#define Vertex2 2 466310e230b6Smaya bool LastPixelEnable; 466410e230b6Smaya float GlobalDepthOffsetConstant; 466510e230b6Smaya float GlobalDepthOffsetScale; 466610e230b6Smaya float GlobalDepthOffsetClamp; 466710e230b6Smaya}; 466810e230b6Smaya 466910e230b6Smayastatic inline void 467010e230b6SmayaGEN75_3DSTATE_SF_pack(__attribute__((unused)) __gen_user_data *data, 467110e230b6Smaya __attribute__((unused)) void * restrict dst, 467210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SF * restrict values) 467310e230b6Smaya{ 467410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 467510e230b6Smaya 467610e230b6Smaya dw[0] = 467710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 467810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 467910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 468010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 468110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 468210e230b6Smaya 468310e230b6Smaya dw[1] = 468410e230b6Smaya __gen_uint(values->FrontWinding, 0, 0) | 468510e230b6Smaya __gen_uint(values->ViewportTransformEnable, 1, 1) | 468610e230b6Smaya __gen_uint(values->BackFaceFillMode, 3, 4) | 468710e230b6Smaya __gen_uint(values->FrontFaceFillMode, 5, 6) | 468810e230b6Smaya __gen_uint(values->GlobalDepthOffsetEnablePoint, 7, 7) | 468910e230b6Smaya __gen_uint(values->GlobalDepthOffsetEnableWireframe, 8, 8) | 469010e230b6Smaya __gen_uint(values->GlobalDepthOffsetEnableSolid, 9, 9) | 469110e230b6Smaya __gen_uint(values->StatisticsEnable, 10, 10) | 469210e230b6Smaya __gen_uint(values->LegacyGlobalDepthBiasEnable, 11, 11) | 469310e230b6Smaya __gen_uint(values->DepthBufferSurfaceFormat, 12, 14); 469410e230b6Smaya 469510e230b6Smaya dw[2] = 469610e230b6Smaya __gen_uint(values->MultisampleRasterizationMode, 8, 9) | 469710e230b6Smaya __gen_uint(values->RTIndependentRasterizationEnable, 10, 10) | 469810e230b6Smaya __gen_uint(values->ScissorRectangleEnable, 11, 11) | 469910e230b6Smaya __gen_uint(values->LineStippleEnable, 14, 14) | 470010e230b6Smaya __gen_uint(values->LineEndCapAntialiasingRegionWidth, 16, 17) | 470110e230b6Smaya __gen_ufixed(values->LineWidth, 18, 27, 7) | 470210e230b6Smaya __gen_uint(values->CullMode, 29, 30) | 470310e230b6Smaya __gen_uint(values->AntiAliasingEnable, 31, 31); 470410e230b6Smaya 470510e230b6Smaya dw[3] = 470610e230b6Smaya __gen_ufixed(values->PointWidth, 0, 10, 3) | 470710e230b6Smaya __gen_uint(values->PointWidthSource, 11, 11) | 470810e230b6Smaya __gen_uint(values->VertexSubPixelPrecisionSelect, 12, 12) | 470910e230b6Smaya __gen_uint(values->AALineDistanceMode, 14, 14) | 471010e230b6Smaya __gen_uint(values->TriangleFanProvokingVertexSelect, 25, 26) | 471110e230b6Smaya __gen_uint(values->LineStripListProvokingVertexSelect, 27, 28) | 471210e230b6Smaya __gen_uint(values->TriangleStripListProvokingVertexSelect, 29, 30) | 471310e230b6Smaya __gen_uint(values->LastPixelEnable, 31, 31); 471410e230b6Smaya 471510e230b6Smaya dw[4] = 471610e230b6Smaya __gen_float(values->GlobalDepthOffsetConstant); 471710e230b6Smaya 471810e230b6Smaya dw[5] = 471910e230b6Smaya __gen_float(values->GlobalDepthOffsetScale); 472010e230b6Smaya 472110e230b6Smaya dw[6] = 472210e230b6Smaya __gen_float(values->GlobalDepthOffsetClamp); 472310e230b6Smaya} 472410e230b6Smaya 472510e230b6Smaya#define GEN75_3DSTATE_SO_BUFFER_length 4 472610e230b6Smaya#define GEN75_3DSTATE_SO_BUFFER_length_bias 2 472710e230b6Smaya#define GEN75_3DSTATE_SO_BUFFER_header \ 472810e230b6Smaya .DWordLength = 2, \ 472910e230b6Smaya ._3DCommandSubOpcode = 24, \ 473010e230b6Smaya ._3DCommandOpcode = 1, \ 473110e230b6Smaya .CommandSubType = 3, \ 473210e230b6Smaya .CommandType = 3 473310e230b6Smaya 473410e230b6Smayastruct GEN75_3DSTATE_SO_BUFFER { 473510e230b6Smaya uint32_t DWordLength; 473610e230b6Smaya uint32_t _3DCommandSubOpcode; 473710e230b6Smaya uint32_t _3DCommandOpcode; 473810e230b6Smaya uint32_t CommandSubType; 473910e230b6Smaya uint32_t CommandType; 474010e230b6Smaya uint32_t SurfacePitch; 474110e230b6Smaya uint32_t MOCS; 474210e230b6Smaya uint32_t SOBufferIndex; 474310e230b6Smaya __gen_address_type SurfaceBaseAddress; 474410e230b6Smaya __gen_address_type SurfaceEndAddress; 474510e230b6Smaya}; 474610e230b6Smaya 474710e230b6Smayastatic inline void 474810e230b6SmayaGEN75_3DSTATE_SO_BUFFER_pack(__attribute__((unused)) __gen_user_data *data, 474910e230b6Smaya __attribute__((unused)) void * restrict dst, 475010e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SO_BUFFER * restrict values) 475110e230b6Smaya{ 475210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 475310e230b6Smaya 475410e230b6Smaya dw[0] = 475510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 475610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 475710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 475810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 475910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 476010e230b6Smaya 476110e230b6Smaya dw[1] = 476210e230b6Smaya __gen_uint(values->SurfacePitch, 0, 11) | 476310e230b6Smaya __gen_uint(values->MOCS, 25, 28) | 476410e230b6Smaya __gen_uint(values->SOBufferIndex, 29, 30); 476510e230b6Smaya 476610e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0); 476710e230b6Smaya 476810e230b6Smaya dw[3] = __gen_combine_address(data, &dw[3], values->SurfaceEndAddress, 0); 476910e230b6Smaya} 477010e230b6Smaya 477110e230b6Smaya#define GEN75_3DSTATE_SO_DECL_LIST_length_bias 2 477210e230b6Smaya#define GEN75_3DSTATE_SO_DECL_LIST_header \ 477310e230b6Smaya ._3DCommandSubOpcode = 23, \ 477410e230b6Smaya ._3DCommandOpcode = 1, \ 477510e230b6Smaya .CommandSubType = 3, \ 477610e230b6Smaya .CommandType = 3 477710e230b6Smaya 477810e230b6Smayastruct GEN75_3DSTATE_SO_DECL_LIST { 477910e230b6Smaya uint32_t DWordLength; 478010e230b6Smaya uint32_t _3DCommandSubOpcode; 478110e230b6Smaya uint32_t _3DCommandOpcode; 478210e230b6Smaya uint32_t CommandSubType; 478310e230b6Smaya uint32_t CommandType; 478410e230b6Smaya uint32_t StreamtoBufferSelects0; 478510e230b6Smaya uint32_t StreamtoBufferSelects1; 478610e230b6Smaya uint32_t StreamtoBufferSelects2; 478710e230b6Smaya uint32_t StreamtoBufferSelects3; 478810e230b6Smaya uint32_t NumEntries0; 478910e230b6Smaya uint32_t NumEntries1; 479010e230b6Smaya uint32_t NumEntries2; 479110e230b6Smaya uint32_t NumEntries3; 479210e230b6Smaya /* variable length fields follow */ 479310e230b6Smaya}; 479410e230b6Smaya 479510e230b6Smayastatic inline void 479610e230b6SmayaGEN75_3DSTATE_SO_DECL_LIST_pack(__attribute__((unused)) __gen_user_data *data, 479710e230b6Smaya __attribute__((unused)) void * restrict dst, 479810e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_SO_DECL_LIST * restrict values) 479910e230b6Smaya{ 480010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 480110e230b6Smaya 480210e230b6Smaya dw[0] = 480310e230b6Smaya __gen_uint(values->DWordLength, 0, 8) | 480410e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 480510e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 480610e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 480710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 480810e230b6Smaya 480910e230b6Smaya dw[1] = 481010e230b6Smaya __gen_uint(values->StreamtoBufferSelects0, 0, 3) | 481110e230b6Smaya __gen_uint(values->StreamtoBufferSelects1, 4, 7) | 481210e230b6Smaya __gen_uint(values->StreamtoBufferSelects2, 8, 11) | 481310e230b6Smaya __gen_uint(values->StreamtoBufferSelects3, 12, 15); 481410e230b6Smaya 481510e230b6Smaya dw[2] = 481610e230b6Smaya __gen_uint(values->NumEntries0, 0, 7) | 481710e230b6Smaya __gen_uint(values->NumEntries1, 8, 15) | 481810e230b6Smaya __gen_uint(values->NumEntries2, 16, 23) | 481910e230b6Smaya __gen_uint(values->NumEntries3, 24, 31); 482010e230b6Smaya} 482110e230b6Smaya 482210e230b6Smaya#define GEN75_3DSTATE_STENCIL_BUFFER_length 3 482310e230b6Smaya#define GEN75_3DSTATE_STENCIL_BUFFER_length_bias 2 482410e230b6Smaya#define GEN75_3DSTATE_STENCIL_BUFFER_header \ 482510e230b6Smaya .DWordLength = 1, \ 482610e230b6Smaya ._3DCommandSubOpcode = 6, \ 482710e230b6Smaya ._3DCommandOpcode = 0, \ 482810e230b6Smaya .CommandSubType = 3, \ 482910e230b6Smaya .CommandType = 3 483010e230b6Smaya 483110e230b6Smayastruct GEN75_3DSTATE_STENCIL_BUFFER { 483210e230b6Smaya uint32_t DWordLength; 483310e230b6Smaya uint32_t _3DCommandSubOpcode; 483410e230b6Smaya uint32_t _3DCommandOpcode; 483510e230b6Smaya uint32_t CommandSubType; 483610e230b6Smaya uint32_t CommandType; 483710e230b6Smaya uint32_t SurfacePitch; 483810e230b6Smaya uint32_t MOCS; 483910e230b6Smaya bool StencilBufferEnable; 484010e230b6Smaya __gen_address_type SurfaceBaseAddress; 484110e230b6Smaya}; 484210e230b6Smaya 484310e230b6Smayastatic inline void 484410e230b6SmayaGEN75_3DSTATE_STENCIL_BUFFER_pack(__attribute__((unused)) __gen_user_data *data, 484510e230b6Smaya __attribute__((unused)) void * restrict dst, 484610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_STENCIL_BUFFER * restrict values) 484710e230b6Smaya{ 484810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 484910e230b6Smaya 485010e230b6Smaya dw[0] = 485110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 485210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 485310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 485410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 485510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 485610e230b6Smaya 485710e230b6Smaya dw[1] = 485810e230b6Smaya __gen_uint(values->SurfacePitch, 0, 16) | 485910e230b6Smaya __gen_uint(values->MOCS, 25, 28) | 486010e230b6Smaya __gen_uint(values->StencilBufferEnable, 31, 31); 486110e230b6Smaya 486210e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0); 486310e230b6Smaya} 486410e230b6Smaya 486510e230b6Smaya#define GEN75_3DSTATE_STREAMOUT_length 3 486610e230b6Smaya#define GEN75_3DSTATE_STREAMOUT_length_bias 2 486710e230b6Smaya#define GEN75_3DSTATE_STREAMOUT_header \ 486810e230b6Smaya .DWordLength = 1, \ 486910e230b6Smaya ._3DCommandSubOpcode = 30, \ 487010e230b6Smaya ._3DCommandOpcode = 0, \ 487110e230b6Smaya .CommandSubType = 3, \ 487210e230b6Smaya .CommandType = 3 487310e230b6Smaya 487410e230b6Smayastruct GEN75_3DSTATE_STREAMOUT { 487510e230b6Smaya uint32_t DWordLength; 487610e230b6Smaya uint32_t _3DCommandSubOpcode; 487710e230b6Smaya uint32_t _3DCommandOpcode; 487810e230b6Smaya uint32_t CommandSubType; 487910e230b6Smaya uint32_t CommandType; 488010e230b6Smaya bool SOBufferEnable0; 488110e230b6Smaya bool SOBufferEnable1; 488210e230b6Smaya bool SOBufferEnable2; 488310e230b6Smaya bool SOBufferEnable3; 488410e230b6Smaya bool SOStatisticsEnable; 488510e230b6Smaya uint32_t ReorderMode; 488610e230b6Smaya#define LEADING 0 488710e230b6Smaya#define TRAILING 1 488810e230b6Smaya uint32_t RenderStreamSelect; 488910e230b6Smaya bool RenderingDisable; 489010e230b6Smaya bool SOFunctionEnable; 489110e230b6Smaya uint32_t Stream0VertexReadLength; 489210e230b6Smaya uint32_t Stream0VertexReadOffset; 489310e230b6Smaya uint32_t Stream1VertexReadLength; 489410e230b6Smaya uint32_t Stream1VertexReadOffset; 489510e230b6Smaya uint32_t Stream2VertexReadLength; 489610e230b6Smaya uint32_t Stream2VertexReadOffset; 489710e230b6Smaya uint32_t Stream3VertexReadLength; 489810e230b6Smaya uint32_t Stream3VertexReadOffset; 489910e230b6Smaya}; 490010e230b6Smaya 490110e230b6Smayastatic inline void 490210e230b6SmayaGEN75_3DSTATE_STREAMOUT_pack(__attribute__((unused)) __gen_user_data *data, 490310e230b6Smaya __attribute__((unused)) void * restrict dst, 490410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_STREAMOUT * restrict values) 490510e230b6Smaya{ 490610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 490710e230b6Smaya 490810e230b6Smaya dw[0] = 490910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 491010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 491110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 491210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 491310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 491410e230b6Smaya 491510e230b6Smaya dw[1] = 491610e230b6Smaya __gen_uint(values->SOBufferEnable0, 8, 8) | 491710e230b6Smaya __gen_uint(values->SOBufferEnable1, 9, 9) | 491810e230b6Smaya __gen_uint(values->SOBufferEnable2, 10, 10) | 491910e230b6Smaya __gen_uint(values->SOBufferEnable3, 11, 11) | 492010e230b6Smaya __gen_uint(values->SOStatisticsEnable, 25, 25) | 492110e230b6Smaya __gen_uint(values->ReorderMode, 26, 26) | 492210e230b6Smaya __gen_uint(values->RenderStreamSelect, 27, 28) | 492310e230b6Smaya __gen_uint(values->RenderingDisable, 30, 30) | 492410e230b6Smaya __gen_uint(values->SOFunctionEnable, 31, 31); 492510e230b6Smaya 492610e230b6Smaya dw[2] = 492710e230b6Smaya __gen_uint(values->Stream0VertexReadLength, 0, 4) | 492810e230b6Smaya __gen_uint(values->Stream0VertexReadOffset, 5, 5) | 492910e230b6Smaya __gen_uint(values->Stream1VertexReadLength, 8, 12) | 493010e230b6Smaya __gen_uint(values->Stream1VertexReadOffset, 13, 13) | 493110e230b6Smaya __gen_uint(values->Stream2VertexReadLength, 16, 20) | 493210e230b6Smaya __gen_uint(values->Stream2VertexReadOffset, 21, 21) | 493310e230b6Smaya __gen_uint(values->Stream3VertexReadLength, 24, 28) | 493410e230b6Smaya __gen_uint(values->Stream3VertexReadOffset, 29, 29); 493510e230b6Smaya} 493610e230b6Smaya 493710e230b6Smaya#define GEN75_3DSTATE_TE_length 4 493810e230b6Smaya#define GEN75_3DSTATE_TE_length_bias 2 493910e230b6Smaya#define GEN75_3DSTATE_TE_header \ 494010e230b6Smaya .DWordLength = 2, \ 494110e230b6Smaya ._3DCommandSubOpcode = 28, \ 494210e230b6Smaya ._3DCommandOpcode = 0, \ 494310e230b6Smaya .CommandSubType = 3, \ 494410e230b6Smaya .CommandType = 3 494510e230b6Smaya 494610e230b6Smayastruct GEN75_3DSTATE_TE { 494710e230b6Smaya uint32_t DWordLength; 494810e230b6Smaya uint32_t _3DCommandSubOpcode; 494910e230b6Smaya uint32_t _3DCommandOpcode; 495010e230b6Smaya uint32_t CommandSubType; 495110e230b6Smaya uint32_t CommandType; 495210e230b6Smaya bool TEEnable; 495310e230b6Smaya uint32_t TEMode; 495410e230b6Smaya#define HW_TESS 0 495510e230b6Smaya#define SW_TESS 1 495610e230b6Smaya uint32_t TEDomain; 495710e230b6Smaya#define QUAD 0 495810e230b6Smaya#define TRI 1 495910e230b6Smaya#define ISOLINE 2 496010e230b6Smaya uint32_t OutputTopology; 496110e230b6Smaya#define OUTPUT_POINT 0 496210e230b6Smaya#define OUTPUT_LINE 1 496310e230b6Smaya#define OUTPUT_TRI_CW 2 496410e230b6Smaya#define OUTPUT_TRI_CCW 3 496510e230b6Smaya uint32_t Partitioning; 496610e230b6Smaya#define INTEGER 0 496710e230b6Smaya#define ODD_FRACTIONAL 1 496810e230b6Smaya#define EVEN_FRACTIONAL 2 496910e230b6Smaya float MaximumTessellationFactorOdd; 497010e230b6Smaya float MaximumTessellationFactorNotOdd; 497110e230b6Smaya}; 497210e230b6Smaya 497310e230b6Smayastatic inline void 497410e230b6SmayaGEN75_3DSTATE_TE_pack(__attribute__((unused)) __gen_user_data *data, 497510e230b6Smaya __attribute__((unused)) void * restrict dst, 497610e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_TE * restrict values) 497710e230b6Smaya{ 497810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 497910e230b6Smaya 498010e230b6Smaya dw[0] = 498110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 498210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 498310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 498410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 498510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 498610e230b6Smaya 498710e230b6Smaya dw[1] = 498810e230b6Smaya __gen_uint(values->TEEnable, 0, 0) | 498910e230b6Smaya __gen_uint(values->TEMode, 1, 2) | 499010e230b6Smaya __gen_uint(values->TEDomain, 4, 5) | 499110e230b6Smaya __gen_uint(values->OutputTopology, 8, 9) | 499210e230b6Smaya __gen_uint(values->Partitioning, 12, 13); 499310e230b6Smaya 499410e230b6Smaya dw[2] = 499510e230b6Smaya __gen_float(values->MaximumTessellationFactorOdd); 499610e230b6Smaya 499710e230b6Smaya dw[3] = 499810e230b6Smaya __gen_float(values->MaximumTessellationFactorNotOdd); 499910e230b6Smaya} 500010e230b6Smaya 500110e230b6Smaya#define GEN75_3DSTATE_URB_DS_length 2 500210e230b6Smaya#define GEN75_3DSTATE_URB_DS_length_bias 2 500310e230b6Smaya#define GEN75_3DSTATE_URB_DS_header \ 500410e230b6Smaya .DWordLength = 0, \ 500510e230b6Smaya ._3DCommandSubOpcode = 50, \ 500610e230b6Smaya ._3DCommandOpcode = 0, \ 500710e230b6Smaya .CommandSubType = 3, \ 500810e230b6Smaya .CommandType = 3 500910e230b6Smaya 501010e230b6Smayastruct GEN75_3DSTATE_URB_DS { 501110e230b6Smaya uint32_t DWordLength; 501210e230b6Smaya uint32_t _3DCommandSubOpcode; 501310e230b6Smaya uint32_t _3DCommandOpcode; 501410e230b6Smaya uint32_t CommandSubType; 501510e230b6Smaya uint32_t CommandType; 501610e230b6Smaya uint32_t DSNumberofURBEntries; 501710e230b6Smaya uint32_t DSURBEntryAllocationSize; 501810e230b6Smaya uint32_t DSURBStartingAddress; 501910e230b6Smaya}; 502010e230b6Smaya 502110e230b6Smayastatic inline void 502210e230b6SmayaGEN75_3DSTATE_URB_DS_pack(__attribute__((unused)) __gen_user_data *data, 502310e230b6Smaya __attribute__((unused)) void * restrict dst, 502410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_URB_DS * restrict values) 502510e230b6Smaya{ 502610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 502710e230b6Smaya 502810e230b6Smaya dw[0] = 502910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 503010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 503110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 503210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 503310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 503410e230b6Smaya 503510e230b6Smaya dw[1] = 503610e230b6Smaya __gen_uint(values->DSNumberofURBEntries, 0, 15) | 503710e230b6Smaya __gen_uint(values->DSURBEntryAllocationSize, 16, 24) | 503810e230b6Smaya __gen_uint(values->DSURBStartingAddress, 25, 30); 503910e230b6Smaya} 504010e230b6Smaya 504110e230b6Smaya#define GEN75_3DSTATE_URB_GS_length 2 504210e230b6Smaya#define GEN75_3DSTATE_URB_GS_length_bias 2 504310e230b6Smaya#define GEN75_3DSTATE_URB_GS_header \ 504410e230b6Smaya .DWordLength = 0, \ 504510e230b6Smaya ._3DCommandSubOpcode = 51, \ 504610e230b6Smaya ._3DCommandOpcode = 0, \ 504710e230b6Smaya .CommandSubType = 3, \ 504810e230b6Smaya .CommandType = 3 504910e230b6Smaya 505010e230b6Smayastruct GEN75_3DSTATE_URB_GS { 505110e230b6Smaya uint32_t DWordLength; 505210e230b6Smaya uint32_t _3DCommandSubOpcode; 505310e230b6Smaya uint32_t _3DCommandOpcode; 505410e230b6Smaya uint32_t CommandSubType; 505510e230b6Smaya uint32_t CommandType; 505610e230b6Smaya uint32_t GSNumberofURBEntries; 505710e230b6Smaya uint32_t GSURBEntryAllocationSize; 505810e230b6Smaya uint32_t GSURBStartingAddress; 505910e230b6Smaya}; 506010e230b6Smaya 506110e230b6Smayastatic inline void 506210e230b6SmayaGEN75_3DSTATE_URB_GS_pack(__attribute__((unused)) __gen_user_data *data, 506310e230b6Smaya __attribute__((unused)) void * restrict dst, 506410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_URB_GS * restrict values) 506510e230b6Smaya{ 506610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 506710e230b6Smaya 506810e230b6Smaya dw[0] = 506910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 507010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 507110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 507210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 507310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 507410e230b6Smaya 507510e230b6Smaya dw[1] = 507610e230b6Smaya __gen_uint(values->GSNumberofURBEntries, 0, 15) | 507710e230b6Smaya __gen_uint(values->GSURBEntryAllocationSize, 16, 24) | 507810e230b6Smaya __gen_uint(values->GSURBStartingAddress, 25, 30); 507910e230b6Smaya} 508010e230b6Smaya 508110e230b6Smaya#define GEN75_3DSTATE_URB_HS_length 2 508210e230b6Smaya#define GEN75_3DSTATE_URB_HS_length_bias 2 508310e230b6Smaya#define GEN75_3DSTATE_URB_HS_header \ 508410e230b6Smaya .DWordLength = 0, \ 508510e230b6Smaya ._3DCommandSubOpcode = 49, \ 508610e230b6Smaya ._3DCommandOpcode = 0, \ 508710e230b6Smaya .CommandSubType = 3, \ 508810e230b6Smaya .CommandType = 3 508910e230b6Smaya 509010e230b6Smayastruct GEN75_3DSTATE_URB_HS { 509110e230b6Smaya uint32_t DWordLength; 509210e230b6Smaya uint32_t _3DCommandSubOpcode; 509310e230b6Smaya uint32_t _3DCommandOpcode; 509410e230b6Smaya uint32_t CommandSubType; 509510e230b6Smaya uint32_t CommandType; 509610e230b6Smaya uint32_t HSNumberofURBEntries; 509710e230b6Smaya uint32_t HSURBEntryAllocationSize; 509810e230b6Smaya uint32_t HSURBStartingAddress; 509910e230b6Smaya}; 510010e230b6Smaya 510110e230b6Smayastatic inline void 510210e230b6SmayaGEN75_3DSTATE_URB_HS_pack(__attribute__((unused)) __gen_user_data *data, 510310e230b6Smaya __attribute__((unused)) void * restrict dst, 510410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_URB_HS * restrict values) 510510e230b6Smaya{ 510610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 510710e230b6Smaya 510810e230b6Smaya dw[0] = 510910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 511010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 511110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 511210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 511310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 511410e230b6Smaya 511510e230b6Smaya dw[1] = 511610e230b6Smaya __gen_uint(values->HSNumberofURBEntries, 0, 15) | 511710e230b6Smaya __gen_uint(values->HSURBEntryAllocationSize, 16, 24) | 511810e230b6Smaya __gen_uint(values->HSURBStartingAddress, 25, 30); 511910e230b6Smaya} 512010e230b6Smaya 512110e230b6Smaya#define GEN75_3DSTATE_URB_VS_length 2 512210e230b6Smaya#define GEN75_3DSTATE_URB_VS_length_bias 2 512310e230b6Smaya#define GEN75_3DSTATE_URB_VS_header \ 512410e230b6Smaya .DWordLength = 0, \ 512510e230b6Smaya ._3DCommandSubOpcode = 48, \ 512610e230b6Smaya ._3DCommandOpcode = 0, \ 512710e230b6Smaya .CommandSubType = 3, \ 512810e230b6Smaya .CommandType = 3 512910e230b6Smaya 513010e230b6Smayastruct GEN75_3DSTATE_URB_VS { 513110e230b6Smaya uint32_t DWordLength; 513210e230b6Smaya uint32_t _3DCommandSubOpcode; 513310e230b6Smaya uint32_t _3DCommandOpcode; 513410e230b6Smaya uint32_t CommandSubType; 513510e230b6Smaya uint32_t CommandType; 513610e230b6Smaya uint32_t VSNumberofURBEntries; 513710e230b6Smaya uint32_t VSURBEntryAllocationSize; 513810e230b6Smaya uint32_t VSURBStartingAddress; 513910e230b6Smaya}; 514010e230b6Smaya 514110e230b6Smayastatic inline void 514210e230b6SmayaGEN75_3DSTATE_URB_VS_pack(__attribute__((unused)) __gen_user_data *data, 514310e230b6Smaya __attribute__((unused)) void * restrict dst, 514410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_URB_VS * restrict values) 514510e230b6Smaya{ 514610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 514710e230b6Smaya 514810e230b6Smaya dw[0] = 514910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 515010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 515110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 515210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 515310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 515410e230b6Smaya 515510e230b6Smaya dw[1] = 515610e230b6Smaya __gen_uint(values->VSNumberofURBEntries, 0, 15) | 515710e230b6Smaya __gen_uint(values->VSURBEntryAllocationSize, 16, 24) | 515810e230b6Smaya __gen_uint(values->VSURBStartingAddress, 25, 30); 515910e230b6Smaya} 516010e230b6Smaya 516110e230b6Smaya#define GEN75_3DSTATE_VERTEX_BUFFERS_length_bias 2 516210e230b6Smaya#define GEN75_3DSTATE_VERTEX_BUFFERS_header \ 516310e230b6Smaya .DWordLength = 3, \ 516410e230b6Smaya ._3DCommandSubOpcode = 8, \ 516510e230b6Smaya ._3DCommandOpcode = 0, \ 516610e230b6Smaya .CommandSubType = 3, \ 516710e230b6Smaya .CommandType = 3 516810e230b6Smaya 516910e230b6Smayastruct GEN75_3DSTATE_VERTEX_BUFFERS { 517010e230b6Smaya uint32_t DWordLength; 517110e230b6Smaya uint32_t _3DCommandSubOpcode; 517210e230b6Smaya uint32_t _3DCommandOpcode; 517310e230b6Smaya uint32_t CommandSubType; 517410e230b6Smaya uint32_t CommandType; 517510e230b6Smaya /* variable length fields follow */ 517610e230b6Smaya}; 517710e230b6Smaya 517810e230b6Smayastatic inline void 517910e230b6SmayaGEN75_3DSTATE_VERTEX_BUFFERS_pack(__attribute__((unused)) __gen_user_data *data, 518010e230b6Smaya __attribute__((unused)) void * restrict dst, 518110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_VERTEX_BUFFERS * restrict values) 518210e230b6Smaya{ 518310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 518410e230b6Smaya 518510e230b6Smaya dw[0] = 518610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 518710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 518810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 518910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 519010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 519110e230b6Smaya} 519210e230b6Smaya 519310e230b6Smaya#define GEN75_3DSTATE_VERTEX_ELEMENTS_length_bias 2 519410e230b6Smaya#define GEN75_3DSTATE_VERTEX_ELEMENTS_header \ 519510e230b6Smaya .DWordLength = 1, \ 519610e230b6Smaya ._3DCommandSubOpcode = 9, \ 519710e230b6Smaya ._3DCommandOpcode = 0, \ 519810e230b6Smaya .CommandSubType = 3, \ 519910e230b6Smaya .CommandType = 3 520010e230b6Smaya 520110e230b6Smayastruct GEN75_3DSTATE_VERTEX_ELEMENTS { 520210e230b6Smaya uint32_t DWordLength; 520310e230b6Smaya uint32_t _3DCommandSubOpcode; 520410e230b6Smaya uint32_t _3DCommandOpcode; 520510e230b6Smaya uint32_t CommandSubType; 520610e230b6Smaya uint32_t CommandType; 520710e230b6Smaya /* variable length fields follow */ 520810e230b6Smaya}; 520910e230b6Smaya 521010e230b6Smayastatic inline void 521110e230b6SmayaGEN75_3DSTATE_VERTEX_ELEMENTS_pack(__attribute__((unused)) __gen_user_data *data, 521210e230b6Smaya __attribute__((unused)) void * restrict dst, 521310e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_VERTEX_ELEMENTS * restrict values) 521410e230b6Smaya{ 521510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 521610e230b6Smaya 521710e230b6Smaya dw[0] = 521810e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 521910e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 522010e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 522110e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 522210e230b6Smaya __gen_uint(values->CommandType, 29, 31); 522310e230b6Smaya} 522410e230b6Smaya 522510e230b6Smaya#define GEN75_3DSTATE_VF_length 2 522610e230b6Smaya#define GEN75_3DSTATE_VF_length_bias 2 522710e230b6Smaya#define GEN75_3DSTATE_VF_header \ 522810e230b6Smaya .DWordLength = 0, \ 522910e230b6Smaya ._3DCommandSubOpcode = 12, \ 523010e230b6Smaya ._3DCommandOpcode = 0, \ 523110e230b6Smaya .CommandSubType = 3, \ 523210e230b6Smaya .CommandType = 3 523310e230b6Smaya 523410e230b6Smayastruct GEN75_3DSTATE_VF { 523510e230b6Smaya uint32_t DWordLength; 523610e230b6Smaya bool IndexedDrawCutIndexEnable; 523710e230b6Smaya uint32_t _3DCommandSubOpcode; 523810e230b6Smaya uint32_t _3DCommandOpcode; 523910e230b6Smaya uint32_t CommandSubType; 524010e230b6Smaya uint32_t CommandType; 524110e230b6Smaya uint32_t CutIndex; 524210e230b6Smaya}; 524310e230b6Smaya 524410e230b6Smayastatic inline void 524510e230b6SmayaGEN75_3DSTATE_VF_pack(__attribute__((unused)) __gen_user_data *data, 524610e230b6Smaya __attribute__((unused)) void * restrict dst, 524710e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_VF * restrict values) 524810e230b6Smaya{ 524910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 525010e230b6Smaya 525110e230b6Smaya dw[0] = 525210e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 525310e230b6Smaya __gen_uint(values->IndexedDrawCutIndexEnable, 8, 8) | 525410e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 525510e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 525610e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 525710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 525810e230b6Smaya 525910e230b6Smaya dw[1] = 526010e230b6Smaya __gen_uint(values->CutIndex, 0, 31); 526110e230b6Smaya} 526210e230b6Smaya 526310e230b6Smaya#define GEN75_3DSTATE_VF_STATISTICS_length 1 526410e230b6Smaya#define GEN75_3DSTATE_VF_STATISTICS_length_bias 1 526510e230b6Smaya#define GEN75_3DSTATE_VF_STATISTICS_header \ 526610e230b6Smaya ._3DCommandSubOpcode = 11, \ 526710e230b6Smaya ._3DCommandOpcode = 0, \ 526810e230b6Smaya .CommandSubType = 1, \ 526910e230b6Smaya .CommandType = 3 527010e230b6Smaya 527110e230b6Smayastruct GEN75_3DSTATE_VF_STATISTICS { 527210e230b6Smaya bool StatisticsEnable; 527310e230b6Smaya uint32_t _3DCommandSubOpcode; 527410e230b6Smaya uint32_t _3DCommandOpcode; 527510e230b6Smaya uint32_t CommandSubType; 527610e230b6Smaya uint32_t CommandType; 527710e230b6Smaya}; 527810e230b6Smaya 527910e230b6Smayastatic inline void 528010e230b6SmayaGEN75_3DSTATE_VF_STATISTICS_pack(__attribute__((unused)) __gen_user_data *data, 528110e230b6Smaya __attribute__((unused)) void * restrict dst, 528210e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_VF_STATISTICS * restrict values) 528310e230b6Smaya{ 528410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 528510e230b6Smaya 528610e230b6Smaya dw[0] = 528710e230b6Smaya __gen_uint(values->StatisticsEnable, 0, 0) | 528810e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 528910e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 529010e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 529110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 529210e230b6Smaya} 529310e230b6Smaya 529410e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length 2 529510e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length_bias 2 529610e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC_header\ 529710e230b6Smaya .DWordLength = 0, \ 529810e230b6Smaya ._3DCommandSubOpcode = 35, \ 529910e230b6Smaya ._3DCommandOpcode = 0, \ 530010e230b6Smaya .CommandSubType = 3, \ 530110e230b6Smaya .CommandType = 3 530210e230b6Smaya 530310e230b6Smayastruct GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC { 530410e230b6Smaya uint32_t DWordLength; 530510e230b6Smaya uint32_t _3DCommandSubOpcode; 530610e230b6Smaya uint32_t _3DCommandOpcode; 530710e230b6Smaya uint32_t CommandSubType; 530810e230b6Smaya uint32_t CommandType; 530910e230b6Smaya uint64_t CCViewportPointer; 531010e230b6Smaya}; 531110e230b6Smaya 531210e230b6Smayastatic inline void 531310e230b6SmayaGEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC_pack(__attribute__((unused)) __gen_user_data *data, 531410e230b6Smaya __attribute__((unused)) void * restrict dst, 531510e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC * restrict values) 531610e230b6Smaya{ 531710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 531810e230b6Smaya 531910e230b6Smaya dw[0] = 532010e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 532110e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 532210e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 532310e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 532410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 532510e230b6Smaya 532610e230b6Smaya dw[1] = 532710e230b6Smaya __gen_offset(values->CCViewportPointer, 5, 31); 532810e230b6Smaya} 532910e230b6Smaya 533010e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length 2 533110e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length_bias 2 533210e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_header\ 533310e230b6Smaya .DWordLength = 0, \ 533410e230b6Smaya ._3DCommandSubOpcode = 33, \ 533510e230b6Smaya ._3DCommandOpcode = 0, \ 533610e230b6Smaya .CommandSubType = 3, \ 533710e230b6Smaya .CommandType = 3 533810e230b6Smaya 533910e230b6Smayastruct GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP { 534010e230b6Smaya uint32_t DWordLength; 534110e230b6Smaya uint32_t _3DCommandSubOpcode; 534210e230b6Smaya uint32_t _3DCommandOpcode; 534310e230b6Smaya uint32_t CommandSubType; 534410e230b6Smaya uint32_t CommandType; 534510e230b6Smaya uint64_t SFClipViewportPointer; 534610e230b6Smaya}; 534710e230b6Smaya 534810e230b6Smayastatic inline void 534910e230b6SmayaGEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_pack(__attribute__((unused)) __gen_user_data *data, 535010e230b6Smaya __attribute__((unused)) void * restrict dst, 535110e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP * restrict values) 535210e230b6Smaya{ 535310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 535410e230b6Smaya 535510e230b6Smaya dw[0] = 535610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 535710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 535810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 535910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 536010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 536110e230b6Smaya 536210e230b6Smaya dw[1] = 536310e230b6Smaya __gen_offset(values->SFClipViewportPointer, 6, 31); 536410e230b6Smaya} 536510e230b6Smaya 536610e230b6Smaya#define GEN75_3DSTATE_VS_length 6 536710e230b6Smaya#define GEN75_3DSTATE_VS_length_bias 2 536810e230b6Smaya#define GEN75_3DSTATE_VS_header \ 536910e230b6Smaya .DWordLength = 4, \ 537010e230b6Smaya ._3DCommandSubOpcode = 16, \ 537110e230b6Smaya ._3DCommandOpcode = 0, \ 537210e230b6Smaya .CommandSubType = 3, \ 537310e230b6Smaya .CommandType = 3 537410e230b6Smaya 537510e230b6Smayastruct GEN75_3DSTATE_VS { 537610e230b6Smaya uint32_t DWordLength; 537710e230b6Smaya uint32_t _3DCommandSubOpcode; 537810e230b6Smaya uint32_t _3DCommandOpcode; 537910e230b6Smaya uint32_t CommandSubType; 538010e230b6Smaya uint32_t CommandType; 538110e230b6Smaya uint64_t KernelStartPointer; 538210e230b6Smaya bool SoftwareExceptionEnable; 538310e230b6Smaya bool VSaccessesUAV; 538410e230b6Smaya bool IllegalOpcodeExceptionEnable; 538510e230b6Smaya uint32_t FloatingPointMode; 538610e230b6Smaya#define IEEE754 0 538710e230b6Smaya#define Alternate 1 538810e230b6Smaya uint32_t ThreadPriority; 538910e230b6Smaya#define NormalPriority 0 539010e230b6Smaya#define HighPriority 1 539110e230b6Smaya uint32_t BindingTableEntryCount; 539210e230b6Smaya uint32_t SamplerCount; 539310e230b6Smaya#define NoSamplers 0 539410e230b6Smaya#define _14Samplers 1 539510e230b6Smaya#define _58Samplers 2 539610e230b6Smaya#define _912Samplers 3 539710e230b6Smaya#define _1316Samplers 4 539810e230b6Smaya bool VectorMaskEnable; 539910e230b6Smaya bool SingleVertexDispatch; 540010e230b6Smaya uint32_t PerThreadScratchSpace; 540110e230b6Smaya __gen_address_type ScratchSpaceBasePointer; 540210e230b6Smaya uint32_t VertexURBEntryReadOffset; 540310e230b6Smaya uint32_t VertexURBEntryReadLength; 540410e230b6Smaya uint32_t DispatchGRFStartRegisterForURBData; 540510e230b6Smaya bool Enable; 540610e230b6Smaya bool VertexCacheDisable; 540710e230b6Smaya bool StatisticsEnable; 540810e230b6Smaya uint32_t MaximumNumberofThreads; 540910e230b6Smaya}; 541010e230b6Smaya 541110e230b6Smayastatic inline void 541210e230b6SmayaGEN75_3DSTATE_VS_pack(__attribute__((unused)) __gen_user_data *data, 541310e230b6Smaya __attribute__((unused)) void * restrict dst, 541410e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_VS * restrict values) 541510e230b6Smaya{ 541610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 541710e230b6Smaya 541810e230b6Smaya dw[0] = 541910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 542010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 542110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 542210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 542310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 542410e230b6Smaya 542510e230b6Smaya dw[1] = 542610e230b6Smaya __gen_offset(values->KernelStartPointer, 6, 31); 542710e230b6Smaya 542810e230b6Smaya dw[2] = 542910e230b6Smaya __gen_uint(values->SoftwareExceptionEnable, 7, 7) | 543010e230b6Smaya __gen_uint(values->VSaccessesUAV, 12, 12) | 543110e230b6Smaya __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) | 543210e230b6Smaya __gen_uint(values->FloatingPointMode, 16, 16) | 543310e230b6Smaya __gen_uint(values->ThreadPriority, 17, 17) | 543410e230b6Smaya __gen_uint(values->BindingTableEntryCount, 18, 25) | 543510e230b6Smaya __gen_uint(values->SamplerCount, 27, 29) | 543610e230b6Smaya __gen_uint(values->VectorMaskEnable, 30, 30) | 543710e230b6Smaya __gen_uint(values->SingleVertexDispatch, 31, 31); 543810e230b6Smaya 543910e230b6Smaya const uint32_t v3 = 544010e230b6Smaya __gen_uint(values->PerThreadScratchSpace, 0, 3); 544110e230b6Smaya dw[3] = __gen_combine_address(data, &dw[3], values->ScratchSpaceBasePointer, v3); 544210e230b6Smaya 544310e230b6Smaya dw[4] = 544410e230b6Smaya __gen_uint(values->VertexURBEntryReadOffset, 4, 9) | 544510e230b6Smaya __gen_uint(values->VertexURBEntryReadLength, 11, 16) | 544610e230b6Smaya __gen_uint(values->DispatchGRFStartRegisterForURBData, 20, 24); 544710e230b6Smaya 544810e230b6Smaya dw[5] = 544910e230b6Smaya __gen_uint(values->Enable, 0, 0) | 545010e230b6Smaya __gen_uint(values->VertexCacheDisable, 1, 1) | 545110e230b6Smaya __gen_uint(values->StatisticsEnable, 10, 10) | 545210e230b6Smaya __gen_uint(values->MaximumNumberofThreads, 23, 31); 545310e230b6Smaya} 545410e230b6Smaya 545510e230b6Smaya#define GEN75_3DSTATE_WM_length 3 545610e230b6Smaya#define GEN75_3DSTATE_WM_length_bias 2 545710e230b6Smaya#define GEN75_3DSTATE_WM_header \ 545810e230b6Smaya .DWordLength = 1, \ 545910e230b6Smaya ._3DCommandSubOpcode = 20, \ 546010e230b6Smaya ._3DCommandOpcode = 0, \ 546110e230b6Smaya .CommandSubType = 3, \ 546210e230b6Smaya .CommandType = 3 546310e230b6Smaya 546410e230b6Smayastruct GEN75_3DSTATE_WM { 546510e230b6Smaya uint32_t DWordLength; 546610e230b6Smaya uint32_t _3DCommandSubOpcode; 546710e230b6Smaya uint32_t _3DCommandOpcode; 546810e230b6Smaya uint32_t CommandSubType; 546910e230b6Smaya uint32_t CommandType; 547010e230b6Smaya uint32_t MultisampleRasterizationMode; 547110e230b6Smaya#define MSRASTMODE_OFF_PIXEL 0 547210e230b6Smaya#define MSRASTMODE_OFF_PATTERN 1 547310e230b6Smaya#define MSRASTMODE_ON_PIXEL 2 547410e230b6Smaya#define MSRASTMODE_ON_PATTERN 3 547510e230b6Smaya uint32_t PointRasterizationRule; 547610e230b6Smaya#define RASTRULE_UPPER_LEFT 0 547710e230b6Smaya#define RASTRULE_UPPER_RIGHT 1 547810e230b6Smaya bool LineStippleEnable; 547910e230b6Smaya bool PolygonStippleEnable; 548010e230b6Smaya bool RTIndependentRasterizationEnable; 548110e230b6Smaya uint32_t LineAntialiasingRegionWidth; 548210e230b6Smaya#define _05pixels 0 548310e230b6Smaya#define _10pixels 1 548410e230b6Smaya#define _20pixels 2 548510e230b6Smaya#define _40pixels 3 548610e230b6Smaya uint32_t LineEndCapAntialiasingRegionWidth; 548710e230b6Smaya bool PixelShaderUsesInputCoverageMask; 548810e230b6Smaya uint32_t BarycentricInterpolationMode; 548910e230b6Smaya#define BIM_PERSPECTIVE_PIXEL 1 549010e230b6Smaya#define BIM_PERSPECTIVE_CENTROID 2 549110e230b6Smaya#define BIM_PERSPECTIVE_SAMPLE 4 549210e230b6Smaya#define BIM_LINEAR_PIXEL 8 549310e230b6Smaya#define BIM_LINEAR_CENTROID 16 549410e230b6Smaya#define BIM_LINEAR_SAMPLE 32 549510e230b6Smaya uint32_t PositionZWInterpolationMode; 549610e230b6Smaya#define INTERP_PIXEL 0 549710e230b6Smaya#define INTERP_CENTROID 2 549810e230b6Smaya#define INTERP_SAMPLE 3 549910e230b6Smaya bool PixelShaderUsesSourceW; 550010e230b6Smaya bool PixelShaderUsesSourceDepth; 550110e230b6Smaya uint32_t EarlyDepthStencilControl; 550210e230b6Smaya#define EDSC_NORMAL 0 550310e230b6Smaya#define EDSC_PSEXEC 1 550410e230b6Smaya#define EDSC_PREPS 2 550510e230b6Smaya uint32_t PixelShaderComputedDepthMode; 550610e230b6Smaya#define PSCDEPTH_OFF 0 550710e230b6Smaya#define PSCDEPTH_ON 1 550810e230b6Smaya#define PSCDEPTH_ON_GE 2 550910e230b6Smaya#define PSCDEPTH_ON_LE 3 551010e230b6Smaya bool PixelShaderKillsPixel; 551110e230b6Smaya bool LegacyDiamondLineRasterization; 551210e230b6Smaya bool HierarchicalDepthBufferResolveEnable; 551310e230b6Smaya bool DepthBufferResolveEnable; 551410e230b6Smaya bool ThreadDispatchEnable; 551510e230b6Smaya bool DepthBufferClear; 551610e230b6Smaya bool StatisticsEnable; 551710e230b6Smaya uint32_t PSUAVonly; 551810e230b6Smaya#define OFF 0 551910e230b6Smaya#define ON 1 552010e230b6Smaya uint32_t MultisampleDispatchMode; 552110e230b6Smaya#define MSDISPMODE_PERSAMPLE 0 552210e230b6Smaya#define MSDISPMODE_PERPIXEL 1 552310e230b6Smaya}; 552410e230b6Smaya 552510e230b6Smayastatic inline void 552610e230b6SmayaGEN75_3DSTATE_WM_pack(__attribute__((unused)) __gen_user_data *data, 552710e230b6Smaya __attribute__((unused)) void * restrict dst, 552810e230b6Smaya __attribute__((unused)) const struct GEN75_3DSTATE_WM * restrict values) 552910e230b6Smaya{ 553010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 553110e230b6Smaya 553210e230b6Smaya dw[0] = 553310e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 553410e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 553510e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 553610e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 553710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 553810e230b6Smaya 553910e230b6Smaya dw[1] = 554010e230b6Smaya __gen_uint(values->MultisampleRasterizationMode, 0, 1) | 554110e230b6Smaya __gen_uint(values->PointRasterizationRule, 2, 2) | 554210e230b6Smaya __gen_uint(values->LineStippleEnable, 3, 3) | 554310e230b6Smaya __gen_uint(values->PolygonStippleEnable, 4, 4) | 554410e230b6Smaya __gen_uint(values->RTIndependentRasterizationEnable, 5, 5) | 554510e230b6Smaya __gen_uint(values->LineAntialiasingRegionWidth, 6, 7) | 554610e230b6Smaya __gen_uint(values->LineEndCapAntialiasingRegionWidth, 8, 9) | 554710e230b6Smaya __gen_uint(values->PixelShaderUsesInputCoverageMask, 10, 10) | 554810e230b6Smaya __gen_uint(values->BarycentricInterpolationMode, 11, 16) | 554910e230b6Smaya __gen_uint(values->PositionZWInterpolationMode, 17, 18) | 555010e230b6Smaya __gen_uint(values->PixelShaderUsesSourceW, 19, 19) | 555110e230b6Smaya __gen_uint(values->PixelShaderUsesSourceDepth, 20, 20) | 555210e230b6Smaya __gen_uint(values->EarlyDepthStencilControl, 21, 22) | 555310e230b6Smaya __gen_uint(values->PixelShaderComputedDepthMode, 23, 24) | 555410e230b6Smaya __gen_uint(values->PixelShaderKillsPixel, 25, 25) | 555510e230b6Smaya __gen_uint(values->LegacyDiamondLineRasterization, 26, 26) | 555610e230b6Smaya __gen_uint(values->HierarchicalDepthBufferResolveEnable, 27, 27) | 555710e230b6Smaya __gen_uint(values->DepthBufferResolveEnable, 28, 28) | 555810e230b6Smaya __gen_uint(values->ThreadDispatchEnable, 29, 29) | 555910e230b6Smaya __gen_uint(values->DepthBufferClear, 30, 30) | 556010e230b6Smaya __gen_uint(values->StatisticsEnable, 31, 31); 556110e230b6Smaya 556210e230b6Smaya dw[2] = 556310e230b6Smaya __gen_uint(values->PSUAVonly, 30, 30) | 556410e230b6Smaya __gen_uint(values->MultisampleDispatchMode, 31, 31); 556510e230b6Smaya} 556610e230b6Smaya 556710e230b6Smaya#define GEN75_GPGPU_CSR_BASE_ADDRESS_length 2 556810e230b6Smaya#define GEN75_GPGPU_CSR_BASE_ADDRESS_length_bias 2 556910e230b6Smaya#define GEN75_GPGPU_CSR_BASE_ADDRESS_header \ 557010e230b6Smaya .DWordLength = 0, \ 557110e230b6Smaya ._3DCommandSubOpcode = 4, \ 557210e230b6Smaya ._3DCommandOpcode = 1, \ 557310e230b6Smaya .CommandSubType = 0, \ 557410e230b6Smaya .CommandType = 3 557510e230b6Smaya 557610e230b6Smayastruct GEN75_GPGPU_CSR_BASE_ADDRESS { 557710e230b6Smaya uint32_t DWordLength; 557810e230b6Smaya uint32_t _3DCommandSubOpcode; 557910e230b6Smaya uint32_t _3DCommandOpcode; 558010e230b6Smaya uint32_t CommandSubType; 558110e230b6Smaya uint32_t CommandType; 558210e230b6Smaya __gen_address_type GPGPUCSRBaseAddress; 558310e230b6Smaya}; 558410e230b6Smaya 558510e230b6Smayastatic inline void 558610e230b6SmayaGEN75_GPGPU_CSR_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data, 558710e230b6Smaya __attribute__((unused)) void * restrict dst, 558810e230b6Smaya __attribute__((unused)) const struct GEN75_GPGPU_CSR_BASE_ADDRESS * restrict values) 558910e230b6Smaya{ 559010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 559110e230b6Smaya 559210e230b6Smaya dw[0] = 559310e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 559410e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 559510e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 559610e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 559710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 559810e230b6Smaya 559910e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->GPGPUCSRBaseAddress, 0); 560010e230b6Smaya} 560110e230b6Smaya 560210e230b6Smaya#define GEN75_GPGPU_OBJECT_length 8 560310e230b6Smaya#define GEN75_GPGPU_OBJECT_length_bias 2 560410e230b6Smaya#define GEN75_GPGPU_OBJECT_header \ 560510e230b6Smaya .DWordLength = 6, \ 560610e230b6Smaya .SubOpcode = 4, \ 560710e230b6Smaya .MediaCommandOpcode = 1, \ 560810e230b6Smaya .Pipeline = 2, \ 560910e230b6Smaya .CommandType = 3 561010e230b6Smaya 561110e230b6Smayastruct GEN75_GPGPU_OBJECT { 561210e230b6Smaya uint32_t DWordLength; 561310e230b6Smaya bool PredicateEnable; 561410e230b6Smaya uint32_t SubOpcode; 561510e230b6Smaya uint32_t MediaCommandOpcode; 561610e230b6Smaya uint32_t Pipeline; 561710e230b6Smaya uint32_t CommandType; 561810e230b6Smaya uint32_t InterfaceDescriptorOffset; 561910e230b6Smaya uint32_t SharedLocalMemoryFixedOffset; 562010e230b6Smaya uint32_t IndirectDataLength; 562110e230b6Smaya uint32_t HalfSliceDestinationSelect; 562210e230b6Smaya#define HalfSlice1 2 562310e230b6Smaya#define HalfSlice0 1 562410e230b6Smaya#define EitherHalfSlice 0 562510e230b6Smaya uint32_t SliceDestinationSelect; 562610e230b6Smaya#define Slice0 0 562710e230b6Smaya#define Slice1 1 562810e230b6Smaya uint32_t EndofThreadGroup; 562910e230b6Smaya uint32_t SharedLocalMemoryOffset; 563010e230b6Smaya uint64_t IndirectDataStartAddress; 563110e230b6Smaya uint32_t ThreadGroupIDX; 563210e230b6Smaya uint32_t ThreadGroupIDY; 563310e230b6Smaya uint32_t ThreadGroupIDZ; 563410e230b6Smaya uint32_t ExecutionMask; 563510e230b6Smaya}; 563610e230b6Smaya 563710e230b6Smayastatic inline void 563810e230b6SmayaGEN75_GPGPU_OBJECT_pack(__attribute__((unused)) __gen_user_data *data, 563910e230b6Smaya __attribute__((unused)) void * restrict dst, 564010e230b6Smaya __attribute__((unused)) const struct GEN75_GPGPU_OBJECT * restrict values) 564110e230b6Smaya{ 564210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 564310e230b6Smaya 564410e230b6Smaya dw[0] = 564510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 564610e230b6Smaya __gen_uint(values->PredicateEnable, 8, 8) | 564710e230b6Smaya __gen_uint(values->SubOpcode, 16, 23) | 564810e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 564910e230b6Smaya __gen_uint(values->Pipeline, 27, 28) | 565010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 565110e230b6Smaya 565210e230b6Smaya dw[1] = 565310e230b6Smaya __gen_uint(values->InterfaceDescriptorOffset, 0, 5) | 565410e230b6Smaya __gen_uint(values->SharedLocalMemoryFixedOffset, 7, 7); 565510e230b6Smaya 565610e230b6Smaya dw[2] = 565710e230b6Smaya __gen_uint(values->IndirectDataLength, 0, 16) | 565810e230b6Smaya __gen_uint(values->HalfSliceDestinationSelect, 17, 18) | 565910e230b6Smaya __gen_uint(values->SliceDestinationSelect, 19, 19) | 566010e230b6Smaya __gen_uint(values->EndofThreadGroup, 24, 24) | 566110e230b6Smaya __gen_uint(values->SharedLocalMemoryOffset, 28, 31); 566210e230b6Smaya 566310e230b6Smaya dw[3] = 566410e230b6Smaya __gen_offset(values->IndirectDataStartAddress, 0, 31); 566510e230b6Smaya 566610e230b6Smaya dw[4] = 566710e230b6Smaya __gen_uint(values->ThreadGroupIDX, 0, 31); 566810e230b6Smaya 566910e230b6Smaya dw[5] = 567010e230b6Smaya __gen_uint(values->ThreadGroupIDY, 0, 31); 567110e230b6Smaya 567210e230b6Smaya dw[6] = 567310e230b6Smaya __gen_uint(values->ThreadGroupIDZ, 0, 31); 567410e230b6Smaya 567510e230b6Smaya dw[7] = 567610e230b6Smaya __gen_uint(values->ExecutionMask, 0, 31); 567710e230b6Smaya} 567810e230b6Smaya 567910e230b6Smaya#define GEN75_GPGPU_WALKER_length 11 568010e230b6Smaya#define GEN75_GPGPU_WALKER_length_bias 2 568110e230b6Smaya#define GEN75_GPGPU_WALKER_header \ 568210e230b6Smaya .DWordLength = 9, \ 568310e230b6Smaya .SubOpcodeA = 5, \ 568410e230b6Smaya .MediaCommandOpcode = 1, \ 568510e230b6Smaya .Pipeline = 2, \ 568610e230b6Smaya .CommandType = 3 568710e230b6Smaya 568810e230b6Smayastruct GEN75_GPGPU_WALKER { 568910e230b6Smaya uint32_t DWordLength; 569010e230b6Smaya bool PredicateEnable; 569110e230b6Smaya bool IndirectParameterEnable; 569210e230b6Smaya uint32_t SubOpcodeA; 569310e230b6Smaya uint32_t MediaCommandOpcode; 569410e230b6Smaya uint32_t Pipeline; 569510e230b6Smaya uint32_t CommandType; 569610e230b6Smaya uint32_t InterfaceDescriptorOffset; 569710e230b6Smaya uint32_t ThreadWidthCounterMaximum; 569810e230b6Smaya uint32_t ThreadHeightCounterMaximum; 569910e230b6Smaya uint32_t ThreadDepthCounterMaximum; 570010e230b6Smaya uint32_t SIMDSize; 570110e230b6Smaya#define SIMD8 0 570210e230b6Smaya#define SIMD16 1 570310e230b6Smaya#define SIMD32 2 570410e230b6Smaya uint32_t ThreadGroupIDStartingX; 570510e230b6Smaya uint32_t ThreadGroupIDXDimension; 570610e230b6Smaya uint32_t ThreadGroupIDStartingY; 570710e230b6Smaya uint32_t ThreadGroupIDYDimension; 570810e230b6Smaya uint32_t ThreadGroupIDStartingZ; 570910e230b6Smaya uint32_t ThreadGroupIDZDimension; 571010e230b6Smaya uint32_t RightExecutionMask; 571110e230b6Smaya uint32_t BottomExecutionMask; 571210e230b6Smaya}; 571310e230b6Smaya 571410e230b6Smayastatic inline void 571510e230b6SmayaGEN75_GPGPU_WALKER_pack(__attribute__((unused)) __gen_user_data *data, 571610e230b6Smaya __attribute__((unused)) void * restrict dst, 571710e230b6Smaya __attribute__((unused)) const struct GEN75_GPGPU_WALKER * restrict values) 571810e230b6Smaya{ 571910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 572010e230b6Smaya 572110e230b6Smaya dw[0] = 572210e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 572310e230b6Smaya __gen_uint(values->PredicateEnable, 8, 8) | 572410e230b6Smaya __gen_uint(values->IndirectParameterEnable, 10, 10) | 572510e230b6Smaya __gen_uint(values->SubOpcodeA, 16, 23) | 572610e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 572710e230b6Smaya __gen_uint(values->Pipeline, 27, 28) | 572810e230b6Smaya __gen_uint(values->CommandType, 29, 31); 572910e230b6Smaya 573010e230b6Smaya dw[1] = 573110e230b6Smaya __gen_uint(values->InterfaceDescriptorOffset, 0, 5); 573210e230b6Smaya 573310e230b6Smaya dw[2] = 573410e230b6Smaya __gen_uint(values->ThreadWidthCounterMaximum, 0, 5) | 573510e230b6Smaya __gen_uint(values->ThreadHeightCounterMaximum, 8, 13) | 573610e230b6Smaya __gen_uint(values->ThreadDepthCounterMaximum, 16, 21) | 573710e230b6Smaya __gen_uint(values->SIMDSize, 30, 31); 573810e230b6Smaya 573910e230b6Smaya dw[3] = 574010e230b6Smaya __gen_uint(values->ThreadGroupIDStartingX, 0, 31); 574110e230b6Smaya 574210e230b6Smaya dw[4] = 574310e230b6Smaya __gen_uint(values->ThreadGroupIDXDimension, 0, 31); 574410e230b6Smaya 574510e230b6Smaya dw[5] = 574610e230b6Smaya __gen_uint(values->ThreadGroupIDStartingY, 0, 31); 574710e230b6Smaya 574810e230b6Smaya dw[6] = 574910e230b6Smaya __gen_uint(values->ThreadGroupIDYDimension, 0, 31); 575010e230b6Smaya 575110e230b6Smaya dw[7] = 575210e230b6Smaya __gen_uint(values->ThreadGroupIDStartingZ, 0, 31); 575310e230b6Smaya 575410e230b6Smaya dw[8] = 575510e230b6Smaya __gen_uint(values->ThreadGroupIDZDimension, 0, 31); 575610e230b6Smaya 575710e230b6Smaya dw[9] = 575810e230b6Smaya __gen_uint(values->RightExecutionMask, 0, 31); 575910e230b6Smaya 576010e230b6Smaya dw[10] = 576110e230b6Smaya __gen_uint(values->BottomExecutionMask, 0, 31); 576210e230b6Smaya} 576310e230b6Smaya 576410e230b6Smaya#define GEN75_MEDIA_CURBE_LOAD_length 4 576510e230b6Smaya#define GEN75_MEDIA_CURBE_LOAD_length_bias 2 576610e230b6Smaya#define GEN75_MEDIA_CURBE_LOAD_header \ 576710e230b6Smaya .DWordLength = 2, \ 576810e230b6Smaya .SubOpcode = 1, \ 576910e230b6Smaya .MediaCommandOpcode = 0, \ 577010e230b6Smaya .Pipeline = 2, \ 577110e230b6Smaya .CommandType = 3 577210e230b6Smaya 577310e230b6Smayastruct GEN75_MEDIA_CURBE_LOAD { 577410e230b6Smaya uint32_t DWordLength; 577510e230b6Smaya uint32_t SubOpcode; 577610e230b6Smaya uint32_t MediaCommandOpcode; 577710e230b6Smaya uint32_t Pipeline; 577810e230b6Smaya uint32_t CommandType; 577910e230b6Smaya uint32_t CURBETotalDataLength; 578010e230b6Smaya uint32_t CURBEDataStartAddress; 578110e230b6Smaya}; 578210e230b6Smaya 578310e230b6Smayastatic inline void 578410e230b6SmayaGEN75_MEDIA_CURBE_LOAD_pack(__attribute__((unused)) __gen_user_data *data, 578510e230b6Smaya __attribute__((unused)) void * restrict dst, 578610e230b6Smaya __attribute__((unused)) const struct GEN75_MEDIA_CURBE_LOAD * restrict values) 578710e230b6Smaya{ 578810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 578910e230b6Smaya 579010e230b6Smaya dw[0] = 579110e230b6Smaya __gen_uint(values->DWordLength, 0, 15) | 579210e230b6Smaya __gen_uint(values->SubOpcode, 16, 23) | 579310e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 579410e230b6Smaya __gen_uint(values->Pipeline, 27, 28) | 579510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 579610e230b6Smaya 579710e230b6Smaya dw[1] = 0; 579810e230b6Smaya 579910e230b6Smaya dw[2] = 580010e230b6Smaya __gen_uint(values->CURBETotalDataLength, 0, 16); 580110e230b6Smaya 580210e230b6Smaya dw[3] = 580310e230b6Smaya __gen_uint(values->CURBEDataStartAddress, 0, 31); 580410e230b6Smaya} 580510e230b6Smaya 580610e230b6Smaya#define GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length 4 580710e230b6Smaya#define GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length_bias 2 580810e230b6Smaya#define GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD_header\ 580910e230b6Smaya .DWordLength = 2, \ 581010e230b6Smaya .SubOpcode = 2, \ 581110e230b6Smaya .MediaCommandOpcode = 0, \ 581210e230b6Smaya .Pipeline = 2, \ 581310e230b6Smaya .CommandType = 3 581410e230b6Smaya 581510e230b6Smayastruct GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD { 581610e230b6Smaya uint32_t DWordLength; 581710e230b6Smaya uint32_t SubOpcode; 581810e230b6Smaya uint32_t MediaCommandOpcode; 581910e230b6Smaya uint32_t Pipeline; 582010e230b6Smaya uint32_t CommandType; 582110e230b6Smaya uint32_t InterfaceDescriptorTotalLength; 582210e230b6Smaya uint64_t InterfaceDescriptorDataStartAddress; 582310e230b6Smaya}; 582410e230b6Smaya 582510e230b6Smayastatic inline void 582610e230b6SmayaGEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD_pack(__attribute__((unused)) __gen_user_data *data, 582710e230b6Smaya __attribute__((unused)) void * restrict dst, 582810e230b6Smaya __attribute__((unused)) const struct GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD * restrict values) 582910e230b6Smaya{ 583010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 583110e230b6Smaya 583210e230b6Smaya dw[0] = 583310e230b6Smaya __gen_uint(values->DWordLength, 0, 15) | 583410e230b6Smaya __gen_uint(values->SubOpcode, 16, 23) | 583510e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 583610e230b6Smaya __gen_uint(values->Pipeline, 27, 28) | 583710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 583810e230b6Smaya 583910e230b6Smaya dw[1] = 0; 584010e230b6Smaya 584110e230b6Smaya dw[2] = 584210e230b6Smaya __gen_uint(values->InterfaceDescriptorTotalLength, 0, 16); 584310e230b6Smaya 584410e230b6Smaya dw[3] = 584510e230b6Smaya __gen_offset(values->InterfaceDescriptorDataStartAddress, 0, 31); 584610e230b6Smaya} 584710e230b6Smaya 584810e230b6Smaya#define GEN75_MEDIA_OBJECT_length_bias 2 584910e230b6Smaya#define GEN75_MEDIA_OBJECT_header \ 585010e230b6Smaya .DWordLength = 4, \ 585110e230b6Smaya .MediaCommandSubOpcode = 0, \ 585210e230b6Smaya .MediaCommandOpcode = 1, \ 585310e230b6Smaya .MediaCommandPipeline = 2, \ 585410e230b6Smaya .CommandType = 3 585510e230b6Smaya 585610e230b6Smayastruct GEN75_MEDIA_OBJECT { 585710e230b6Smaya uint32_t DWordLength; 585810e230b6Smaya uint32_t MediaCommandSubOpcode; 585910e230b6Smaya uint32_t MediaCommandOpcode; 586010e230b6Smaya uint32_t MediaCommandPipeline; 586110e230b6Smaya uint32_t CommandType; 586210e230b6Smaya uint32_t InterfaceDescriptorOffset; 586310e230b6Smaya uint32_t IndirectDataLength; 586410e230b6Smaya uint32_t HalfSliceDestinationSelect; 586510e230b6Smaya#define HalfSlice1 2 586610e230b6Smaya#define HalfSlice0 1 586710e230b6Smaya#define Eitherhalfslice 0 586810e230b6Smaya uint32_t SliceDestinationSelect; 586910e230b6Smaya#define Slice0 0 587010e230b6Smaya#define Slice1 1 587110e230b6Smaya#define EitherSlice 0 587210e230b6Smaya uint32_t UseScoreboard; 587310e230b6Smaya#define Notusingscoreboard 0 587410e230b6Smaya#define Usingscoreboard 1 587510e230b6Smaya uint32_t ThreadSynchronization; 587610e230b6Smaya#define Nothreadsynchronization 0 587710e230b6Smaya#define Threaddispatchissynchronizedbythespawnrootthreadmessage 1 587810e230b6Smaya bool ChildrenPresent; 587910e230b6Smaya __gen_address_type IndirectDataStartAddress; 588010e230b6Smaya uint32_t ScoreboardX; 588110e230b6Smaya uint32_t ScoredboardY; 588210e230b6Smaya uint32_t ScoreboardMask; 588310e230b6Smaya uint32_t ScoreboardColor; 588410e230b6Smaya /* variable length fields follow */ 588510e230b6Smaya}; 588610e230b6Smaya 588710e230b6Smayastatic inline void 588810e230b6SmayaGEN75_MEDIA_OBJECT_pack(__attribute__((unused)) __gen_user_data *data, 588910e230b6Smaya __attribute__((unused)) void * restrict dst, 589010e230b6Smaya __attribute__((unused)) const struct GEN75_MEDIA_OBJECT * restrict values) 589110e230b6Smaya{ 589210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 589310e230b6Smaya 589410e230b6Smaya dw[0] = 589510e230b6Smaya __gen_uint(values->DWordLength, 0, 15) | 589610e230b6Smaya __gen_uint(values->MediaCommandSubOpcode, 16, 23) | 589710e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 589810e230b6Smaya __gen_uint(values->MediaCommandPipeline, 27, 28) | 589910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 590010e230b6Smaya 590110e230b6Smaya dw[1] = 590210e230b6Smaya __gen_uint(values->InterfaceDescriptorOffset, 0, 5); 590310e230b6Smaya 590410e230b6Smaya dw[2] = 590510e230b6Smaya __gen_uint(values->IndirectDataLength, 0, 16) | 590610e230b6Smaya __gen_uint(values->HalfSliceDestinationSelect, 17, 18) | 590710e230b6Smaya __gen_uint(values->SliceDestinationSelect, 19, 19) | 590810e230b6Smaya __gen_uint(values->UseScoreboard, 21, 21) | 590910e230b6Smaya __gen_uint(values->ThreadSynchronization, 24, 24) | 591010e230b6Smaya __gen_uint(values->ChildrenPresent, 31, 31); 591110e230b6Smaya 591210e230b6Smaya dw[3] = __gen_combine_address(data, &dw[3], values->IndirectDataStartAddress, 0); 591310e230b6Smaya 591410e230b6Smaya dw[4] = 591510e230b6Smaya __gen_uint(values->ScoreboardX, 0, 8) | 591610e230b6Smaya __gen_uint(values->ScoredboardY, 16, 24); 591710e230b6Smaya 591810e230b6Smaya dw[5] = 591910e230b6Smaya __gen_uint(values->ScoreboardMask, 0, 7) | 592010e230b6Smaya __gen_uint(values->ScoreboardColor, 16, 19); 592110e230b6Smaya} 592210e230b6Smaya 592310e230b6Smaya#define GEN75_MEDIA_OBJECT_PRT_length 16 592410e230b6Smaya#define GEN75_MEDIA_OBJECT_PRT_length_bias 2 592510e230b6Smaya#define GEN75_MEDIA_OBJECT_PRT_header \ 592610e230b6Smaya .DWordLength = 14, \ 592710e230b6Smaya .SubOpcode = 2, \ 592810e230b6Smaya .MediaCommandOpcode = 1, \ 592910e230b6Smaya .Pipeline = 2, \ 593010e230b6Smaya .CommandType = 3 593110e230b6Smaya 593210e230b6Smayastruct GEN75_MEDIA_OBJECT_PRT { 593310e230b6Smaya uint32_t DWordLength; 593410e230b6Smaya uint32_t SubOpcode; 593510e230b6Smaya uint32_t MediaCommandOpcode; 593610e230b6Smaya uint32_t Pipeline; 593710e230b6Smaya uint32_t CommandType; 593810e230b6Smaya uint32_t InterfaceDescriptorOffset; 593910e230b6Smaya uint32_t PRT_FenceType; 594010e230b6Smaya#define Rootthreadqueue 0 594110e230b6Smaya#define VFEstateflush 1 594210e230b6Smaya bool PRT_FenceNeeded; 594310e230b6Smaya bool ChildrenPresent; 594410e230b6Smaya uint32_t InlineData[12]; 594510e230b6Smaya}; 594610e230b6Smaya 594710e230b6Smayastatic inline void 594810e230b6SmayaGEN75_MEDIA_OBJECT_PRT_pack(__attribute__((unused)) __gen_user_data *data, 594910e230b6Smaya __attribute__((unused)) void * restrict dst, 595010e230b6Smaya __attribute__((unused)) const struct GEN75_MEDIA_OBJECT_PRT * restrict values) 595110e230b6Smaya{ 595210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 595310e230b6Smaya 595410e230b6Smaya dw[0] = 595510e230b6Smaya __gen_uint(values->DWordLength, 0, 15) | 595610e230b6Smaya __gen_uint(values->SubOpcode, 16, 23) | 595710e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 595810e230b6Smaya __gen_uint(values->Pipeline, 27, 28) | 595910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 596010e230b6Smaya 596110e230b6Smaya dw[1] = 596210e230b6Smaya __gen_uint(values->InterfaceDescriptorOffset, 0, 5); 596310e230b6Smaya 596410e230b6Smaya dw[2] = 596510e230b6Smaya __gen_uint(values->PRT_FenceType, 22, 22) | 596610e230b6Smaya __gen_uint(values->PRT_FenceNeeded, 23, 23) | 596710e230b6Smaya __gen_uint(values->ChildrenPresent, 31, 31); 596810e230b6Smaya 596910e230b6Smaya dw[3] = 0; 597010e230b6Smaya 597110e230b6Smaya dw[4] = 597210e230b6Smaya __gen_uint(values->InlineData[0], 0, 31); 597310e230b6Smaya 597410e230b6Smaya dw[5] = 597510e230b6Smaya __gen_uint(values->InlineData[1], 0, 31); 597610e230b6Smaya 597710e230b6Smaya dw[6] = 597810e230b6Smaya __gen_uint(values->InlineData[2], 0, 31); 597910e230b6Smaya 598010e230b6Smaya dw[7] = 598110e230b6Smaya __gen_uint(values->InlineData[3], 0, 31); 598210e230b6Smaya 598310e230b6Smaya dw[8] = 598410e230b6Smaya __gen_uint(values->InlineData[4], 0, 31); 598510e230b6Smaya 598610e230b6Smaya dw[9] = 598710e230b6Smaya __gen_uint(values->InlineData[5], 0, 31); 598810e230b6Smaya 598910e230b6Smaya dw[10] = 599010e230b6Smaya __gen_uint(values->InlineData[6], 0, 31); 599110e230b6Smaya 599210e230b6Smaya dw[11] = 599310e230b6Smaya __gen_uint(values->InlineData[7], 0, 31); 599410e230b6Smaya 599510e230b6Smaya dw[12] = 599610e230b6Smaya __gen_uint(values->InlineData[8], 0, 31); 599710e230b6Smaya 599810e230b6Smaya dw[13] = 599910e230b6Smaya __gen_uint(values->InlineData[9], 0, 31); 600010e230b6Smaya 600110e230b6Smaya dw[14] = 600210e230b6Smaya __gen_uint(values->InlineData[10], 0, 31); 600310e230b6Smaya 600410e230b6Smaya dw[15] = 600510e230b6Smaya __gen_uint(values->InlineData[11], 0, 31); 600610e230b6Smaya} 600710e230b6Smaya 600810e230b6Smaya#define GEN75_MEDIA_OBJECT_WALKER_length_bias 2 600910e230b6Smaya#define GEN75_MEDIA_OBJECT_WALKER_header \ 601010e230b6Smaya .DWordLength = 15, \ 601110e230b6Smaya .SubOpcode = 3, \ 601210e230b6Smaya .MediaCommandOpcode = 1, \ 601310e230b6Smaya .Pipeline = 2, \ 601410e230b6Smaya .CommandType = 3 601510e230b6Smaya 601610e230b6Smayastruct GEN75_MEDIA_OBJECT_WALKER { 601710e230b6Smaya uint32_t DWordLength; 601810e230b6Smaya uint32_t SubOpcode; 601910e230b6Smaya uint32_t MediaCommandOpcode; 602010e230b6Smaya uint32_t Pipeline; 602110e230b6Smaya uint32_t CommandType; 602210e230b6Smaya uint32_t InterfaceDescriptorOffset; 602310e230b6Smaya uint32_t IndirectDataLength; 602410e230b6Smaya uint32_t UseScoreboard; 602510e230b6Smaya#define Notusingscoreboard 0 602610e230b6Smaya#define Usingscoreboard 1 602710e230b6Smaya uint32_t ThreadSynchronization; 602810e230b6Smaya#define Nothreadsynchronization 0 602910e230b6Smaya#define Threaddispatchissynchronizedbythespawnrootthreadmessage 1 603010e230b6Smaya uint32_t ChildrenPresent; 603110e230b6Smaya uint64_t IndirectDataStartAddress; 603210e230b6Smaya uint32_t ScoreboardMask; 603310e230b6Smaya int32_t MidLoopUnitX; 603410e230b6Smaya int32_t LocalMidLoopUnitY; 603510e230b6Smaya uint32_t MiddleLoopExtraSteps; 603610e230b6Smaya uint32_t ColorCountMinusOne; 603710e230b6Smaya uint32_t QuadMode; 603810e230b6Smaya uint32_t Repel; 603910e230b6Smaya uint32_t DualMode; 604010e230b6Smaya uint32_t LocalLoopExecCount; 604110e230b6Smaya uint32_t GlobalLoopExecCount; 604210e230b6Smaya uint32_t BlockResolutionX; 604310e230b6Smaya uint32_t BlockResolutionY; 604410e230b6Smaya uint32_t LocalStartX; 604510e230b6Smaya uint32_t LocalStartY; 604610e230b6Smaya int32_t LocalOuterLoopStrideX; 604710e230b6Smaya int32_t LocalOuterLoopStrideY; 604810e230b6Smaya int32_t LocalInnerLoopUnitX; 604910e230b6Smaya int32_t LocalInnerLoopUnitY; 605010e230b6Smaya uint32_t GlobalResolutionX; 605110e230b6Smaya uint32_t GlobalResolutionY; 605210e230b6Smaya int32_t GlobalStartX; 605310e230b6Smaya int32_t GlobalStartY; 605410e230b6Smaya int32_t GlobalOuterLoopStrideX; 605510e230b6Smaya int32_t GlobalOuterLoopStrideY; 605610e230b6Smaya int32_t GlobalInnerLoopUnitX; 605710e230b6Smaya int32_t GlobalInnerLoopUnitY; 605810e230b6Smaya /* variable length fields follow */ 605910e230b6Smaya}; 606010e230b6Smaya 606110e230b6Smayastatic inline void 606210e230b6SmayaGEN75_MEDIA_OBJECT_WALKER_pack(__attribute__((unused)) __gen_user_data *data, 606310e230b6Smaya __attribute__((unused)) void * restrict dst, 606410e230b6Smaya __attribute__((unused)) const struct GEN75_MEDIA_OBJECT_WALKER * restrict values) 606510e230b6Smaya{ 606610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 606710e230b6Smaya 606810e230b6Smaya dw[0] = 606910e230b6Smaya __gen_uint(values->DWordLength, 0, 15) | 607010e230b6Smaya __gen_uint(values->SubOpcode, 16, 23) | 607110e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 607210e230b6Smaya __gen_uint(values->Pipeline, 27, 28) | 607310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 607410e230b6Smaya 607510e230b6Smaya dw[1] = 607610e230b6Smaya __gen_uint(values->InterfaceDescriptorOffset, 0, 5); 607710e230b6Smaya 607810e230b6Smaya dw[2] = 607910e230b6Smaya __gen_uint(values->IndirectDataLength, 0, 16) | 608010e230b6Smaya __gen_uint(values->UseScoreboard, 21, 21) | 608110e230b6Smaya __gen_uint(values->ThreadSynchronization, 24, 24) | 608210e230b6Smaya __gen_uint(values->ChildrenPresent, 31, 31); 608310e230b6Smaya 608410e230b6Smaya dw[3] = 608510e230b6Smaya __gen_offset(values->IndirectDataStartAddress, 0, 31); 608610e230b6Smaya 608710e230b6Smaya dw[4] = 0; 608810e230b6Smaya 608910e230b6Smaya dw[5] = 609010e230b6Smaya __gen_uint(values->ScoreboardMask, 0, 7); 609110e230b6Smaya 609210e230b6Smaya dw[6] = 609310e230b6Smaya __gen_sint(values->MidLoopUnitX, 8, 9) | 609410e230b6Smaya __gen_sint(values->LocalMidLoopUnitY, 12, 13) | 609510e230b6Smaya __gen_uint(values->MiddleLoopExtraSteps, 16, 20) | 609610e230b6Smaya __gen_uint(values->ColorCountMinusOne, 24, 27) | 609710e230b6Smaya __gen_uint(values->QuadMode, 29, 29) | 609810e230b6Smaya __gen_uint(values->Repel, 30, 30) | 609910e230b6Smaya __gen_uint(values->DualMode, 31, 31); 610010e230b6Smaya 610110e230b6Smaya dw[7] = 610210e230b6Smaya __gen_uint(values->LocalLoopExecCount, 0, 9) | 610310e230b6Smaya __gen_uint(values->GlobalLoopExecCount, 16, 25); 610410e230b6Smaya 610510e230b6Smaya dw[8] = 610610e230b6Smaya __gen_uint(values->BlockResolutionX, 0, 8) | 610710e230b6Smaya __gen_uint(values->BlockResolutionY, 16, 24); 610810e230b6Smaya 610910e230b6Smaya dw[9] = 611010e230b6Smaya __gen_uint(values->LocalStartX, 0, 8) | 611110e230b6Smaya __gen_uint(values->LocalStartY, 16, 24); 611210e230b6Smaya 611310e230b6Smaya dw[10] = 0; 611410e230b6Smaya 611510e230b6Smaya dw[11] = 611610e230b6Smaya __gen_sint(values->LocalOuterLoopStrideX, 0, 9) | 611710e230b6Smaya __gen_sint(values->LocalOuterLoopStrideY, 16, 25); 611810e230b6Smaya 611910e230b6Smaya dw[12] = 612010e230b6Smaya __gen_sint(values->LocalInnerLoopUnitX, 0, 9) | 612110e230b6Smaya __gen_sint(values->LocalInnerLoopUnitY, 16, 25); 612210e230b6Smaya 612310e230b6Smaya dw[13] = 612410e230b6Smaya __gen_uint(values->GlobalResolutionX, 0, 8) | 612510e230b6Smaya __gen_uint(values->GlobalResolutionY, 16, 24); 612610e230b6Smaya 612710e230b6Smaya dw[14] = 612810e230b6Smaya __gen_sint(values->GlobalStartX, 0, 9) | 612910e230b6Smaya __gen_sint(values->GlobalStartY, 16, 25); 613010e230b6Smaya 613110e230b6Smaya dw[15] = 613210e230b6Smaya __gen_sint(values->GlobalOuterLoopStrideX, 0, 9) | 613310e230b6Smaya __gen_sint(values->GlobalOuterLoopStrideY, 16, 25); 613410e230b6Smaya 613510e230b6Smaya dw[16] = 613610e230b6Smaya __gen_sint(values->GlobalInnerLoopUnitX, 0, 9) | 613710e230b6Smaya __gen_sint(values->GlobalInnerLoopUnitY, 16, 25); 613810e230b6Smaya} 613910e230b6Smaya 614010e230b6Smaya#define GEN75_MEDIA_STATE_FLUSH_length 2 614110e230b6Smaya#define GEN75_MEDIA_STATE_FLUSH_length_bias 2 614210e230b6Smaya#define GEN75_MEDIA_STATE_FLUSH_header \ 614310e230b6Smaya .DWordLength = 0, \ 614410e230b6Smaya .SubOpcode = 4, \ 614510e230b6Smaya .MediaCommandOpcode = 0, \ 614610e230b6Smaya .Pipeline = 2, \ 614710e230b6Smaya .CommandType = 3 614810e230b6Smaya 614910e230b6Smayastruct GEN75_MEDIA_STATE_FLUSH { 615010e230b6Smaya uint32_t DWordLength; 615110e230b6Smaya uint32_t SubOpcode; 615210e230b6Smaya uint32_t MediaCommandOpcode; 615310e230b6Smaya uint32_t Pipeline; 615410e230b6Smaya uint32_t CommandType; 615510e230b6Smaya uint32_t InterfaceDescriptorOffset; 615610e230b6Smaya uint32_t WatermarkRequired; 615710e230b6Smaya bool FlushtoGO; 615810e230b6Smaya bool DisablePreemption; 615910e230b6Smaya}; 616010e230b6Smaya 616110e230b6Smayastatic inline void 616210e230b6SmayaGEN75_MEDIA_STATE_FLUSH_pack(__attribute__((unused)) __gen_user_data *data, 616310e230b6Smaya __attribute__((unused)) void * restrict dst, 616410e230b6Smaya __attribute__((unused)) const struct GEN75_MEDIA_STATE_FLUSH * restrict values) 616510e230b6Smaya{ 616610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 616710e230b6Smaya 616810e230b6Smaya dw[0] = 616910e230b6Smaya __gen_uint(values->DWordLength, 0, 15) | 617010e230b6Smaya __gen_uint(values->SubOpcode, 16, 23) | 617110e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 617210e230b6Smaya __gen_uint(values->Pipeline, 27, 28) | 617310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 617410e230b6Smaya 617510e230b6Smaya dw[1] = 617610e230b6Smaya __gen_uint(values->InterfaceDescriptorOffset, 0, 5) | 617710e230b6Smaya __gen_uint(values->WatermarkRequired, 6, 6) | 617810e230b6Smaya __gen_uint(values->FlushtoGO, 7, 7) | 617910e230b6Smaya __gen_uint(values->DisablePreemption, 8, 8); 618010e230b6Smaya} 618110e230b6Smaya 618210e230b6Smaya#define GEN75_MEDIA_VFE_STATE_length 8 618310e230b6Smaya#define GEN75_MEDIA_VFE_STATE_length_bias 2 618410e230b6Smaya#define GEN75_MEDIA_VFE_STATE_header \ 618510e230b6Smaya .DWordLength = 6, \ 618610e230b6Smaya .SubOpcode = 0, \ 618710e230b6Smaya .MediaCommandOpcode = 0, \ 618810e230b6Smaya .Pipeline = 2, \ 618910e230b6Smaya .CommandType = 3 619010e230b6Smaya 619110e230b6Smayastruct GEN75_MEDIA_VFE_STATE { 619210e230b6Smaya uint32_t DWordLength; 619310e230b6Smaya uint32_t SubOpcode; 619410e230b6Smaya uint32_t MediaCommandOpcode; 619510e230b6Smaya uint32_t Pipeline; 619610e230b6Smaya uint32_t CommandType; 619710e230b6Smaya uint32_t PerThreadScratchSpace; 619810e230b6Smaya uint32_t StackSize; 619910e230b6Smaya __gen_address_type ScratchSpaceBasePointer; 620010e230b6Smaya uint32_t GPGPUMode; 620110e230b6Smaya uint32_t BypassGatewayControl; 620210e230b6Smaya#define MaintainingOpenGatewayForwardMsgCloseGatewayprotocollegacymode 0 620310e230b6Smaya#define BypassingOpenGatewayCloseGatewayprotocol 1 620410e230b6Smaya uint32_t ResetGatewayTimer; 620510e230b6Smaya#define Maintainingtheexistingtimestampstate 0 620610e230b6Smaya#define Resettingrelativetimerandlatchingtheglobaltimestamp 1 620710e230b6Smaya uint32_t NumberofURBEntries; 620810e230b6Smaya uint32_t MaximumNumberofThreads; 620910e230b6Smaya uint32_t HalfSliceDisable; 621010e230b6Smaya uint32_t CURBEAllocationSize; 621110e230b6Smaya uint32_t URBEntryAllocationSize; 621210e230b6Smaya uint32_t ScoreboardMask; 621310e230b6Smaya uint32_t ScoreboardType; 621410e230b6Smaya#define StallingScoreboard 0 621510e230b6Smaya#define NonStallingScoreboard 1 621610e230b6Smaya uint32_t ScoreboardEnable; 621710e230b6Smaya#define Scoreboarddisabled 0 621810e230b6Smaya#define Scoreboardenabled 1 621910e230b6Smaya int32_t Scoreboard0DeltaX; 622010e230b6Smaya int32_t Scoreboard0DeltaY; 622110e230b6Smaya int32_t Scoreboard1DeltaX; 622210e230b6Smaya int32_t Scoreboard1DeltaY; 622310e230b6Smaya int32_t Scoreboard2DeltaX; 622410e230b6Smaya int32_t Scoreboard2DeltaY; 622510e230b6Smaya int32_t Scoreboard3DeltaX; 622610e230b6Smaya int32_t Scoreboard3DeltaY; 622710e230b6Smaya int32_t Scoreboard4DeltaX; 622810e230b6Smaya int32_t Scoreboard4DeltaY; 622910e230b6Smaya int32_t Scoreboard5DeltaX; 623010e230b6Smaya int32_t Scoreboard5DeltaY; 623110e230b6Smaya int32_t Scoreboard6DeltaX; 623210e230b6Smaya int32_t Scoreboard6DeltaY; 623310e230b6Smaya int32_t Scoreboard7DeltaX; 623410e230b6Smaya int32_t Scoreboard7DeltaY; 623510e230b6Smaya}; 623610e230b6Smaya 623710e230b6Smayastatic inline void 623810e230b6SmayaGEN75_MEDIA_VFE_STATE_pack(__attribute__((unused)) __gen_user_data *data, 623910e230b6Smaya __attribute__((unused)) void * restrict dst, 624010e230b6Smaya __attribute__((unused)) const struct GEN75_MEDIA_VFE_STATE * restrict values) 624110e230b6Smaya{ 624210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 624310e230b6Smaya 624410e230b6Smaya dw[0] = 624510e230b6Smaya __gen_uint(values->DWordLength, 0, 15) | 624610e230b6Smaya __gen_uint(values->SubOpcode, 16, 23) | 624710e230b6Smaya __gen_uint(values->MediaCommandOpcode, 24, 26) | 624810e230b6Smaya __gen_uint(values->Pipeline, 27, 28) | 624910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 625010e230b6Smaya 625110e230b6Smaya const uint32_t v1 = 625210e230b6Smaya __gen_uint(values->PerThreadScratchSpace, 0, 3) | 625310e230b6Smaya __gen_uint(values->StackSize, 4, 7); 625410e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->ScratchSpaceBasePointer, v1); 625510e230b6Smaya 625610e230b6Smaya dw[2] = 625710e230b6Smaya __gen_uint(values->GPGPUMode, 2, 2) | 625810e230b6Smaya __gen_uint(values->BypassGatewayControl, 6, 6) | 625910e230b6Smaya __gen_uint(values->ResetGatewayTimer, 7, 7) | 626010e230b6Smaya __gen_uint(values->NumberofURBEntries, 8, 15) | 626110e230b6Smaya __gen_uint(values->MaximumNumberofThreads, 16, 31); 626210e230b6Smaya 626310e230b6Smaya dw[3] = 626410e230b6Smaya __gen_uint(values->HalfSliceDisable, 0, 1); 626510e230b6Smaya 626610e230b6Smaya dw[4] = 626710e230b6Smaya __gen_uint(values->CURBEAllocationSize, 0, 15) | 626810e230b6Smaya __gen_uint(values->URBEntryAllocationSize, 16, 31); 626910e230b6Smaya 627010e230b6Smaya dw[5] = 627110e230b6Smaya __gen_uint(values->ScoreboardMask, 0, 7) | 627210e230b6Smaya __gen_uint(values->ScoreboardType, 30, 30) | 627310e230b6Smaya __gen_uint(values->ScoreboardEnable, 31, 31); 627410e230b6Smaya 627510e230b6Smaya dw[6] = 627610e230b6Smaya __gen_sint(values->Scoreboard0DeltaX, 0, 3) | 627710e230b6Smaya __gen_sint(values->Scoreboard0DeltaY, 4, 7) | 627810e230b6Smaya __gen_sint(values->Scoreboard1DeltaX, 8, 11) | 627910e230b6Smaya __gen_sint(values->Scoreboard1DeltaY, 12, 15) | 628010e230b6Smaya __gen_sint(values->Scoreboard2DeltaX, 16, 19) | 628110e230b6Smaya __gen_sint(values->Scoreboard2DeltaY, 20, 23) | 628210e230b6Smaya __gen_sint(values->Scoreboard3DeltaX, 24, 27) | 628310e230b6Smaya __gen_sint(values->Scoreboard3DeltaY, 28, 31); 628410e230b6Smaya 628510e230b6Smaya dw[7] = 628610e230b6Smaya __gen_sint(values->Scoreboard4DeltaX, 0, 3) | 628710e230b6Smaya __gen_sint(values->Scoreboard4DeltaY, 4, 7) | 628810e230b6Smaya __gen_sint(values->Scoreboard5DeltaX, 8, 11) | 628910e230b6Smaya __gen_sint(values->Scoreboard5DeltaY, 12, 15) | 629010e230b6Smaya __gen_sint(values->Scoreboard6DeltaX, 16, 19) | 629110e230b6Smaya __gen_sint(values->Scoreboard6DeltaY, 20, 23) | 629210e230b6Smaya __gen_sint(values->Scoreboard7DeltaX, 24, 27) | 629310e230b6Smaya __gen_sint(values->Scoreboard7DeltaY, 28, 31); 629410e230b6Smaya} 629510e230b6Smaya 629610e230b6Smaya#define GEN75_MI_ARB_CHECK_length 1 629710e230b6Smaya#define GEN75_MI_ARB_CHECK_length_bias 1 629810e230b6Smaya#define GEN75_MI_ARB_CHECK_header \ 629910e230b6Smaya .MICommandOpcode = 5, \ 630010e230b6Smaya .CommandType = 0 630110e230b6Smaya 630210e230b6Smayastruct GEN75_MI_ARB_CHECK { 630310e230b6Smaya uint32_t MICommandOpcode; 630410e230b6Smaya uint32_t CommandType; 630510e230b6Smaya}; 630610e230b6Smaya 630710e230b6Smayastatic inline void 630810e230b6SmayaGEN75_MI_ARB_CHECK_pack(__attribute__((unused)) __gen_user_data *data, 630910e230b6Smaya __attribute__((unused)) void * restrict dst, 631010e230b6Smaya __attribute__((unused)) const struct GEN75_MI_ARB_CHECK * restrict values) 631110e230b6Smaya{ 631210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 631310e230b6Smaya 631410e230b6Smaya dw[0] = 631510e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 631610e230b6Smaya __gen_uint(values->CommandType, 29, 31); 631710e230b6Smaya} 631810e230b6Smaya 631910e230b6Smaya#define GEN75_MI_ARB_ON_OFF_length 1 632010e230b6Smaya#define GEN75_MI_ARB_ON_OFF_length_bias 1 632110e230b6Smaya#define GEN75_MI_ARB_ON_OFF_header \ 632210e230b6Smaya .MICommandOpcode = 8, \ 632310e230b6Smaya .CommandType = 0 632410e230b6Smaya 632510e230b6Smayastruct GEN75_MI_ARB_ON_OFF { 632610e230b6Smaya bool ArbitrationEnable; 632710e230b6Smaya uint32_t MICommandOpcode; 632810e230b6Smaya uint32_t CommandType; 632910e230b6Smaya}; 633010e230b6Smaya 633110e230b6Smayastatic inline void 633210e230b6SmayaGEN75_MI_ARB_ON_OFF_pack(__attribute__((unused)) __gen_user_data *data, 633310e230b6Smaya __attribute__((unused)) void * restrict dst, 633410e230b6Smaya __attribute__((unused)) const struct GEN75_MI_ARB_ON_OFF * restrict values) 633510e230b6Smaya{ 633610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 633710e230b6Smaya 633810e230b6Smaya dw[0] = 633910e230b6Smaya __gen_uint(values->ArbitrationEnable, 0, 0) | 634010e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 634110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 634210e230b6Smaya} 634310e230b6Smaya 634410e230b6Smaya#define GEN75_MI_BATCH_BUFFER_END_length 1 634510e230b6Smaya#define GEN75_MI_BATCH_BUFFER_END_length_bias 1 634610e230b6Smaya#define GEN75_MI_BATCH_BUFFER_END_header \ 634710e230b6Smaya .MICommandOpcode = 10, \ 634810e230b6Smaya .CommandType = 0 634910e230b6Smaya 635010e230b6Smayastruct GEN75_MI_BATCH_BUFFER_END { 635110e230b6Smaya uint32_t MICommandOpcode; 635210e230b6Smaya uint32_t CommandType; 635310e230b6Smaya}; 635410e230b6Smaya 635510e230b6Smayastatic inline void 635610e230b6SmayaGEN75_MI_BATCH_BUFFER_END_pack(__attribute__((unused)) __gen_user_data *data, 635710e230b6Smaya __attribute__((unused)) void * restrict dst, 635810e230b6Smaya __attribute__((unused)) const struct GEN75_MI_BATCH_BUFFER_END * restrict values) 635910e230b6Smaya{ 636010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 636110e230b6Smaya 636210e230b6Smaya dw[0] = 636310e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 636410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 636510e230b6Smaya} 636610e230b6Smaya 636710e230b6Smaya#define GEN75_MI_BATCH_BUFFER_START_length 2 636810e230b6Smaya#define GEN75_MI_BATCH_BUFFER_START_length_bias 2 636910e230b6Smaya#define GEN75_MI_BATCH_BUFFER_START_header \ 637010e230b6Smaya .DWordLength = 0, \ 637110e230b6Smaya .MICommandOpcode = 49, \ 637210e230b6Smaya .CommandType = 0 637310e230b6Smaya 637410e230b6Smayastruct GEN75_MI_BATCH_BUFFER_START { 637510e230b6Smaya uint32_t DWordLength; 637610e230b6Smaya uint32_t AddressSpaceIndicator; 637710e230b6Smaya#define ASI_GGTT 0 637810e230b6Smaya#define ASI_PPGTT 1 637910e230b6Smaya bool ResourceStreamerEnable; 638010e230b6Smaya bool ClearCommandBufferEnable; 638110e230b6Smaya bool NonPrivileged; 638210e230b6Smaya bool PredicationEnable; 638310e230b6Smaya bool AddOffsetEnable; 638410e230b6Smaya uint32_t SecondLevelBatchBuffer; 638510e230b6Smaya#define Firstlevelbatch 0 638610e230b6Smaya#define Secondlevelbatch 1 638710e230b6Smaya uint32_t MICommandOpcode; 638810e230b6Smaya uint32_t CommandType; 638910e230b6Smaya __gen_address_type BatchBufferStartAddress; 639010e230b6Smaya}; 639110e230b6Smaya 639210e230b6Smayastatic inline void 639310e230b6SmayaGEN75_MI_BATCH_BUFFER_START_pack(__attribute__((unused)) __gen_user_data *data, 639410e230b6Smaya __attribute__((unused)) void * restrict dst, 639510e230b6Smaya __attribute__((unused)) const struct GEN75_MI_BATCH_BUFFER_START * restrict values) 639610e230b6Smaya{ 639710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 639810e230b6Smaya 639910e230b6Smaya dw[0] = 640010e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 640110e230b6Smaya __gen_uint(values->AddressSpaceIndicator, 8, 8) | 640210e230b6Smaya __gen_uint(values->ResourceStreamerEnable, 10, 10) | 640310e230b6Smaya __gen_uint(values->ClearCommandBufferEnable, 11, 11) | 640410e230b6Smaya __gen_uint(values->NonPrivileged, 13, 13) | 640510e230b6Smaya __gen_uint(values->PredicationEnable, 15, 15) | 640610e230b6Smaya __gen_uint(values->AddOffsetEnable, 16, 16) | 640710e230b6Smaya __gen_uint(values->SecondLevelBatchBuffer, 22, 22) | 640810e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 640910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 641010e230b6Smaya 641110e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->BatchBufferStartAddress, 0); 641210e230b6Smaya} 641310e230b6Smaya 641410e230b6Smaya#define GEN75_MI_CLFLUSH_length_bias 2 641510e230b6Smaya#define GEN75_MI_CLFLUSH_header \ 641610e230b6Smaya .DWordLength = 1, \ 641710e230b6Smaya .MICommandOpcode = 39, \ 641810e230b6Smaya .CommandType = 0 641910e230b6Smaya 642010e230b6Smayastruct GEN75_MI_CLFLUSH { 642110e230b6Smaya uint32_t DWordLength; 642210e230b6Smaya bool UseGlobalGTT; 642310e230b6Smaya uint32_t MICommandOpcode; 642410e230b6Smaya uint32_t CommandType; 642510e230b6Smaya uint32_t StartingCachelineOffset; 642610e230b6Smaya __gen_address_type PageBaseAddress; 642710e230b6Smaya __gen_address_type PageBaseAddressHigh; 642810e230b6Smaya /* variable length fields follow */ 642910e230b6Smaya}; 643010e230b6Smaya 643110e230b6Smayastatic inline void 643210e230b6SmayaGEN75_MI_CLFLUSH_pack(__attribute__((unused)) __gen_user_data *data, 643310e230b6Smaya __attribute__((unused)) void * restrict dst, 643410e230b6Smaya __attribute__((unused)) const struct GEN75_MI_CLFLUSH * restrict values) 643510e230b6Smaya{ 643610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 643710e230b6Smaya 643810e230b6Smaya dw[0] = 643910e230b6Smaya __gen_uint(values->DWordLength, 0, 9) | 644010e230b6Smaya __gen_uint(values->UseGlobalGTT, 22, 22) | 644110e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 644210e230b6Smaya __gen_uint(values->CommandType, 29, 31); 644310e230b6Smaya 644410e230b6Smaya const uint32_t v1 = 644510e230b6Smaya __gen_uint(values->StartingCachelineOffset, 6, 11); 644610e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->PageBaseAddress, v1); 644710e230b6Smaya 644810e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->PageBaseAddressHigh, 0); 644910e230b6Smaya} 645010e230b6Smaya 645110e230b6Smaya#define GEN75_MI_CONDITIONAL_BATCH_BUFFER_END_length 2 645210e230b6Smaya#define GEN75_MI_CONDITIONAL_BATCH_BUFFER_END_length_bias 2 645310e230b6Smaya#define GEN75_MI_CONDITIONAL_BATCH_BUFFER_END_header\ 645410e230b6Smaya .DWordLength = 0, \ 645510e230b6Smaya .CompareSemaphore = 0, \ 645610e230b6Smaya .MICommandOpcode = 54, \ 645710e230b6Smaya .CommandType = 0 645810e230b6Smaya 645910e230b6Smayastruct GEN75_MI_CONDITIONAL_BATCH_BUFFER_END { 646010e230b6Smaya uint32_t DWordLength; 646110e230b6Smaya uint32_t CompareSemaphore; 646210e230b6Smaya bool UseGlobalGTT; 646310e230b6Smaya uint32_t MICommandOpcode; 646410e230b6Smaya uint32_t CommandType; 646510e230b6Smaya uint32_t CompareDataDword; 646610e230b6Smaya __gen_address_type CompareAddress; 646710e230b6Smaya}; 646810e230b6Smaya 646910e230b6Smayastatic inline void 647010e230b6SmayaGEN75_MI_CONDITIONAL_BATCH_BUFFER_END_pack(__attribute__((unused)) __gen_user_data *data, 647110e230b6Smaya __attribute__((unused)) void * restrict dst, 647210e230b6Smaya __attribute__((unused)) const struct GEN75_MI_CONDITIONAL_BATCH_BUFFER_END * restrict values) 647310e230b6Smaya{ 647410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 647510e230b6Smaya 647610e230b6Smaya dw[0] = 647710e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 647810e230b6Smaya __gen_uint(values->CompareSemaphore, 21, 21) | 647910e230b6Smaya __gen_uint(values->UseGlobalGTT, 22, 22) | 648010e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 648110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 648210e230b6Smaya 648310e230b6Smaya dw[1] = 648410e230b6Smaya __gen_uint(values->CompareDataDword, 0, 31); 648510e230b6Smaya} 648610e230b6Smaya 648710e230b6Smaya#define GEN75_MI_FLUSH_length 1 648810e230b6Smaya#define GEN75_MI_FLUSH_length_bias 1 648910e230b6Smaya#define GEN75_MI_FLUSH_header \ 649010e230b6Smaya .MICommandOpcode = 4, \ 649110e230b6Smaya .CommandType = 0 649210e230b6Smaya 649310e230b6Smayastruct GEN75_MI_FLUSH { 649410e230b6Smaya uint32_t StateInstructionCacheInvalidate; 649510e230b6Smaya#define DontInvalidate 0 649610e230b6Smaya#define Invalidate 1 649710e230b6Smaya uint32_t RenderCacheFlushInhibit; 649810e230b6Smaya#define Flush 0 649910e230b6Smaya#define DontFlush 1 650010e230b6Smaya uint32_t GlobalSnapshotCountReset; 650110e230b6Smaya#define DontReset 0 650210e230b6Smaya#define Reset 1 650310e230b6Smaya bool GenericMediaStateClear; 650410e230b6Smaya bool IndirectStatePointersDisable; 650510e230b6Smaya uint32_t MICommandOpcode; 650610e230b6Smaya uint32_t CommandType; 650710e230b6Smaya}; 650810e230b6Smaya 650910e230b6Smayastatic inline void 651010e230b6SmayaGEN75_MI_FLUSH_pack(__attribute__((unused)) __gen_user_data *data, 651110e230b6Smaya __attribute__((unused)) void * restrict dst, 651210e230b6Smaya __attribute__((unused)) const struct GEN75_MI_FLUSH * restrict values) 651310e230b6Smaya{ 651410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 651510e230b6Smaya 651610e230b6Smaya dw[0] = 651710e230b6Smaya __gen_uint(values->StateInstructionCacheInvalidate, 1, 1) | 651810e230b6Smaya __gen_uint(values->RenderCacheFlushInhibit, 2, 2) | 651910e230b6Smaya __gen_uint(values->GlobalSnapshotCountReset, 3, 3) | 652010e230b6Smaya __gen_uint(values->GenericMediaStateClear, 4, 4) | 652110e230b6Smaya __gen_uint(values->IndirectStatePointersDisable, 5, 5) | 652210e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 652310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 652410e230b6Smaya} 652510e230b6Smaya 652610e230b6Smaya#define GEN75_MI_LOAD_REGISTER_IMM_length 3 652710e230b6Smaya#define GEN75_MI_LOAD_REGISTER_IMM_length_bias 2 652810e230b6Smaya#define GEN75_MI_LOAD_REGISTER_IMM_header \ 652910e230b6Smaya .DWordLength = 1, \ 653010e230b6Smaya .MICommandOpcode = 34, \ 653110e230b6Smaya .CommandType = 0 653210e230b6Smaya 653310e230b6Smayastruct GEN75_MI_LOAD_REGISTER_IMM { 653410e230b6Smaya uint32_t DWordLength; 653510e230b6Smaya uint32_t ByteWriteDisables; 653610e230b6Smaya uint32_t MICommandOpcode; 653710e230b6Smaya uint32_t CommandType; 653810e230b6Smaya uint64_t RegisterOffset; 653910e230b6Smaya uint32_t DataDWord; 654010e230b6Smaya /* variable length fields follow */ 654110e230b6Smaya}; 654210e230b6Smaya 654310e230b6Smayastatic inline void 654410e230b6SmayaGEN75_MI_LOAD_REGISTER_IMM_pack(__attribute__((unused)) __gen_user_data *data, 654510e230b6Smaya __attribute__((unused)) void * restrict dst, 654610e230b6Smaya __attribute__((unused)) const struct GEN75_MI_LOAD_REGISTER_IMM * restrict values) 654710e230b6Smaya{ 654810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 654910e230b6Smaya 655010e230b6Smaya dw[0] = 655110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 655210e230b6Smaya __gen_uint(values->ByteWriteDisables, 8, 11) | 655310e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 655410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 655510e230b6Smaya 655610e230b6Smaya dw[1] = 655710e230b6Smaya __gen_offset(values->RegisterOffset, 2, 22); 655810e230b6Smaya 655910e230b6Smaya dw[2] = 656010e230b6Smaya __gen_uint(values->DataDWord, 0, 31); 656110e230b6Smaya} 656210e230b6Smaya 656310e230b6Smaya#define GEN75_MI_LOAD_REGISTER_MEM_length 3 656410e230b6Smaya#define GEN75_MI_LOAD_REGISTER_MEM_length_bias 2 656510e230b6Smaya#define GEN75_MI_LOAD_REGISTER_MEM_header \ 656610e230b6Smaya .DWordLength = 1, \ 656710e230b6Smaya .MICommandOpcode = 41, \ 656810e230b6Smaya .CommandType = 0 656910e230b6Smaya 657010e230b6Smayastruct GEN75_MI_LOAD_REGISTER_MEM { 657110e230b6Smaya uint32_t DWordLength; 657210e230b6Smaya bool AsyncModeEnable; 657310e230b6Smaya bool UseGlobalGTT; 657410e230b6Smaya uint32_t MICommandOpcode; 657510e230b6Smaya uint32_t CommandType; 657610e230b6Smaya uint64_t RegisterAddress; 657710e230b6Smaya __gen_address_type MemoryAddress; 657810e230b6Smaya}; 657910e230b6Smaya 658010e230b6Smayastatic inline void 658110e230b6SmayaGEN75_MI_LOAD_REGISTER_MEM_pack(__attribute__((unused)) __gen_user_data *data, 658210e230b6Smaya __attribute__((unused)) void * restrict dst, 658310e230b6Smaya __attribute__((unused)) const struct GEN75_MI_LOAD_REGISTER_MEM * restrict values) 658410e230b6Smaya{ 658510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 658610e230b6Smaya 658710e230b6Smaya dw[0] = 658810e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 658910e230b6Smaya __gen_uint(values->AsyncModeEnable, 21, 21) | 659010e230b6Smaya __gen_uint(values->UseGlobalGTT, 22, 22) | 659110e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 659210e230b6Smaya __gen_uint(values->CommandType, 29, 31); 659310e230b6Smaya 659410e230b6Smaya dw[1] = 659510e230b6Smaya __gen_offset(values->RegisterAddress, 2, 22); 659610e230b6Smaya 659710e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->MemoryAddress, 0); 659810e230b6Smaya} 659910e230b6Smaya 660010e230b6Smaya#define GEN75_MI_LOAD_REGISTER_REG_length 3 660110e230b6Smaya#define GEN75_MI_LOAD_REGISTER_REG_length_bias 2 660210e230b6Smaya#define GEN75_MI_LOAD_REGISTER_REG_header \ 660310e230b6Smaya .DWordLength = 1, \ 660410e230b6Smaya .MICommandOpcode = 42, \ 660510e230b6Smaya .CommandType = 0 660610e230b6Smaya 660710e230b6Smayastruct GEN75_MI_LOAD_REGISTER_REG { 660810e230b6Smaya uint32_t DWordLength; 660910e230b6Smaya uint32_t MICommandOpcode; 661010e230b6Smaya uint32_t CommandType; 661110e230b6Smaya uint64_t SourceRegisterAddress; 661210e230b6Smaya uint64_t DestinationRegisterAddress; 661310e230b6Smaya}; 661410e230b6Smaya 661510e230b6Smayastatic inline void 661610e230b6SmayaGEN75_MI_LOAD_REGISTER_REG_pack(__attribute__((unused)) __gen_user_data *data, 661710e230b6Smaya __attribute__((unused)) void * restrict dst, 661810e230b6Smaya __attribute__((unused)) const struct GEN75_MI_LOAD_REGISTER_REG * restrict values) 661910e230b6Smaya{ 662010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 662110e230b6Smaya 662210e230b6Smaya dw[0] = 662310e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 662410e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 662510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 662610e230b6Smaya 662710e230b6Smaya dw[1] = 662810e230b6Smaya __gen_offset(values->SourceRegisterAddress, 2, 22); 662910e230b6Smaya 663010e230b6Smaya dw[2] = 663110e230b6Smaya __gen_offset(values->DestinationRegisterAddress, 2, 22); 663210e230b6Smaya} 663310e230b6Smaya 663410e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_EXCL_length 2 663510e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_EXCL_length_bias 2 663610e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_EXCL_header \ 663710e230b6Smaya .DWordLength = 0, \ 663810e230b6Smaya .MICommandOpcode = 19, \ 663910e230b6Smaya .CommandType = 0 664010e230b6Smaya 664110e230b6Smayastruct GEN75_MI_LOAD_SCAN_LINES_EXCL { 664210e230b6Smaya uint32_t DWordLength; 664310e230b6Smaya uint32_t DisplayPlaneSelect; 664410e230b6Smaya#define DisplayPlaneA 0 664510e230b6Smaya#define DisplayPlaneB 1 664610e230b6Smaya#define DisplayPlaneC 4 664710e230b6Smaya uint32_t MICommandOpcode; 664810e230b6Smaya uint32_t CommandType; 664910e230b6Smaya uint32_t EndScanLineNumber; 665010e230b6Smaya uint32_t StartScanLineNumber; 665110e230b6Smaya}; 665210e230b6Smaya 665310e230b6Smayastatic inline void 665410e230b6SmayaGEN75_MI_LOAD_SCAN_LINES_EXCL_pack(__attribute__((unused)) __gen_user_data *data, 665510e230b6Smaya __attribute__((unused)) void * restrict dst, 665610e230b6Smaya __attribute__((unused)) const struct GEN75_MI_LOAD_SCAN_LINES_EXCL * restrict values) 665710e230b6Smaya{ 665810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 665910e230b6Smaya 666010e230b6Smaya dw[0] = 666110e230b6Smaya __gen_uint(values->DWordLength, 0, 5) | 666210e230b6Smaya __gen_uint(values->DisplayPlaneSelect, 19, 21) | 666310e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 666410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 666510e230b6Smaya 666610e230b6Smaya dw[1] = 666710e230b6Smaya __gen_uint(values->EndScanLineNumber, 0, 12) | 666810e230b6Smaya __gen_uint(values->StartScanLineNumber, 16, 28); 666910e230b6Smaya} 667010e230b6Smaya 667110e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_INCL_length 2 667210e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_INCL_length_bias 2 667310e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_INCL_header \ 667410e230b6Smaya .DWordLength = 0, \ 667510e230b6Smaya .MICommandOpcode = 18, \ 667610e230b6Smaya .CommandType = 0 667710e230b6Smaya 667810e230b6Smayastruct GEN75_MI_LOAD_SCAN_LINES_INCL { 667910e230b6Smaya uint32_t DWordLength; 668010e230b6Smaya uint32_t DisplayPlaneSelect; 668110e230b6Smaya#define DisplayPlaneA 0 668210e230b6Smaya#define DisplayPlaneB 1 668310e230b6Smaya#define DisplayPlaneC 4 668410e230b6Smaya uint32_t MICommandOpcode; 668510e230b6Smaya uint32_t CommandType; 668610e230b6Smaya uint32_t EndScanLineNumber; 668710e230b6Smaya uint32_t StartScanLineNumber; 668810e230b6Smaya}; 668910e230b6Smaya 669010e230b6Smayastatic inline void 669110e230b6SmayaGEN75_MI_LOAD_SCAN_LINES_INCL_pack(__attribute__((unused)) __gen_user_data *data, 669210e230b6Smaya __attribute__((unused)) void * restrict dst, 669310e230b6Smaya __attribute__((unused)) const struct GEN75_MI_LOAD_SCAN_LINES_INCL * restrict values) 669410e230b6Smaya{ 669510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 669610e230b6Smaya 669710e230b6Smaya dw[0] = 669810e230b6Smaya __gen_uint(values->DWordLength, 0, 5) | 669910e230b6Smaya __gen_uint(values->DisplayPlaneSelect, 19, 21) | 670010e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 670110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 670210e230b6Smaya 670310e230b6Smaya dw[1] = 670410e230b6Smaya __gen_uint(values->EndScanLineNumber, 0, 12) | 670510e230b6Smaya __gen_uint(values->StartScanLineNumber, 16, 28); 670610e230b6Smaya} 670710e230b6Smaya 670810e230b6Smaya#define GEN75_MI_LOAD_URB_MEM_length 3 670910e230b6Smaya#define GEN75_MI_LOAD_URB_MEM_length_bias 2 671010e230b6Smaya#define GEN75_MI_LOAD_URB_MEM_header \ 671110e230b6Smaya .DWordLength = 1, \ 671210e230b6Smaya .MICommandOpcode = 44, \ 671310e230b6Smaya .CommandType = 0 671410e230b6Smaya 671510e230b6Smayastruct GEN75_MI_LOAD_URB_MEM { 671610e230b6Smaya uint32_t DWordLength; 671710e230b6Smaya uint32_t MICommandOpcode; 671810e230b6Smaya uint32_t CommandType; 671910e230b6Smaya uint32_t URBAddress; 672010e230b6Smaya __gen_address_type MemoryAddress; 672110e230b6Smaya}; 672210e230b6Smaya 672310e230b6Smayastatic inline void 672410e230b6SmayaGEN75_MI_LOAD_URB_MEM_pack(__attribute__((unused)) __gen_user_data *data, 672510e230b6Smaya __attribute__((unused)) void * restrict dst, 672610e230b6Smaya __attribute__((unused)) const struct GEN75_MI_LOAD_URB_MEM * restrict values) 672710e230b6Smaya{ 672810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 672910e230b6Smaya 673010e230b6Smaya dw[0] = 673110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 673210e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 673310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 673410e230b6Smaya 673510e230b6Smaya dw[1] = 673610e230b6Smaya __gen_uint(values->URBAddress, 2, 14); 673710e230b6Smaya 673810e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->MemoryAddress, 0); 673910e230b6Smaya} 674010e230b6Smaya 674110e230b6Smaya#define GEN75_MI_MATH_length_bias 2 674210e230b6Smaya#define GEN75_MI_MATH_header \ 674310e230b6Smaya .DWordLength = 0, \ 674410e230b6Smaya .MICommandOpcode = 26, \ 674510e230b6Smaya .CommandType = 0 674610e230b6Smaya 674710e230b6Smayastruct GEN75_MI_MATH { 674810e230b6Smaya uint32_t DWordLength; 674910e230b6Smaya uint32_t MICommandOpcode; 675010e230b6Smaya uint32_t CommandType; 675110e230b6Smaya /* variable length fields follow */ 675210e230b6Smaya}; 675310e230b6Smaya 675410e230b6Smayastatic inline void 675510e230b6SmayaGEN75_MI_MATH_pack(__attribute__((unused)) __gen_user_data *data, 675610e230b6Smaya __attribute__((unused)) void * restrict dst, 675710e230b6Smaya __attribute__((unused)) const struct GEN75_MI_MATH * restrict values) 675810e230b6Smaya{ 675910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 676010e230b6Smaya 676110e230b6Smaya dw[0] = 676210e230b6Smaya __gen_uint(values->DWordLength, 0, 5) | 676310e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 676410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 676510e230b6Smaya} 676610e230b6Smaya 676710e230b6Smaya#define GEN75_MI_NOOP_length 1 676810e230b6Smaya#define GEN75_MI_NOOP_length_bias 1 676910e230b6Smaya#define GEN75_MI_NOOP_header \ 677010e230b6Smaya .MICommandOpcode = 0, \ 677110e230b6Smaya .CommandType = 0 677210e230b6Smaya 677310e230b6Smayastruct GEN75_MI_NOOP { 677410e230b6Smaya uint32_t IdentificationNumber; 677510e230b6Smaya bool IdentificationNumberRegisterWriteEnable; 677610e230b6Smaya uint32_t MICommandOpcode; 677710e230b6Smaya uint32_t CommandType; 677810e230b6Smaya}; 677910e230b6Smaya 678010e230b6Smayastatic inline void 678110e230b6SmayaGEN75_MI_NOOP_pack(__attribute__((unused)) __gen_user_data *data, 678210e230b6Smaya __attribute__((unused)) void * restrict dst, 678310e230b6Smaya __attribute__((unused)) const struct GEN75_MI_NOOP * restrict values) 678410e230b6Smaya{ 678510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 678610e230b6Smaya 678710e230b6Smaya dw[0] = 678810e230b6Smaya __gen_uint(values->IdentificationNumber, 0, 21) | 678910e230b6Smaya __gen_uint(values->IdentificationNumberRegisterWriteEnable, 22, 22) | 679010e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 679110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 679210e230b6Smaya} 679310e230b6Smaya 679410e230b6Smaya#define GEN75_MI_PREDICATE_length 1 679510e230b6Smaya#define GEN75_MI_PREDICATE_length_bias 1 679610e230b6Smaya#define GEN75_MI_PREDICATE_header \ 679710e230b6Smaya .MICommandOpcode = 12, \ 679810e230b6Smaya .CommandType = 0 679910e230b6Smaya 680010e230b6Smayastruct GEN75_MI_PREDICATE { 680110e230b6Smaya uint32_t CompareOperation; 680210e230b6Smaya#define COMPARE_TRUE 0 680310e230b6Smaya#define COMPARE_FALSE 1 680410e230b6Smaya#define COMPARE_SRCS_EQUAL 2 680510e230b6Smaya#define COMPARE_DELTAS_EQUAL 3 680610e230b6Smaya uint32_t CombineOperation; 680710e230b6Smaya#define COMBINE_SET 0 680810e230b6Smaya#define COMBINE_AND 1 680910e230b6Smaya#define COMBINE_OR 2 681010e230b6Smaya#define COMBINE_XOR 3 681110e230b6Smaya uint32_t LoadOperation; 681210e230b6Smaya#define LOAD_KEEP 0 681310e230b6Smaya#define LOAD_LOAD 2 681410e230b6Smaya#define LOAD_LOADINV 3 681510e230b6Smaya uint32_t MICommandOpcode; 681610e230b6Smaya uint32_t CommandType; 681710e230b6Smaya}; 681810e230b6Smaya 681910e230b6Smayastatic inline void 682010e230b6SmayaGEN75_MI_PREDICATE_pack(__attribute__((unused)) __gen_user_data *data, 682110e230b6Smaya __attribute__((unused)) void * restrict dst, 682210e230b6Smaya __attribute__((unused)) const struct GEN75_MI_PREDICATE * restrict values) 682310e230b6Smaya{ 682410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 682510e230b6Smaya 682610e230b6Smaya dw[0] = 682710e230b6Smaya __gen_uint(values->CompareOperation, 0, 1) | 682810e230b6Smaya __gen_uint(values->CombineOperation, 3, 4) | 682910e230b6Smaya __gen_uint(values->LoadOperation, 6, 7) | 683010e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 683110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 683210e230b6Smaya} 683310e230b6Smaya 683410e230b6Smaya#define GEN75_MI_REPORT_HEAD_length 1 683510e230b6Smaya#define GEN75_MI_REPORT_HEAD_length_bias 1 683610e230b6Smaya#define GEN75_MI_REPORT_HEAD_header \ 683710e230b6Smaya .MICommandOpcode = 7, \ 683810e230b6Smaya .CommandType = 0 683910e230b6Smaya 684010e230b6Smayastruct GEN75_MI_REPORT_HEAD { 684110e230b6Smaya uint32_t MICommandOpcode; 684210e230b6Smaya uint32_t CommandType; 684310e230b6Smaya}; 684410e230b6Smaya 684510e230b6Smayastatic inline void 684610e230b6SmayaGEN75_MI_REPORT_HEAD_pack(__attribute__((unused)) __gen_user_data *data, 684710e230b6Smaya __attribute__((unused)) void * restrict dst, 684810e230b6Smaya __attribute__((unused)) const struct GEN75_MI_REPORT_HEAD * restrict values) 684910e230b6Smaya{ 685010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 685110e230b6Smaya 685210e230b6Smaya dw[0] = 685310e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 685410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 685510e230b6Smaya} 685610e230b6Smaya 685710e230b6Smaya#define GEN75_MI_REPORT_PERF_COUNT_length 3 685810e230b6Smaya#define GEN75_MI_REPORT_PERF_COUNT_length_bias 2 685910e230b6Smaya#define GEN75_MI_REPORT_PERF_COUNT_header \ 686010e230b6Smaya .DWordLength = 1, \ 686110e230b6Smaya .MICommandOpcode = 40, \ 686210e230b6Smaya .CommandType = 0 686310e230b6Smaya 686410e230b6Smayastruct GEN75_MI_REPORT_PERF_COUNT { 686510e230b6Smaya uint32_t DWordLength; 686610e230b6Smaya uint32_t MICommandOpcode; 686710e230b6Smaya uint32_t CommandType; 686810e230b6Smaya bool UseGlobalGTT; 686910e230b6Smaya uint32_t CoreModeEnable; 687010e230b6Smaya __gen_address_type MemoryAddress; 687110e230b6Smaya uint32_t ReportID; 687210e230b6Smaya}; 687310e230b6Smaya 687410e230b6Smayastatic inline void 687510e230b6SmayaGEN75_MI_REPORT_PERF_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 687610e230b6Smaya __attribute__((unused)) void * restrict dst, 687710e230b6Smaya __attribute__((unused)) const struct GEN75_MI_REPORT_PERF_COUNT * restrict values) 687810e230b6Smaya{ 687910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 688010e230b6Smaya 688110e230b6Smaya dw[0] = 688210e230b6Smaya __gen_uint(values->DWordLength, 0, 5) | 688310e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 688410e230b6Smaya __gen_uint(values->CommandType, 29, 31); 688510e230b6Smaya 688610e230b6Smaya const uint32_t v1 = 688710e230b6Smaya __gen_uint(values->UseGlobalGTT, 0, 0) | 688810e230b6Smaya __gen_uint(values->CoreModeEnable, 4, 4); 688910e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->MemoryAddress, v1); 689010e230b6Smaya 689110e230b6Smaya dw[2] = 689210e230b6Smaya __gen_uint(values->ReportID, 0, 31); 689310e230b6Smaya} 689410e230b6Smaya 689510e230b6Smaya#define GEN75_MI_RS_CONTEXT_length 1 689610e230b6Smaya#define GEN75_MI_RS_CONTEXT_length_bias 1 689710e230b6Smaya#define GEN75_MI_RS_CONTEXT_header \ 689810e230b6Smaya .MICommandOpcode = 15, \ 689910e230b6Smaya .CommandType = 0 690010e230b6Smaya 690110e230b6Smayastruct GEN75_MI_RS_CONTEXT { 690210e230b6Smaya uint32_t ResourceStreamerSave; 690310e230b6Smaya#define RS_Restore 0 690410e230b6Smaya#define RS_Save 1 690510e230b6Smaya uint32_t MICommandOpcode; 690610e230b6Smaya uint32_t CommandType; 690710e230b6Smaya}; 690810e230b6Smaya 690910e230b6Smayastatic inline void 691010e230b6SmayaGEN75_MI_RS_CONTEXT_pack(__attribute__((unused)) __gen_user_data *data, 691110e230b6Smaya __attribute__((unused)) void * restrict dst, 691210e230b6Smaya __attribute__((unused)) const struct GEN75_MI_RS_CONTEXT * restrict values) 691310e230b6Smaya{ 691410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 691510e230b6Smaya 691610e230b6Smaya dw[0] = 691710e230b6Smaya __gen_uint(values->ResourceStreamerSave, 0, 0) | 691810e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 691910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 692010e230b6Smaya} 692110e230b6Smaya 692210e230b6Smaya#define GEN75_MI_RS_CONTROL_length 1 692310e230b6Smaya#define GEN75_MI_RS_CONTROL_length_bias 1 692410e230b6Smaya#define GEN75_MI_RS_CONTROL_header \ 692510e230b6Smaya .MICommandOpcode = 6, \ 692610e230b6Smaya .CommandType = 0 692710e230b6Smaya 692810e230b6Smayastruct GEN75_MI_RS_CONTROL { 692910e230b6Smaya uint32_t ResourceStreamerControl; 693010e230b6Smaya#define RS_Stop 0 693110e230b6Smaya#define RS_Start 1 693210e230b6Smaya uint32_t MICommandOpcode; 693310e230b6Smaya uint32_t CommandType; 693410e230b6Smaya}; 693510e230b6Smaya 693610e230b6Smayastatic inline void 693710e230b6SmayaGEN75_MI_RS_CONTROL_pack(__attribute__((unused)) __gen_user_data *data, 693810e230b6Smaya __attribute__((unused)) void * restrict dst, 693910e230b6Smaya __attribute__((unused)) const struct GEN75_MI_RS_CONTROL * restrict values) 694010e230b6Smaya{ 694110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 694210e230b6Smaya 694310e230b6Smaya dw[0] = 694410e230b6Smaya __gen_uint(values->ResourceStreamerControl, 0, 0) | 694510e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 694610e230b6Smaya __gen_uint(values->CommandType, 29, 31); 694710e230b6Smaya} 694810e230b6Smaya 694910e230b6Smaya#define GEN75_MI_RS_STORE_DATA_IMM_length 4 695010e230b6Smaya#define GEN75_MI_RS_STORE_DATA_IMM_length_bias 2 695110e230b6Smaya#define GEN75_MI_RS_STORE_DATA_IMM_header \ 695210e230b6Smaya .DWordLength = 2, \ 695310e230b6Smaya .MICommandOpcode = 43, \ 695410e230b6Smaya .CommandType = 0 695510e230b6Smaya 695610e230b6Smayastruct GEN75_MI_RS_STORE_DATA_IMM { 695710e230b6Smaya uint32_t DWordLength; 695810e230b6Smaya uint32_t MICommandOpcode; 695910e230b6Smaya uint32_t CommandType; 696010e230b6Smaya uint32_t CoreModeEnable; 696110e230b6Smaya __gen_address_type DestinationAddress; 696210e230b6Smaya uint32_t DataDWord0; 696310e230b6Smaya}; 696410e230b6Smaya 696510e230b6Smayastatic inline void 696610e230b6SmayaGEN75_MI_RS_STORE_DATA_IMM_pack(__attribute__((unused)) __gen_user_data *data, 696710e230b6Smaya __attribute__((unused)) void * restrict dst, 696810e230b6Smaya __attribute__((unused)) const struct GEN75_MI_RS_STORE_DATA_IMM * restrict values) 696910e230b6Smaya{ 697010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 697110e230b6Smaya 697210e230b6Smaya dw[0] = 697310e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 697410e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 697510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 697610e230b6Smaya 697710e230b6Smaya dw[1] = 0; 697810e230b6Smaya 697910e230b6Smaya const uint32_t v2 = 698010e230b6Smaya __gen_uint(values->CoreModeEnable, 0, 0); 698110e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->DestinationAddress, v2); 698210e230b6Smaya 698310e230b6Smaya dw[3] = 698410e230b6Smaya __gen_uint(values->DataDWord0, 0, 31); 698510e230b6Smaya} 698610e230b6Smaya 698710e230b6Smaya#define GEN75_MI_SEMAPHORE_MBOX_length 3 698810e230b6Smaya#define GEN75_MI_SEMAPHORE_MBOX_length_bias 2 698910e230b6Smaya#define GEN75_MI_SEMAPHORE_MBOX_header \ 699010e230b6Smaya .DWordLength = 1, \ 699110e230b6Smaya .MICommandOpcode = 22, \ 699210e230b6Smaya .CommandType = 0 699310e230b6Smaya 699410e230b6Smayastruct GEN75_MI_SEMAPHORE_MBOX { 699510e230b6Smaya uint32_t DWordLength; 699610e230b6Smaya uint32_t GeneralRegisterSelect; 699710e230b6Smaya uint32_t RegisterSelect; 699810e230b6Smaya#define RVSYNC 0 699910e230b6Smaya#define RVESYNC 1 700010e230b6Smaya#define RBSYNC 2 700110e230b6Smaya#define UseGeneralRegisterSelect 3 700210e230b6Smaya uint32_t MICommandOpcode; 700310e230b6Smaya uint32_t CommandType; 700410e230b6Smaya uint32_t SemaphoreDataDword; 700510e230b6Smaya}; 700610e230b6Smaya 700710e230b6Smayastatic inline void 700810e230b6SmayaGEN75_MI_SEMAPHORE_MBOX_pack(__attribute__((unused)) __gen_user_data *data, 700910e230b6Smaya __attribute__((unused)) void * restrict dst, 701010e230b6Smaya __attribute__((unused)) const struct GEN75_MI_SEMAPHORE_MBOX * restrict values) 701110e230b6Smaya{ 701210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 701310e230b6Smaya 701410e230b6Smaya dw[0] = 701510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 701610e230b6Smaya __gen_uint(values->GeneralRegisterSelect, 8, 13) | 701710e230b6Smaya __gen_uint(values->RegisterSelect, 16, 17) | 701810e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 701910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 702010e230b6Smaya 702110e230b6Smaya dw[1] = 702210e230b6Smaya __gen_uint(values->SemaphoreDataDword, 0, 31); 702310e230b6Smaya 702410e230b6Smaya dw[2] = 0; 702510e230b6Smaya} 702610e230b6Smaya 702710e230b6Smaya#define GEN75_MI_SET_CONTEXT_length 2 702810e230b6Smaya#define GEN75_MI_SET_CONTEXT_length_bias 2 702910e230b6Smaya#define GEN75_MI_SET_CONTEXT_header \ 703010e230b6Smaya .DWordLength = 0, \ 703110e230b6Smaya .MICommandOpcode = 24, \ 703210e230b6Smaya .CommandType = 0 703310e230b6Smaya 703410e230b6Smayastruct GEN75_MI_SET_CONTEXT { 703510e230b6Smaya uint32_t DWordLength; 703610e230b6Smaya uint32_t MICommandOpcode; 703710e230b6Smaya uint32_t CommandType; 703810e230b6Smaya uint32_t RestoreInhibit; 703910e230b6Smaya uint32_t ForceRestore; 704010e230b6Smaya bool ResourceStreamerStateRestoreEnable; 704110e230b6Smaya bool ResourceStreamerStateSaveEnable; 704210e230b6Smaya bool CoreModeEnable; 704310e230b6Smaya uint32_t ReservedMustbe1; 704410e230b6Smaya __gen_address_type LogicalContextAddress; 704510e230b6Smaya}; 704610e230b6Smaya 704710e230b6Smayastatic inline void 704810e230b6SmayaGEN75_MI_SET_CONTEXT_pack(__attribute__((unused)) __gen_user_data *data, 704910e230b6Smaya __attribute__((unused)) void * restrict dst, 705010e230b6Smaya __attribute__((unused)) const struct GEN75_MI_SET_CONTEXT * restrict values) 705110e230b6Smaya{ 705210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 705310e230b6Smaya 705410e230b6Smaya dw[0] = 705510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 705610e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 705710e230b6Smaya __gen_uint(values->CommandType, 29, 31); 705810e230b6Smaya 705910e230b6Smaya const uint32_t v1 = 706010e230b6Smaya __gen_uint(values->RestoreInhibit, 0, 0) | 706110e230b6Smaya __gen_uint(values->ForceRestore, 1, 1) | 706210e230b6Smaya __gen_uint(values->ResourceStreamerStateRestoreEnable, 2, 2) | 706310e230b6Smaya __gen_uint(values->ResourceStreamerStateSaveEnable, 3, 3) | 706410e230b6Smaya __gen_uint(values->CoreModeEnable, 4, 4) | 706510e230b6Smaya __gen_uint(values->ReservedMustbe1, 8, 8); 706610e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->LogicalContextAddress, v1); 706710e230b6Smaya} 706810e230b6Smaya 706910e230b6Smaya#define GEN75_MI_SET_PREDICATE_length 1 707010e230b6Smaya#define GEN75_MI_SET_PREDICATE_length_bias 1 707110e230b6Smaya#define GEN75_MI_SET_PREDICATE_header \ 707210e230b6Smaya .MICommandOpcode = 1, \ 707310e230b6Smaya .CommandType = 0 707410e230b6Smaya 707510e230b6Smayastruct GEN75_MI_SET_PREDICATE { 707610e230b6Smaya uint32_t PREDICATEENABLE; 707710e230b6Smaya uint32_t MICommandOpcode; 707810e230b6Smaya uint32_t CommandType; 707910e230b6Smaya}; 708010e230b6Smaya 708110e230b6Smayastatic inline void 708210e230b6SmayaGEN75_MI_SET_PREDICATE_pack(__attribute__((unused)) __gen_user_data *data, 708310e230b6Smaya __attribute__((unused)) void * restrict dst, 708410e230b6Smaya __attribute__((unused)) const struct GEN75_MI_SET_PREDICATE * restrict values) 708510e230b6Smaya{ 708610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 708710e230b6Smaya 708810e230b6Smaya dw[0] = 708910e230b6Smaya __gen_uint(values->PREDICATEENABLE, 0, 1) | 709010e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 709110e230b6Smaya __gen_uint(values->CommandType, 29, 31); 709210e230b6Smaya} 709310e230b6Smaya 709410e230b6Smaya#define GEN75_MI_STORE_DATA_IMM_length 4 709510e230b6Smaya#define GEN75_MI_STORE_DATA_IMM_length_bias 2 709610e230b6Smaya#define GEN75_MI_STORE_DATA_IMM_header \ 709710e230b6Smaya .DWordLength = 2, \ 709810e230b6Smaya .MICommandOpcode = 32, \ 709910e230b6Smaya .CommandType = 0 710010e230b6Smaya 710110e230b6Smayastruct GEN75_MI_STORE_DATA_IMM { 710210e230b6Smaya uint32_t DWordLength; 710310e230b6Smaya bool UseGlobalGTT; 710410e230b6Smaya uint32_t MICommandOpcode; 710510e230b6Smaya uint32_t CommandType; 710610e230b6Smaya uint32_t CoreModeEnable; 710710e230b6Smaya __gen_address_type Address; 710810e230b6Smaya uint64_t ImmediateData; 710910e230b6Smaya}; 711010e230b6Smaya 711110e230b6Smayastatic inline void 711210e230b6SmayaGEN75_MI_STORE_DATA_IMM_pack(__attribute__((unused)) __gen_user_data *data, 711310e230b6Smaya __attribute__((unused)) void * restrict dst, 711410e230b6Smaya __attribute__((unused)) const struct GEN75_MI_STORE_DATA_IMM * restrict values) 711510e230b6Smaya{ 711610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 711710e230b6Smaya 711810e230b6Smaya dw[0] = 711910e230b6Smaya __gen_uint(values->DWordLength, 0, 5) | 712010e230b6Smaya __gen_uint(values->UseGlobalGTT, 22, 22) | 712110e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 712210e230b6Smaya __gen_uint(values->CommandType, 29, 31); 712310e230b6Smaya 712410e230b6Smaya dw[1] = 0; 712510e230b6Smaya 712610e230b6Smaya const uint32_t v2 = 712710e230b6Smaya __gen_uint(values->CoreModeEnable, 0, 0); 712810e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->Address, v2); 712910e230b6Smaya 713010e230b6Smaya const uint64_t v3 = 713110e230b6Smaya __gen_uint(values->ImmediateData, 0, 63); 713210e230b6Smaya dw[3] = v3; 713310e230b6Smaya dw[4] = v3 >> 32; 713410e230b6Smaya} 713510e230b6Smaya 713610e230b6Smaya#define GEN75_MI_STORE_DATA_INDEX_length 3 713710e230b6Smaya#define GEN75_MI_STORE_DATA_INDEX_length_bias 2 713810e230b6Smaya#define GEN75_MI_STORE_DATA_INDEX_header \ 713910e230b6Smaya .DWordLength = 1, \ 714010e230b6Smaya .MICommandOpcode = 33, \ 714110e230b6Smaya .CommandType = 0 714210e230b6Smaya 714310e230b6Smayastruct GEN75_MI_STORE_DATA_INDEX { 714410e230b6Smaya uint32_t DWordLength; 714510e230b6Smaya uint32_t MICommandOpcode; 714610e230b6Smaya uint32_t CommandType; 714710e230b6Smaya uint32_t Offset; 714810e230b6Smaya uint32_t DataDWord0; 714910e230b6Smaya uint32_t DataDWord1; 715010e230b6Smaya}; 715110e230b6Smaya 715210e230b6Smayastatic inline void 715310e230b6SmayaGEN75_MI_STORE_DATA_INDEX_pack(__attribute__((unused)) __gen_user_data *data, 715410e230b6Smaya __attribute__((unused)) void * restrict dst, 715510e230b6Smaya __attribute__((unused)) const struct GEN75_MI_STORE_DATA_INDEX * restrict values) 715610e230b6Smaya{ 715710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 715810e230b6Smaya 715910e230b6Smaya dw[0] = 716010e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 716110e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 716210e230b6Smaya __gen_uint(values->CommandType, 29, 31); 716310e230b6Smaya 716410e230b6Smaya dw[1] = 716510e230b6Smaya __gen_uint(values->Offset, 2, 11); 716610e230b6Smaya 716710e230b6Smaya dw[2] = 716810e230b6Smaya __gen_uint(values->DataDWord0, 0, 31); 716910e230b6Smaya} 717010e230b6Smaya 717110e230b6Smaya#define GEN75_MI_STORE_REGISTER_MEM_length 3 717210e230b6Smaya#define GEN75_MI_STORE_REGISTER_MEM_length_bias 2 717310e230b6Smaya#define GEN75_MI_STORE_REGISTER_MEM_header \ 717410e230b6Smaya .DWordLength = 1, \ 717510e230b6Smaya .MICommandOpcode = 36, \ 717610e230b6Smaya .CommandType = 0 717710e230b6Smaya 717810e230b6Smayastruct GEN75_MI_STORE_REGISTER_MEM { 717910e230b6Smaya uint32_t DWordLength; 718010e230b6Smaya bool PredicateEnable; 718110e230b6Smaya bool UseGlobalGTT; 718210e230b6Smaya uint32_t MICommandOpcode; 718310e230b6Smaya uint32_t CommandType; 718410e230b6Smaya uint64_t RegisterAddress; 718510e230b6Smaya __gen_address_type MemoryAddress; 718610e230b6Smaya}; 718710e230b6Smaya 718810e230b6Smayastatic inline void 718910e230b6SmayaGEN75_MI_STORE_REGISTER_MEM_pack(__attribute__((unused)) __gen_user_data *data, 719010e230b6Smaya __attribute__((unused)) void * restrict dst, 719110e230b6Smaya __attribute__((unused)) const struct GEN75_MI_STORE_REGISTER_MEM * restrict values) 719210e230b6Smaya{ 719310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 719410e230b6Smaya 719510e230b6Smaya dw[0] = 719610e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 719710e230b6Smaya __gen_uint(values->PredicateEnable, 21, 21) | 719810e230b6Smaya __gen_uint(values->UseGlobalGTT, 22, 22) | 719910e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 720010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 720110e230b6Smaya 720210e230b6Smaya dw[1] = 720310e230b6Smaya __gen_offset(values->RegisterAddress, 2, 22); 720410e230b6Smaya 720510e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->MemoryAddress, 0); 720610e230b6Smaya} 720710e230b6Smaya 720810e230b6Smaya#define GEN75_MI_STORE_URB_MEM_length 3 720910e230b6Smaya#define GEN75_MI_STORE_URB_MEM_length_bias 2 721010e230b6Smaya#define GEN75_MI_STORE_URB_MEM_header \ 721110e230b6Smaya .DWordLength = 1, \ 721210e230b6Smaya .MICommandOpcode = 45, \ 721310e230b6Smaya .CommandType = 0 721410e230b6Smaya 721510e230b6Smayastruct GEN75_MI_STORE_URB_MEM { 721610e230b6Smaya uint32_t DWordLength; 721710e230b6Smaya uint32_t MICommandOpcode; 721810e230b6Smaya uint32_t CommandType; 721910e230b6Smaya uint32_t URBAddress; 722010e230b6Smaya __gen_address_type MemoryAddress; 722110e230b6Smaya}; 722210e230b6Smaya 722310e230b6Smayastatic inline void 722410e230b6SmayaGEN75_MI_STORE_URB_MEM_pack(__attribute__((unused)) __gen_user_data *data, 722510e230b6Smaya __attribute__((unused)) void * restrict dst, 722610e230b6Smaya __attribute__((unused)) const struct GEN75_MI_STORE_URB_MEM * restrict values) 722710e230b6Smaya{ 722810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 722910e230b6Smaya 723010e230b6Smaya dw[0] = 723110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 723210e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 723310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 723410e230b6Smaya 723510e230b6Smaya dw[1] = 723610e230b6Smaya __gen_uint(values->URBAddress, 2, 14); 723710e230b6Smaya 723810e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->MemoryAddress, 0); 723910e230b6Smaya} 724010e230b6Smaya 724110e230b6Smaya#define GEN75_MI_SUSPEND_FLUSH_length 1 724210e230b6Smaya#define GEN75_MI_SUSPEND_FLUSH_length_bias 1 724310e230b6Smaya#define GEN75_MI_SUSPEND_FLUSH_header \ 724410e230b6Smaya .MICommandOpcode = 11, \ 724510e230b6Smaya .CommandType = 0 724610e230b6Smaya 724710e230b6Smayastruct GEN75_MI_SUSPEND_FLUSH { 724810e230b6Smaya bool SuspendFlush; 724910e230b6Smaya uint32_t MICommandOpcode; 725010e230b6Smaya uint32_t CommandType; 725110e230b6Smaya}; 725210e230b6Smaya 725310e230b6Smayastatic inline void 725410e230b6SmayaGEN75_MI_SUSPEND_FLUSH_pack(__attribute__((unused)) __gen_user_data *data, 725510e230b6Smaya __attribute__((unused)) void * restrict dst, 725610e230b6Smaya __attribute__((unused)) const struct GEN75_MI_SUSPEND_FLUSH * restrict values) 725710e230b6Smaya{ 725810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 725910e230b6Smaya 726010e230b6Smaya dw[0] = 726110e230b6Smaya __gen_uint(values->SuspendFlush, 0, 0) | 726210e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 726310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 726410e230b6Smaya} 726510e230b6Smaya 726610e230b6Smaya#define GEN75_MI_TOPOLOGY_FILTER_length 1 726710e230b6Smaya#define GEN75_MI_TOPOLOGY_FILTER_length_bias 1 726810e230b6Smaya#define GEN75_MI_TOPOLOGY_FILTER_header \ 726910e230b6Smaya .MICommandOpcode = 13, \ 727010e230b6Smaya .CommandType = 0 727110e230b6Smaya 727210e230b6Smayastruct GEN75_MI_TOPOLOGY_FILTER { 727310e230b6Smaya enum GEN75_3D_Prim_Topo_Type TopologyFilterValue; 727410e230b6Smaya uint32_t MICommandOpcode; 727510e230b6Smaya uint32_t CommandType; 727610e230b6Smaya}; 727710e230b6Smaya 727810e230b6Smayastatic inline void 727910e230b6SmayaGEN75_MI_TOPOLOGY_FILTER_pack(__attribute__((unused)) __gen_user_data *data, 728010e230b6Smaya __attribute__((unused)) void * restrict dst, 728110e230b6Smaya __attribute__((unused)) const struct GEN75_MI_TOPOLOGY_FILTER * restrict values) 728210e230b6Smaya{ 728310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 728410e230b6Smaya 728510e230b6Smaya dw[0] = 728610e230b6Smaya __gen_uint(values->TopologyFilterValue, 0, 5) | 728710e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 728810e230b6Smaya __gen_uint(values->CommandType, 29, 31); 728910e230b6Smaya} 729010e230b6Smaya 729110e230b6Smaya#define GEN75_MI_URB_ATOMIC_ALLOC_length 1 729210e230b6Smaya#define GEN75_MI_URB_ATOMIC_ALLOC_length_bias 1 729310e230b6Smaya#define GEN75_MI_URB_ATOMIC_ALLOC_header \ 729410e230b6Smaya .MICommandOpcode = 9, \ 729510e230b6Smaya .CommandType = 0 729610e230b6Smaya 729710e230b6Smayastruct GEN75_MI_URB_ATOMIC_ALLOC { 729810e230b6Smaya uint32_t URBAtomicStorageSize; 729910e230b6Smaya uint32_t URBAtomicStorageOffset; 730010e230b6Smaya uint32_t MICommandOpcode; 730110e230b6Smaya uint32_t CommandType; 730210e230b6Smaya}; 730310e230b6Smaya 730410e230b6Smayastatic inline void 730510e230b6SmayaGEN75_MI_URB_ATOMIC_ALLOC_pack(__attribute__((unused)) __gen_user_data *data, 730610e230b6Smaya __attribute__((unused)) void * restrict dst, 730710e230b6Smaya __attribute__((unused)) const struct GEN75_MI_URB_ATOMIC_ALLOC * restrict values) 730810e230b6Smaya{ 730910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 731010e230b6Smaya 731110e230b6Smaya dw[0] = 731210e230b6Smaya __gen_uint(values->URBAtomicStorageSize, 0, 8) | 731310e230b6Smaya __gen_uint(values->URBAtomicStorageOffset, 12, 19) | 731410e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 731510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 731610e230b6Smaya} 731710e230b6Smaya 731810e230b6Smaya#define GEN75_MI_URB_CLEAR_length 2 731910e230b6Smaya#define GEN75_MI_URB_CLEAR_length_bias 2 732010e230b6Smaya#define GEN75_MI_URB_CLEAR_header \ 732110e230b6Smaya .DWordLength = 0, \ 732210e230b6Smaya .MICommandOpcode = 25, \ 732310e230b6Smaya .CommandType = 0 732410e230b6Smaya 732510e230b6Smayastruct GEN75_MI_URB_CLEAR { 732610e230b6Smaya uint32_t DWordLength; 732710e230b6Smaya uint32_t MICommandOpcode; 732810e230b6Smaya uint32_t CommandType; 732910e230b6Smaya uint64_t URBAddress; 733010e230b6Smaya uint32_t URBClearLength; 733110e230b6Smaya}; 733210e230b6Smaya 733310e230b6Smayastatic inline void 733410e230b6SmayaGEN75_MI_URB_CLEAR_pack(__attribute__((unused)) __gen_user_data *data, 733510e230b6Smaya __attribute__((unused)) void * restrict dst, 733610e230b6Smaya __attribute__((unused)) const struct GEN75_MI_URB_CLEAR * restrict values) 733710e230b6Smaya{ 733810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 733910e230b6Smaya 734010e230b6Smaya dw[0] = 734110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 734210e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 734310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 734410e230b6Smaya 734510e230b6Smaya dw[1] = 734610e230b6Smaya __gen_offset(values->URBAddress, 0, 14) | 734710e230b6Smaya __gen_uint(values->URBClearLength, 16, 29); 734810e230b6Smaya} 734910e230b6Smaya 735010e230b6Smaya#define GEN75_MI_USER_INTERRUPT_length 1 735110e230b6Smaya#define GEN75_MI_USER_INTERRUPT_length_bias 1 735210e230b6Smaya#define GEN75_MI_USER_INTERRUPT_header \ 735310e230b6Smaya .MICommandOpcode = 2, \ 735410e230b6Smaya .CommandType = 0 735510e230b6Smaya 735610e230b6Smayastruct GEN75_MI_USER_INTERRUPT { 735710e230b6Smaya uint32_t MICommandOpcode; 735810e230b6Smaya uint32_t CommandType; 735910e230b6Smaya}; 736010e230b6Smaya 736110e230b6Smayastatic inline void 736210e230b6SmayaGEN75_MI_USER_INTERRUPT_pack(__attribute__((unused)) __gen_user_data *data, 736310e230b6Smaya __attribute__((unused)) void * restrict dst, 736410e230b6Smaya __attribute__((unused)) const struct GEN75_MI_USER_INTERRUPT * restrict values) 736510e230b6Smaya{ 736610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 736710e230b6Smaya 736810e230b6Smaya dw[0] = 736910e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 737010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 737110e230b6Smaya} 737210e230b6Smaya 737310e230b6Smaya#define GEN75_MI_WAIT_FOR_EVENT_length 1 737410e230b6Smaya#define GEN75_MI_WAIT_FOR_EVENT_length_bias 1 737510e230b6Smaya#define GEN75_MI_WAIT_FOR_EVENT_header \ 737610e230b6Smaya .MICommandOpcode = 3, \ 737710e230b6Smaya .CommandType = 0 737810e230b6Smaya 737910e230b6Smayastruct GEN75_MI_WAIT_FOR_EVENT { 738010e230b6Smaya bool DisplayPipeAScanLineWaitEnable; 738110e230b6Smaya bool DisplayPlaneAFlipPendingWaitEnable; 738210e230b6Smaya bool DisplaySpriteAFlipPendingWaitEnable; 738310e230b6Smaya bool DisplayPipeAVerticalBlankWaitEnable; 738410e230b6Smaya bool DisplayPipeAHorizontalBlankWaitEnable; 738510e230b6Smaya bool DisplayPipeBScanLineWaitEnable; 738610e230b6Smaya bool DisplayPlaneBFlipPendingWaitEnable; 738710e230b6Smaya bool DisplaySpriteBFlipPendingWaitEnable; 738810e230b6Smaya bool DisplayPipeBVerticalBlankWaitEnable; 738910e230b6Smaya bool DisplayPipeBHorizontalBlankWaitEnable; 739010e230b6Smaya bool DisplayPipeCScanLineWaitEnable; 739110e230b6Smaya bool DisplayPlaneCFlipPendingWaitEnable; 739210e230b6Smaya uint32_t ConditionCodeWaitSelect; 739310e230b6Smaya#define Notenabled 0 739410e230b6Smaya bool DisplaySpriteCFlipPendingWaitEnable; 739510e230b6Smaya bool DisplayPipeCVerticalBlankWaitEnable; 739610e230b6Smaya bool DisplayPipeCHorizontalBlankWaitEnable; 739710e230b6Smaya uint32_t MICommandOpcode; 739810e230b6Smaya uint32_t CommandType; 739910e230b6Smaya}; 740010e230b6Smaya 740110e230b6Smayastatic inline void 740210e230b6SmayaGEN75_MI_WAIT_FOR_EVENT_pack(__attribute__((unused)) __gen_user_data *data, 740310e230b6Smaya __attribute__((unused)) void * restrict dst, 740410e230b6Smaya __attribute__((unused)) const struct GEN75_MI_WAIT_FOR_EVENT * restrict values) 740510e230b6Smaya{ 740610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 740710e230b6Smaya 740810e230b6Smaya dw[0] = 740910e230b6Smaya __gen_uint(values->DisplayPipeAScanLineWaitEnable, 0, 0) | 741010e230b6Smaya __gen_uint(values->DisplayPlaneAFlipPendingWaitEnable, 1, 1) | 741110e230b6Smaya __gen_uint(values->DisplaySpriteAFlipPendingWaitEnable, 2, 2) | 741210e230b6Smaya __gen_uint(values->DisplayPipeAVerticalBlankWaitEnable, 3, 3) | 741310e230b6Smaya __gen_uint(values->DisplayPipeAHorizontalBlankWaitEnable, 5, 5) | 741410e230b6Smaya __gen_uint(values->DisplayPipeBScanLineWaitEnable, 8, 8) | 741510e230b6Smaya __gen_uint(values->DisplayPlaneBFlipPendingWaitEnable, 9, 9) | 741610e230b6Smaya __gen_uint(values->DisplaySpriteBFlipPendingWaitEnable, 10, 10) | 741710e230b6Smaya __gen_uint(values->DisplayPipeBVerticalBlankWaitEnable, 11, 11) | 741810e230b6Smaya __gen_uint(values->DisplayPipeBHorizontalBlankWaitEnable, 13, 13) | 741910e230b6Smaya __gen_uint(values->DisplayPipeCScanLineWaitEnable, 14, 14) | 742010e230b6Smaya __gen_uint(values->DisplayPlaneCFlipPendingWaitEnable, 15, 15) | 742110e230b6Smaya __gen_uint(values->ConditionCodeWaitSelect, 16, 19) | 742210e230b6Smaya __gen_uint(values->DisplaySpriteCFlipPendingWaitEnable, 20, 20) | 742310e230b6Smaya __gen_uint(values->DisplayPipeCVerticalBlankWaitEnable, 21, 21) | 742410e230b6Smaya __gen_uint(values->DisplayPipeCHorizontalBlankWaitEnable, 22, 22) | 742510e230b6Smaya __gen_uint(values->MICommandOpcode, 23, 28) | 742610e230b6Smaya __gen_uint(values->CommandType, 29, 31); 742710e230b6Smaya} 742810e230b6Smaya 742910e230b6Smaya#define GEN75_PIPELINE_SELECT_length 1 743010e230b6Smaya#define GEN75_PIPELINE_SELECT_length_bias 1 743110e230b6Smaya#define GEN75_PIPELINE_SELECT_header \ 743210e230b6Smaya ._3DCommandSubOpcode = 4, \ 743310e230b6Smaya ._3DCommandOpcode = 1, \ 743410e230b6Smaya .CommandSubType = 1, \ 743510e230b6Smaya .CommandType = 3 743610e230b6Smaya 743710e230b6Smayastruct GEN75_PIPELINE_SELECT { 743810e230b6Smaya uint32_t PipelineSelection; 743910e230b6Smaya#define _3D 0 744010e230b6Smaya#define Media 1 744110e230b6Smaya#define GPGPU 2 744210e230b6Smaya uint32_t _3DCommandSubOpcode; 744310e230b6Smaya uint32_t _3DCommandOpcode; 744410e230b6Smaya uint32_t CommandSubType; 744510e230b6Smaya uint32_t CommandType; 744610e230b6Smaya}; 744710e230b6Smaya 744810e230b6Smayastatic inline void 744910e230b6SmayaGEN75_PIPELINE_SELECT_pack(__attribute__((unused)) __gen_user_data *data, 745010e230b6Smaya __attribute__((unused)) void * restrict dst, 745110e230b6Smaya __attribute__((unused)) const struct GEN75_PIPELINE_SELECT * restrict values) 745210e230b6Smaya{ 745310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 745410e230b6Smaya 745510e230b6Smaya dw[0] = 745610e230b6Smaya __gen_uint(values->PipelineSelection, 0, 1) | 745710e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 745810e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 745910e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 746010e230b6Smaya __gen_uint(values->CommandType, 29, 31); 746110e230b6Smaya} 746210e230b6Smaya 746310e230b6Smaya#define GEN75_PIPE_CONTROL_length 5 746410e230b6Smaya#define GEN75_PIPE_CONTROL_length_bias 2 746510e230b6Smaya#define GEN75_PIPE_CONTROL_header \ 746610e230b6Smaya .DWordLength = 3, \ 746710e230b6Smaya ._3DCommandSubOpcode = 0, \ 746810e230b6Smaya ._3DCommandOpcode = 2, \ 746910e230b6Smaya .CommandSubType = 3, \ 747010e230b6Smaya .CommandType = 3 747110e230b6Smaya 747210e230b6Smayastruct GEN75_PIPE_CONTROL { 747310e230b6Smaya uint32_t DWordLength; 747410e230b6Smaya uint32_t _3DCommandSubOpcode; 747510e230b6Smaya uint32_t _3DCommandOpcode; 747610e230b6Smaya uint32_t CommandSubType; 747710e230b6Smaya uint32_t CommandType; 747810e230b6Smaya bool DepthCacheFlushEnable; 747910e230b6Smaya bool StallAtPixelScoreboard; 748010e230b6Smaya bool StateCacheInvalidationEnable; 748110e230b6Smaya bool ConstantCacheInvalidationEnable; 748210e230b6Smaya bool VFCacheInvalidationEnable; 748310e230b6Smaya bool DCFlushEnable; 748410e230b6Smaya bool PipeControlFlushEnable; 748510e230b6Smaya bool NotifyEnable; 748610e230b6Smaya bool IndirectStatePointersDisable; 748710e230b6Smaya bool TextureCacheInvalidationEnable; 748810e230b6Smaya bool InstructionCacheInvalidateEnable; 748910e230b6Smaya bool RenderTargetCacheFlushEnable; 749010e230b6Smaya bool DepthStallEnable; 749110e230b6Smaya uint32_t PostSyncOperation; 749210e230b6Smaya#define NoWrite 0 749310e230b6Smaya#define WriteImmediateData 1 749410e230b6Smaya#define WritePSDepthCount 2 749510e230b6Smaya#define WriteTimestamp 3 749610e230b6Smaya bool GenericMediaStateClear; 749710e230b6Smaya bool TLBInvalidate; 749810e230b6Smaya bool GlobalSnapshotCountReset; 749910e230b6Smaya bool CommandStreamerStallEnable; 750010e230b6Smaya uint32_t StoreDataIndex; 750110e230b6Smaya uint32_t LRIPostSyncOperation; 750210e230b6Smaya#define NoLRIOperation 0 750310e230b6Smaya#define MMIOWriteImmediateData 1 750410e230b6Smaya uint32_t DestinationAddressType; 750510e230b6Smaya#define DAT_PPGTT 0 750610e230b6Smaya#define DAT_GGTT 1 750710e230b6Smaya __gen_address_type Address; 750810e230b6Smaya uint64_t ImmediateData; 750910e230b6Smaya}; 751010e230b6Smaya 751110e230b6Smayastatic inline void 751210e230b6SmayaGEN75_PIPE_CONTROL_pack(__attribute__((unused)) __gen_user_data *data, 751310e230b6Smaya __attribute__((unused)) void * restrict dst, 751410e230b6Smaya __attribute__((unused)) const struct GEN75_PIPE_CONTROL * restrict values) 751510e230b6Smaya{ 751610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 751710e230b6Smaya 751810e230b6Smaya dw[0] = 751910e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 752010e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 752110e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 752210e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 752310e230b6Smaya __gen_uint(values->CommandType, 29, 31); 752410e230b6Smaya 752510e230b6Smaya dw[1] = 752610e230b6Smaya __gen_uint(values->DepthCacheFlushEnable, 0, 0) | 752710e230b6Smaya __gen_uint(values->StallAtPixelScoreboard, 1, 1) | 752810e230b6Smaya __gen_uint(values->StateCacheInvalidationEnable, 2, 2) | 752910e230b6Smaya __gen_uint(values->ConstantCacheInvalidationEnable, 3, 3) | 753010e230b6Smaya __gen_uint(values->VFCacheInvalidationEnable, 4, 4) | 753110e230b6Smaya __gen_uint(values->DCFlushEnable, 5, 5) | 753210e230b6Smaya __gen_uint(values->PipeControlFlushEnable, 7, 7) | 753310e230b6Smaya __gen_uint(values->NotifyEnable, 8, 8) | 753410e230b6Smaya __gen_uint(values->IndirectStatePointersDisable, 9, 9) | 753510e230b6Smaya __gen_uint(values->TextureCacheInvalidationEnable, 10, 10) | 753610e230b6Smaya __gen_uint(values->InstructionCacheInvalidateEnable, 11, 11) | 753710e230b6Smaya __gen_uint(values->RenderTargetCacheFlushEnable, 12, 12) | 753810e230b6Smaya __gen_uint(values->DepthStallEnable, 13, 13) | 753910e230b6Smaya __gen_uint(values->PostSyncOperation, 14, 15) | 754010e230b6Smaya __gen_uint(values->GenericMediaStateClear, 16, 16) | 754110e230b6Smaya __gen_uint(values->TLBInvalidate, 18, 18) | 754210e230b6Smaya __gen_uint(values->GlobalSnapshotCountReset, 19, 19) | 754310e230b6Smaya __gen_uint(values->CommandStreamerStallEnable, 20, 20) | 754410e230b6Smaya __gen_uint(values->StoreDataIndex, 21, 21) | 754510e230b6Smaya __gen_uint(values->LRIPostSyncOperation, 23, 23) | 754610e230b6Smaya __gen_uint(values->DestinationAddressType, 24, 24); 754710e230b6Smaya 754810e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->Address, 0); 754910e230b6Smaya 755010e230b6Smaya const uint64_t v3 = 755110e230b6Smaya __gen_uint(values->ImmediateData, 0, 63); 755210e230b6Smaya dw[3] = v3; 755310e230b6Smaya dw[4] = v3 >> 32; 755410e230b6Smaya} 755510e230b6Smaya 755610e230b6Smaya#define GEN75_STATE_BASE_ADDRESS_length 10 755710e230b6Smaya#define GEN75_STATE_BASE_ADDRESS_length_bias 2 755810e230b6Smaya#define GEN75_STATE_BASE_ADDRESS_header \ 755910e230b6Smaya .DWordLength = 8, \ 756010e230b6Smaya ._3DCommandSubOpcode = 1, \ 756110e230b6Smaya ._3DCommandOpcode = 1, \ 756210e230b6Smaya .CommandSubType = 0, \ 756310e230b6Smaya .CommandType = 3 756410e230b6Smaya 756510e230b6Smayastruct GEN75_STATE_BASE_ADDRESS { 756610e230b6Smaya uint32_t DWordLength; 756710e230b6Smaya uint32_t _3DCommandSubOpcode; 756810e230b6Smaya uint32_t _3DCommandOpcode; 756910e230b6Smaya uint32_t CommandSubType; 757010e230b6Smaya uint32_t CommandType; 757110e230b6Smaya bool GeneralStateBaseAddressModifyEnable; 757210e230b6Smaya uint32_t StatelessDataPortAccessMOCS; 757310e230b6Smaya uint32_t GeneralStateMOCS; 757410e230b6Smaya __gen_address_type GeneralStateBaseAddress; 757510e230b6Smaya bool SurfaceStateBaseAddressModifyEnable; 757610e230b6Smaya uint32_t SurfaceStateMOCS; 757710e230b6Smaya __gen_address_type SurfaceStateBaseAddress; 757810e230b6Smaya bool DynamicStateBaseAddressModifyEnable; 757910e230b6Smaya uint32_t DynamicStateMOCS; 758010e230b6Smaya __gen_address_type DynamicStateBaseAddress; 758110e230b6Smaya bool IndirectObjectBaseAddressModifyEnable; 758210e230b6Smaya uint32_t IndirectObjectMOCS; 758310e230b6Smaya __gen_address_type IndirectObjectBaseAddress; 758410e230b6Smaya bool InstructionBaseAddressModifyEnable; 758510e230b6Smaya uint32_t InstructionMOCS; 758610e230b6Smaya __gen_address_type InstructionBaseAddress; 758710e230b6Smaya bool GeneralStateAccessUpperBoundModifyEnable; 758810e230b6Smaya __gen_address_type GeneralStateAccessUpperBound; 758910e230b6Smaya bool DynamicStateAccessUpperBoundModifyEnable; 759010e230b6Smaya __gen_address_type DynamicStateAccessUpperBound; 759110e230b6Smaya bool IndirectObjectAccessUpperBoundModifyEnable; 759210e230b6Smaya __gen_address_type IndirectObjectAccessUpperBound; 759310e230b6Smaya bool InstructionAccessUpperBoundModifyEnable; 759410e230b6Smaya __gen_address_type InstructionAccessUpperBound; 759510e230b6Smaya}; 759610e230b6Smaya 759710e230b6Smayastatic inline void 759810e230b6SmayaGEN75_STATE_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data, 759910e230b6Smaya __attribute__((unused)) void * restrict dst, 760010e230b6Smaya __attribute__((unused)) const struct GEN75_STATE_BASE_ADDRESS * restrict values) 760110e230b6Smaya{ 760210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 760310e230b6Smaya 760410e230b6Smaya dw[0] = 760510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 760610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 760710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 760810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 760910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 761010e230b6Smaya 761110e230b6Smaya const uint32_t v1 = 761210e230b6Smaya __gen_uint(values->GeneralStateBaseAddressModifyEnable, 0, 0) | 761310e230b6Smaya __gen_uint(values->StatelessDataPortAccessMOCS, 4, 7) | 761410e230b6Smaya __gen_uint(values->GeneralStateMOCS, 8, 11); 761510e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->GeneralStateBaseAddress, v1); 761610e230b6Smaya 761710e230b6Smaya const uint32_t v2 = 761810e230b6Smaya __gen_uint(values->SurfaceStateBaseAddressModifyEnable, 0, 0) | 761910e230b6Smaya __gen_uint(values->SurfaceStateMOCS, 8, 11); 762010e230b6Smaya dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceStateBaseAddress, v2); 762110e230b6Smaya 762210e230b6Smaya const uint32_t v3 = 762310e230b6Smaya __gen_uint(values->DynamicStateBaseAddressModifyEnable, 0, 0) | 762410e230b6Smaya __gen_uint(values->DynamicStateMOCS, 8, 11); 762510e230b6Smaya dw[3] = __gen_combine_address(data, &dw[3], values->DynamicStateBaseAddress, v3); 762610e230b6Smaya 762710e230b6Smaya const uint32_t v4 = 762810e230b6Smaya __gen_uint(values->IndirectObjectBaseAddressModifyEnable, 0, 0) | 762910e230b6Smaya __gen_uint(values->IndirectObjectMOCS, 8, 11); 763010e230b6Smaya dw[4] = __gen_combine_address(data, &dw[4], values->IndirectObjectBaseAddress, v4); 763110e230b6Smaya 763210e230b6Smaya const uint32_t v5 = 763310e230b6Smaya __gen_uint(values->InstructionBaseAddressModifyEnable, 0, 0) | 763410e230b6Smaya __gen_uint(values->InstructionMOCS, 8, 11); 763510e230b6Smaya dw[5] = __gen_combine_address(data, &dw[5], values->InstructionBaseAddress, v5); 763610e230b6Smaya 763710e230b6Smaya const uint32_t v6 = 763810e230b6Smaya __gen_uint(values->GeneralStateAccessUpperBoundModifyEnable, 0, 0); 763910e230b6Smaya dw[6] = __gen_combine_address(data, &dw[6], values->GeneralStateAccessUpperBound, v6); 764010e230b6Smaya 764110e230b6Smaya const uint32_t v7 = 764210e230b6Smaya __gen_uint(values->DynamicStateAccessUpperBoundModifyEnable, 0, 0); 764310e230b6Smaya dw[7] = __gen_combine_address(data, &dw[7], values->DynamicStateAccessUpperBound, v7); 764410e230b6Smaya 764510e230b6Smaya const uint32_t v8 = 764610e230b6Smaya __gen_uint(values->IndirectObjectAccessUpperBoundModifyEnable, 0, 0); 764710e230b6Smaya dw[8] = __gen_combine_address(data, &dw[8], values->IndirectObjectAccessUpperBound, v8); 764810e230b6Smaya 764910e230b6Smaya const uint32_t v9 = 765010e230b6Smaya __gen_uint(values->InstructionAccessUpperBoundModifyEnable, 0, 0); 765110e230b6Smaya dw[9] = __gen_combine_address(data, &dw[9], values->InstructionAccessUpperBound, v9); 765210e230b6Smaya} 765310e230b6Smaya 765410e230b6Smaya#define GEN75_STATE_PREFETCH_length 2 765510e230b6Smaya#define GEN75_STATE_PREFETCH_length_bias 2 765610e230b6Smaya#define GEN75_STATE_PREFETCH_header \ 765710e230b6Smaya .DWordLength = 0, \ 765810e230b6Smaya ._3DCommandSubOpcode = 3, \ 765910e230b6Smaya ._3DCommandOpcode = 0, \ 766010e230b6Smaya .CommandSubType = 0, \ 766110e230b6Smaya .CommandType = 3 766210e230b6Smaya 766310e230b6Smayastruct GEN75_STATE_PREFETCH { 766410e230b6Smaya uint32_t DWordLength; 766510e230b6Smaya uint32_t _3DCommandSubOpcode; 766610e230b6Smaya uint32_t _3DCommandOpcode; 766710e230b6Smaya uint32_t CommandSubType; 766810e230b6Smaya uint32_t CommandType; 766910e230b6Smaya uint32_t PrefetchCount; 767010e230b6Smaya __gen_address_type PrefetchPointer; 767110e230b6Smaya}; 767210e230b6Smaya 767310e230b6Smayastatic inline void 767410e230b6SmayaGEN75_STATE_PREFETCH_pack(__attribute__((unused)) __gen_user_data *data, 767510e230b6Smaya __attribute__((unused)) void * restrict dst, 767610e230b6Smaya __attribute__((unused)) const struct GEN75_STATE_PREFETCH * restrict values) 767710e230b6Smaya{ 767810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 767910e230b6Smaya 768010e230b6Smaya dw[0] = 768110e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 768210e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 768310e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 768410e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 768510e230b6Smaya __gen_uint(values->CommandType, 29, 31); 768610e230b6Smaya 768710e230b6Smaya const uint32_t v1 = 768810e230b6Smaya __gen_uint(values->PrefetchCount, 0, 2); 768910e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->PrefetchPointer, v1); 769010e230b6Smaya} 769110e230b6Smaya 769210e230b6Smaya#define GEN75_STATE_SIP_length 2 769310e230b6Smaya#define GEN75_STATE_SIP_length_bias 2 769410e230b6Smaya#define GEN75_STATE_SIP_header \ 769510e230b6Smaya .DWordLength = 0, \ 769610e230b6Smaya ._3DCommandSubOpcode = 2, \ 769710e230b6Smaya ._3DCommandOpcode = 1, \ 769810e230b6Smaya .CommandSubType = 0, \ 769910e230b6Smaya .CommandType = 3 770010e230b6Smaya 770110e230b6Smayastruct GEN75_STATE_SIP { 770210e230b6Smaya uint32_t DWordLength; 770310e230b6Smaya uint32_t _3DCommandSubOpcode; 770410e230b6Smaya uint32_t _3DCommandOpcode; 770510e230b6Smaya uint32_t CommandSubType; 770610e230b6Smaya uint32_t CommandType; 770710e230b6Smaya uint64_t SystemInstructionPointer; 770810e230b6Smaya}; 770910e230b6Smaya 771010e230b6Smayastatic inline void 771110e230b6SmayaGEN75_STATE_SIP_pack(__attribute__((unused)) __gen_user_data *data, 771210e230b6Smaya __attribute__((unused)) void * restrict dst, 771310e230b6Smaya __attribute__((unused)) const struct GEN75_STATE_SIP * restrict values) 771410e230b6Smaya{ 771510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 771610e230b6Smaya 771710e230b6Smaya dw[0] = 771810e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 771910e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 772010e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 772110e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 772210e230b6Smaya __gen_uint(values->CommandType, 29, 31); 772310e230b6Smaya 772410e230b6Smaya dw[1] = 772510e230b6Smaya __gen_offset(values->SystemInstructionPointer, 4, 31); 772610e230b6Smaya} 772710e230b6Smaya 772810e230b6Smaya#define GEN75_SWTESS_BASE_ADDRESS_length 2 772910e230b6Smaya#define GEN75_SWTESS_BASE_ADDRESS_length_bias 2 773010e230b6Smaya#define GEN75_SWTESS_BASE_ADDRESS_header \ 773110e230b6Smaya .DWordLength = 0, \ 773210e230b6Smaya ._3DCommandSubOpcode = 3, \ 773310e230b6Smaya ._3DCommandOpcode = 1, \ 773410e230b6Smaya .CommandSubType = 0, \ 773510e230b6Smaya .CommandType = 3 773610e230b6Smaya 773710e230b6Smayastruct GEN75_SWTESS_BASE_ADDRESS { 773810e230b6Smaya uint32_t DWordLength; 773910e230b6Smaya uint32_t _3DCommandSubOpcode; 774010e230b6Smaya uint32_t _3DCommandOpcode; 774110e230b6Smaya uint32_t CommandSubType; 774210e230b6Smaya uint32_t CommandType; 774310e230b6Smaya uint32_t SWTessellationMOCS; 774410e230b6Smaya __gen_address_type SWTessellationBaseAddress; 774510e230b6Smaya}; 774610e230b6Smaya 774710e230b6Smayastatic inline void 774810e230b6SmayaGEN75_SWTESS_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data, 774910e230b6Smaya __attribute__((unused)) void * restrict dst, 775010e230b6Smaya __attribute__((unused)) const struct GEN75_SWTESS_BASE_ADDRESS * restrict values) 775110e230b6Smaya{ 775210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 775310e230b6Smaya 775410e230b6Smaya dw[0] = 775510e230b6Smaya __gen_uint(values->DWordLength, 0, 7) | 775610e230b6Smaya __gen_uint(values->_3DCommandSubOpcode, 16, 23) | 775710e230b6Smaya __gen_uint(values->_3DCommandOpcode, 24, 26) | 775810e230b6Smaya __gen_uint(values->CommandSubType, 27, 28) | 775910e230b6Smaya __gen_uint(values->CommandType, 29, 31); 776010e230b6Smaya 776110e230b6Smaya const uint32_t v1 = 776210e230b6Smaya __gen_uint(values->SWTessellationMOCS, 8, 11); 776310e230b6Smaya dw[1] = __gen_combine_address(data, &dw[1], values->SWTessellationBaseAddress, v1); 776410e230b6Smaya} 776510e230b6Smaya 776610e230b6Smaya#define GEN75_BCS_FAULT_REG_num 0x4294 776710e230b6Smaya#define GEN75_BCS_FAULT_REG_length 1 776810e230b6Smayastruct GEN75_BCS_FAULT_REG { 776910e230b6Smaya bool ValidBit; 777010e230b6Smaya uint32_t FaultType; 777110e230b6Smaya#define PageFault 0 777210e230b6Smaya#define InvalidPDFault 1 777310e230b6Smaya#define UnloadedPDFault 2 777410e230b6Smaya#define InvalidandUnloadedPDfault 3 777510e230b6Smaya uint32_t SRCIDofFault; 777610e230b6Smaya uint32_t GTTSEL; 777710e230b6Smaya#define PPGTT 0 777810e230b6Smaya#define GGTT 1 777910e230b6Smaya __gen_address_type VirtualAddressofFault; 778010e230b6Smaya}; 778110e230b6Smaya 778210e230b6Smayastatic inline void 778310e230b6SmayaGEN75_BCS_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data, 778410e230b6Smaya __attribute__((unused)) void * restrict dst, 778510e230b6Smaya __attribute__((unused)) const struct GEN75_BCS_FAULT_REG * restrict values) 778610e230b6Smaya{ 778710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 778810e230b6Smaya 778910e230b6Smaya const uint32_t v0 = 779010e230b6Smaya __gen_uint(values->ValidBit, 0, 0) | 779110e230b6Smaya __gen_uint(values->FaultType, 1, 2) | 779210e230b6Smaya __gen_uint(values->SRCIDofFault, 3, 10) | 779310e230b6Smaya __gen_uint(values->GTTSEL, 11, 11); 779410e230b6Smaya dw[0] = __gen_combine_address(data, &dw[0], values->VirtualAddressofFault, v0); 779510e230b6Smaya} 779610e230b6Smaya 779710e230b6Smaya#define GEN75_BCS_INSTDONE_num 0x2206c 779810e230b6Smaya#define GEN75_BCS_INSTDONE_length 1 779910e230b6Smayastruct GEN75_BCS_INSTDONE { 780010e230b6Smaya bool RingEnable; 780110e230b6Smaya bool BlitterIDLE; 780210e230b6Smaya bool GABIDLE; 780310e230b6Smaya bool BCSDone; 780410e230b6Smaya}; 780510e230b6Smaya 780610e230b6Smayastatic inline void 780710e230b6SmayaGEN75_BCS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data, 780810e230b6Smaya __attribute__((unused)) void * restrict dst, 780910e230b6Smaya __attribute__((unused)) const struct GEN75_BCS_INSTDONE * restrict values) 781010e230b6Smaya{ 781110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 781210e230b6Smaya 781310e230b6Smaya dw[0] = 781410e230b6Smaya __gen_uint(values->RingEnable, 0, 0) | 781510e230b6Smaya __gen_uint(values->BlitterIDLE, 1, 1) | 781610e230b6Smaya __gen_uint(values->GABIDLE, 2, 2) | 781710e230b6Smaya __gen_uint(values->BCSDone, 3, 3); 781810e230b6Smaya} 781910e230b6Smaya 782010e230b6Smaya#define GEN75_BCS_RING_BUFFER_CTL_num 0x2203c 782110e230b6Smaya#define GEN75_BCS_RING_BUFFER_CTL_length 1 782210e230b6Smayastruct GEN75_BCS_RING_BUFFER_CTL { 782310e230b6Smaya bool RingBufferEnable; 782410e230b6Smaya uint32_t AutomaticReportHeadPointer; 782510e230b6Smaya#define MI_AUTOREPORT_OFF 0 782610e230b6Smaya#define MI_AUTOREPORT_64KB 1 782710e230b6Smaya#define MI_AUTOREPORT_4KB 2 782810e230b6Smaya#define MI_AUTOREPORT_128KB 3 782910e230b6Smaya bool DisableRegisterAccesses; 783010e230b6Smaya bool SemaphoreWait; 783110e230b6Smaya bool RBWait; 783210e230b6Smaya uint32_t BufferLengthinpages1; 783310e230b6Smaya}; 783410e230b6Smaya 783510e230b6Smayastatic inline void 783610e230b6SmayaGEN75_BCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data, 783710e230b6Smaya __attribute__((unused)) void * restrict dst, 783810e230b6Smaya __attribute__((unused)) const struct GEN75_BCS_RING_BUFFER_CTL * restrict values) 783910e230b6Smaya{ 784010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 784110e230b6Smaya 784210e230b6Smaya dw[0] = 784310e230b6Smaya __gen_uint(values->RingBufferEnable, 0, 0) | 784410e230b6Smaya __gen_uint(values->AutomaticReportHeadPointer, 1, 2) | 784510e230b6Smaya __gen_uint(values->DisableRegisterAccesses, 8, 8) | 784610e230b6Smaya __gen_uint(values->SemaphoreWait, 10, 10) | 784710e230b6Smaya __gen_uint(values->RBWait, 11, 11) | 784810e230b6Smaya __gen_uint(values->BufferLengthinpages1, 12, 20); 784910e230b6Smaya} 785010e230b6Smaya 785110e230b6Smaya#define GEN75_CHICKEN3_num 0xe49c 785210e230b6Smaya#define GEN75_CHICKEN3_length 1 785310e230b6Smayastruct GEN75_CHICKEN3 { 785410e230b6Smaya uint32_t L3AtomicDisable; 785510e230b6Smaya uint32_t L3AtomicDisableMask; 785610e230b6Smaya}; 785710e230b6Smaya 785810e230b6Smayastatic inline void 785910e230b6SmayaGEN75_CHICKEN3_pack(__attribute__((unused)) __gen_user_data *data, 786010e230b6Smaya __attribute__((unused)) void * restrict dst, 786110e230b6Smaya __attribute__((unused)) const struct GEN75_CHICKEN3 * restrict values) 786210e230b6Smaya{ 786310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 786410e230b6Smaya 786510e230b6Smaya dw[0] = 786610e230b6Smaya __gen_uint(values->L3AtomicDisable, 6, 6) | 786710e230b6Smaya __gen_uint(values->L3AtomicDisableMask, 22, 22); 786810e230b6Smaya} 786910e230b6Smaya 787010e230b6Smaya#define GEN75_CL_INVOCATION_COUNT_num 0x2338 787110e230b6Smaya#define GEN75_CL_INVOCATION_COUNT_length 2 787210e230b6Smayastruct GEN75_CL_INVOCATION_COUNT { 787310e230b6Smaya uint64_t CLInvocationCountReport; 787410e230b6Smaya}; 787510e230b6Smaya 787610e230b6Smayastatic inline void 787710e230b6SmayaGEN75_CL_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 787810e230b6Smaya __attribute__((unused)) void * restrict dst, 787910e230b6Smaya __attribute__((unused)) const struct GEN75_CL_INVOCATION_COUNT * restrict values) 788010e230b6Smaya{ 788110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 788210e230b6Smaya 788310e230b6Smaya const uint64_t v0 = 788410e230b6Smaya __gen_uint(values->CLInvocationCountReport, 0, 63); 788510e230b6Smaya dw[0] = v0; 788610e230b6Smaya dw[1] = v0 >> 32; 788710e230b6Smaya} 788810e230b6Smaya 788910e230b6Smaya#define GEN75_CL_PRIMITIVES_COUNT_num 0x2340 789010e230b6Smaya#define GEN75_CL_PRIMITIVES_COUNT_length 2 789110e230b6Smayastruct GEN75_CL_PRIMITIVES_COUNT { 789210e230b6Smaya uint64_t CLPrimitivesCountReport; 789310e230b6Smaya}; 789410e230b6Smaya 789510e230b6Smayastatic inline void 789610e230b6SmayaGEN75_CL_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 789710e230b6Smaya __attribute__((unused)) void * restrict dst, 789810e230b6Smaya __attribute__((unused)) const struct GEN75_CL_PRIMITIVES_COUNT * restrict values) 789910e230b6Smaya{ 790010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 790110e230b6Smaya 790210e230b6Smaya const uint64_t v0 = 790310e230b6Smaya __gen_uint(values->CLPrimitivesCountReport, 0, 63); 790410e230b6Smaya dw[0] = v0; 790510e230b6Smaya dw[1] = v0 >> 32; 790610e230b6Smaya} 790710e230b6Smaya 790810e230b6Smaya#define GEN75_CS_INVOCATION_COUNT_num 0x2290 790910e230b6Smaya#define GEN75_CS_INVOCATION_COUNT_length 2 791010e230b6Smayastruct GEN75_CS_INVOCATION_COUNT { 791110e230b6Smaya uint64_t CSInvocationCountReport; 791210e230b6Smaya}; 791310e230b6Smaya 791410e230b6Smayastatic inline void 791510e230b6SmayaGEN75_CS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 791610e230b6Smaya __attribute__((unused)) void * restrict dst, 791710e230b6Smaya __attribute__((unused)) const struct GEN75_CS_INVOCATION_COUNT * restrict values) 791810e230b6Smaya{ 791910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 792010e230b6Smaya 792110e230b6Smaya const uint64_t v0 = 792210e230b6Smaya __gen_uint(values->CSInvocationCountReport, 0, 63); 792310e230b6Smaya dw[0] = v0; 792410e230b6Smaya dw[1] = v0 >> 32; 792510e230b6Smaya} 792610e230b6Smaya 792710e230b6Smaya#define GEN75_DS_INVOCATION_COUNT_num 0x2308 792810e230b6Smaya#define GEN75_DS_INVOCATION_COUNT_length 2 792910e230b6Smayastruct GEN75_DS_INVOCATION_COUNT { 793010e230b6Smaya uint64_t DSInvocationCountReport; 793110e230b6Smaya}; 793210e230b6Smaya 793310e230b6Smayastatic inline void 793410e230b6SmayaGEN75_DS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 793510e230b6Smaya __attribute__((unused)) void * restrict dst, 793610e230b6Smaya __attribute__((unused)) const struct GEN75_DS_INVOCATION_COUNT * restrict values) 793710e230b6Smaya{ 793810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 793910e230b6Smaya 794010e230b6Smaya const uint64_t v0 = 794110e230b6Smaya __gen_uint(values->DSInvocationCountReport, 0, 63); 794210e230b6Smaya dw[0] = v0; 794310e230b6Smaya dw[1] = v0 >> 32; 794410e230b6Smaya} 794510e230b6Smaya 794610e230b6Smaya#define GEN75_ERR_INT_num 0x44040 794710e230b6Smaya#define GEN75_ERR_INT_length 1 794810e230b6Smayastruct GEN75_ERR_INT { 794910e230b6Smaya bool PrimaryAGTTFaultStatus; 795010e230b6Smaya bool PrimaryBGTTFaultStatus; 795110e230b6Smaya bool SpriteAGTTFaultStatus; 795210e230b6Smaya bool SpriteBGTTFaultStatus; 795310e230b6Smaya bool CursorAGTTFaultStatus; 795410e230b6Smaya bool CursorBGTTFaultStatus; 795510e230b6Smaya bool Invalidpagetableentrydata; 795610e230b6Smaya bool InvalidGTTpagetableentry; 795710e230b6Smaya}; 795810e230b6Smaya 795910e230b6Smayastatic inline void 796010e230b6SmayaGEN75_ERR_INT_pack(__attribute__((unused)) __gen_user_data *data, 796110e230b6Smaya __attribute__((unused)) void * restrict dst, 796210e230b6Smaya __attribute__((unused)) const struct GEN75_ERR_INT * restrict values) 796310e230b6Smaya{ 796410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 796510e230b6Smaya 796610e230b6Smaya dw[0] = 796710e230b6Smaya __gen_uint(values->PrimaryAGTTFaultStatus, 0, 0) | 796810e230b6Smaya __gen_uint(values->PrimaryBGTTFaultStatus, 1, 1) | 796910e230b6Smaya __gen_uint(values->SpriteAGTTFaultStatus, 2, 2) | 797010e230b6Smaya __gen_uint(values->SpriteBGTTFaultStatus, 3, 3) | 797110e230b6Smaya __gen_uint(values->CursorAGTTFaultStatus, 4, 4) | 797210e230b6Smaya __gen_uint(values->CursorBGTTFaultStatus, 5, 5) | 797310e230b6Smaya __gen_uint(values->Invalidpagetableentrydata, 6, 6) | 797410e230b6Smaya __gen_uint(values->InvalidGTTpagetableentry, 7, 7); 797510e230b6Smaya} 797610e230b6Smaya 797710e230b6Smaya#define GEN75_GFX_ARB_ERROR_RPT_num 0x40a0 797810e230b6Smaya#define GEN75_GFX_ARB_ERROR_RPT_length 1 797910e230b6Smayastruct GEN75_GFX_ARB_ERROR_RPT { 798010e230b6Smaya bool TLBPageFaultError; 798110e230b6Smaya bool ContextPageFaultError; 798210e230b6Smaya bool InvalidPageDirectoryentryerror; 798310e230b6Smaya bool HardwareStatusPageFaultError; 798410e230b6Smaya bool TLBPageVTDTranslationError; 798510e230b6Smaya bool ContextPageVTDTranslationError; 798610e230b6Smaya bool PageDirectoryEntryVTDTranslationError; 798710e230b6Smaya bool HardwareStatusPageVTDTranslationError; 798810e230b6Smaya bool UnloadedPDError; 798910e230b6Smaya uint32_t PendingPageFaults; 799010e230b6Smaya}; 799110e230b6Smaya 799210e230b6Smayastatic inline void 799310e230b6SmayaGEN75_GFX_ARB_ERROR_RPT_pack(__attribute__((unused)) __gen_user_data *data, 799410e230b6Smaya __attribute__((unused)) void * restrict dst, 799510e230b6Smaya __attribute__((unused)) const struct GEN75_GFX_ARB_ERROR_RPT * restrict values) 799610e230b6Smaya{ 799710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 799810e230b6Smaya 799910e230b6Smaya dw[0] = 800010e230b6Smaya __gen_uint(values->TLBPageFaultError, 0, 0) | 800110e230b6Smaya __gen_uint(values->ContextPageFaultError, 1, 1) | 800210e230b6Smaya __gen_uint(values->InvalidPageDirectoryentryerror, 2, 2) | 800310e230b6Smaya __gen_uint(values->HardwareStatusPageFaultError, 3, 3) | 800410e230b6Smaya __gen_uint(values->TLBPageVTDTranslationError, 4, 4) | 800510e230b6Smaya __gen_uint(values->ContextPageVTDTranslationError, 5, 5) | 800610e230b6Smaya __gen_uint(values->PageDirectoryEntryVTDTranslationError, 6, 6) | 800710e230b6Smaya __gen_uint(values->HardwareStatusPageVTDTranslationError, 7, 7) | 800810e230b6Smaya __gen_uint(values->UnloadedPDError, 8, 8) | 800910e230b6Smaya __gen_uint(values->PendingPageFaults, 9, 15); 801010e230b6Smaya} 801110e230b6Smaya 801210e230b6Smaya#define GEN75_GS_INVOCATION_COUNT_num 0x2328 801310e230b6Smaya#define GEN75_GS_INVOCATION_COUNT_length 2 801410e230b6Smayastruct GEN75_GS_INVOCATION_COUNT { 801510e230b6Smaya uint64_t GSInvocationCountReport; 801610e230b6Smaya}; 801710e230b6Smaya 801810e230b6Smayastatic inline void 801910e230b6SmayaGEN75_GS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 802010e230b6Smaya __attribute__((unused)) void * restrict dst, 802110e230b6Smaya __attribute__((unused)) const struct GEN75_GS_INVOCATION_COUNT * restrict values) 802210e230b6Smaya{ 802310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 802410e230b6Smaya 802510e230b6Smaya const uint64_t v0 = 802610e230b6Smaya __gen_uint(values->GSInvocationCountReport, 0, 63); 802710e230b6Smaya dw[0] = v0; 802810e230b6Smaya dw[1] = v0 >> 32; 802910e230b6Smaya} 803010e230b6Smaya 803110e230b6Smaya#define GEN75_GS_PRIMITIVES_COUNT_num 0x2330 803210e230b6Smaya#define GEN75_GS_PRIMITIVES_COUNT_length 2 803310e230b6Smayastruct GEN75_GS_PRIMITIVES_COUNT { 803410e230b6Smaya uint64_t GSPrimitivesCountReport; 803510e230b6Smaya}; 803610e230b6Smaya 803710e230b6Smayastatic inline void 803810e230b6SmayaGEN75_GS_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 803910e230b6Smaya __attribute__((unused)) void * restrict dst, 804010e230b6Smaya __attribute__((unused)) const struct GEN75_GS_PRIMITIVES_COUNT * restrict values) 804110e230b6Smaya{ 804210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 804310e230b6Smaya 804410e230b6Smaya const uint64_t v0 = 804510e230b6Smaya __gen_uint(values->GSPrimitivesCountReport, 0, 63); 804610e230b6Smaya dw[0] = v0; 804710e230b6Smaya dw[1] = v0 >> 32; 804810e230b6Smaya} 804910e230b6Smaya 805010e230b6Smaya#define GEN75_HS_INVOCATION_COUNT_num 0x2300 805110e230b6Smaya#define GEN75_HS_INVOCATION_COUNT_length 2 805210e230b6Smayastruct GEN75_HS_INVOCATION_COUNT { 805310e230b6Smaya uint64_t HSInvocationCountReport; 805410e230b6Smaya}; 805510e230b6Smaya 805610e230b6Smayastatic inline void 805710e230b6SmayaGEN75_HS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 805810e230b6Smaya __attribute__((unused)) void * restrict dst, 805910e230b6Smaya __attribute__((unused)) const struct GEN75_HS_INVOCATION_COUNT * restrict values) 806010e230b6Smaya{ 806110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 806210e230b6Smaya 806310e230b6Smaya const uint64_t v0 = 806410e230b6Smaya __gen_uint(values->HSInvocationCountReport, 0, 63); 806510e230b6Smaya dw[0] = v0; 806610e230b6Smaya dw[1] = v0 >> 32; 806710e230b6Smaya} 806810e230b6Smaya 806910e230b6Smaya#define GEN75_IA_PRIMITIVES_COUNT_num 0x2318 807010e230b6Smaya#define GEN75_IA_PRIMITIVES_COUNT_length 2 807110e230b6Smayastruct GEN75_IA_PRIMITIVES_COUNT { 807210e230b6Smaya uint64_t IAPrimitivesCountReport; 807310e230b6Smaya}; 807410e230b6Smaya 807510e230b6Smayastatic inline void 807610e230b6SmayaGEN75_IA_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 807710e230b6Smaya __attribute__((unused)) void * restrict dst, 807810e230b6Smaya __attribute__((unused)) const struct GEN75_IA_PRIMITIVES_COUNT * restrict values) 807910e230b6Smaya{ 808010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 808110e230b6Smaya 808210e230b6Smaya const uint64_t v0 = 808310e230b6Smaya __gen_uint(values->IAPrimitivesCountReport, 0, 63); 808410e230b6Smaya dw[0] = v0; 808510e230b6Smaya dw[1] = v0 >> 32; 808610e230b6Smaya} 808710e230b6Smaya 808810e230b6Smaya#define GEN75_IA_VERTICES_COUNT_num 0x2310 808910e230b6Smaya#define GEN75_IA_VERTICES_COUNT_length 2 809010e230b6Smayastruct GEN75_IA_VERTICES_COUNT { 809110e230b6Smaya uint64_t IAVerticesCountReport; 809210e230b6Smaya}; 809310e230b6Smaya 809410e230b6Smayastatic inline void 809510e230b6SmayaGEN75_IA_VERTICES_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 809610e230b6Smaya __attribute__((unused)) void * restrict dst, 809710e230b6Smaya __attribute__((unused)) const struct GEN75_IA_VERTICES_COUNT * restrict values) 809810e230b6Smaya{ 809910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 810010e230b6Smaya 810110e230b6Smaya const uint64_t v0 = 810210e230b6Smaya __gen_uint(values->IAVerticesCountReport, 0, 63); 810310e230b6Smaya dw[0] = v0; 810410e230b6Smaya dw[1] = v0 >> 32; 810510e230b6Smaya} 810610e230b6Smaya 810710e230b6Smaya#define GEN75_INSTDONE_1_num 0x206c 810810e230b6Smaya#define GEN75_INSTDONE_1_length 1 810910e230b6Smayastruct GEN75_INSTDONE_1 { 811010e230b6Smaya bool PRB0RingEnable; 811110e230b6Smaya bool VFGDone; 811210e230b6Smaya bool VSDone; 811310e230b6Smaya bool HSDone; 811410e230b6Smaya bool TEDone; 811510e230b6Smaya bool DSDone; 811610e230b6Smaya bool GSDone; 811710e230b6Smaya bool SOLDone; 811810e230b6Smaya bool CLDone; 811910e230b6Smaya bool SFDone; 812010e230b6Smaya bool TDGDone; 812110e230b6Smaya bool URBMDone; 812210e230b6Smaya bool SVGDone; 812310e230b6Smaya bool GAFSDone; 812410e230b6Smaya bool VFEDone; 812510e230b6Smaya bool TSGDone; 812610e230b6Smaya bool GAFMDone; 812710e230b6Smaya bool GAMDone; 812810e230b6Smaya bool RSDone; 812910e230b6Smaya bool CSDone; 813010e230b6Smaya bool SDEDone; 813110e230b6Smaya bool RCCFBCCSDone; 813210e230b6Smaya}; 813310e230b6Smaya 813410e230b6Smayastatic inline void 813510e230b6SmayaGEN75_INSTDONE_1_pack(__attribute__((unused)) __gen_user_data *data, 813610e230b6Smaya __attribute__((unused)) void * restrict dst, 813710e230b6Smaya __attribute__((unused)) const struct GEN75_INSTDONE_1 * restrict values) 813810e230b6Smaya{ 813910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 814010e230b6Smaya 814110e230b6Smaya dw[0] = 814210e230b6Smaya __gen_uint(values->PRB0RingEnable, 0, 0) | 814310e230b6Smaya __gen_uint(values->VFGDone, 1, 1) | 814410e230b6Smaya __gen_uint(values->VSDone, 2, 2) | 814510e230b6Smaya __gen_uint(values->HSDone, 3, 3) | 814610e230b6Smaya __gen_uint(values->TEDone, 4, 4) | 814710e230b6Smaya __gen_uint(values->DSDone, 5, 5) | 814810e230b6Smaya __gen_uint(values->GSDone, 6, 6) | 814910e230b6Smaya __gen_uint(values->SOLDone, 7, 7) | 815010e230b6Smaya __gen_uint(values->CLDone, 8, 8) | 815110e230b6Smaya __gen_uint(values->SFDone, 9, 9) | 815210e230b6Smaya __gen_uint(values->TDGDone, 12, 12) | 815310e230b6Smaya __gen_uint(values->URBMDone, 13, 13) | 815410e230b6Smaya __gen_uint(values->SVGDone, 14, 14) | 815510e230b6Smaya __gen_uint(values->GAFSDone, 15, 15) | 815610e230b6Smaya __gen_uint(values->VFEDone, 16, 16) | 815710e230b6Smaya __gen_uint(values->TSGDone, 17, 17) | 815810e230b6Smaya __gen_uint(values->GAFMDone, 18, 18) | 815910e230b6Smaya __gen_uint(values->GAMDone, 19, 19) | 816010e230b6Smaya __gen_uint(values->RSDone, 20, 20) | 816110e230b6Smaya __gen_uint(values->CSDone, 21, 21) | 816210e230b6Smaya __gen_uint(values->SDEDone, 22, 22) | 816310e230b6Smaya __gen_uint(values->RCCFBCCSDone, 23, 23); 816410e230b6Smaya} 816510e230b6Smaya 816610e230b6Smaya#define GEN75_INSTPM_num 0x20c0 816710e230b6Smaya#define GEN75_INSTPM_length 1 816810e230b6Smayastruct GEN75_INSTPM { 816910e230b6Smaya bool _3DStateInstructionDisable; 817010e230b6Smaya bool _3DRenderingInstructionDisable; 817110e230b6Smaya bool MediaInstructionDisable; 817210e230b6Smaya bool CONSTANT_BUFFERAddressOffsetDisable; 817310e230b6Smaya bool _3DStateInstructionDisableMask; 817410e230b6Smaya bool _3DRenderingInstructionDisableMask; 817510e230b6Smaya bool MediaInstructionDisableMask; 817610e230b6Smaya bool CONSTANT_BUFFERAddressOffsetDisableMask; 817710e230b6Smaya}; 817810e230b6Smaya 817910e230b6Smayastatic inline void 818010e230b6SmayaGEN75_INSTPM_pack(__attribute__((unused)) __gen_user_data *data, 818110e230b6Smaya __attribute__((unused)) void * restrict dst, 818210e230b6Smaya __attribute__((unused)) const struct GEN75_INSTPM * restrict values) 818310e230b6Smaya{ 818410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 818510e230b6Smaya 818610e230b6Smaya dw[0] = 818710e230b6Smaya __gen_uint(values->_3DStateInstructionDisable, 1, 1) | 818810e230b6Smaya __gen_uint(values->_3DRenderingInstructionDisable, 2, 2) | 818910e230b6Smaya __gen_uint(values->MediaInstructionDisable, 3, 3) | 819010e230b6Smaya __gen_uint(values->CONSTANT_BUFFERAddressOffsetDisable, 6, 6) | 819110e230b6Smaya __gen_uint(values->_3DStateInstructionDisableMask, 17, 17) | 819210e230b6Smaya __gen_uint(values->_3DRenderingInstructionDisableMask, 18, 18) | 819310e230b6Smaya __gen_uint(values->MediaInstructionDisableMask, 19, 19) | 819410e230b6Smaya __gen_uint(values->CONSTANT_BUFFERAddressOffsetDisableMask, 22, 22); 819510e230b6Smaya} 819610e230b6Smaya 819710e230b6Smaya#define GEN75_L3CNTLREG2_num 0xb020 819810e230b6Smaya#define GEN75_L3CNTLREG2_length 1 819910e230b6Smayastruct GEN75_L3CNTLREG2 { 820010e230b6Smaya uint32_t SLMEnable; 820110e230b6Smaya uint32_t URBAllocation; 820210e230b6Smaya uint32_t URBLowBandwidth; 820310e230b6Smaya uint32_t ROAllocation; 820410e230b6Smaya uint32_t ROLowBandwidth; 820510e230b6Smaya uint32_t DCAllocation; 820610e230b6Smaya uint32_t DCLowBandwidth; 820710e230b6Smaya}; 820810e230b6Smaya 820910e230b6Smayastatic inline void 821010e230b6SmayaGEN75_L3CNTLREG2_pack(__attribute__((unused)) __gen_user_data *data, 821110e230b6Smaya __attribute__((unused)) void * restrict dst, 821210e230b6Smaya __attribute__((unused)) const struct GEN75_L3CNTLREG2 * restrict values) 821310e230b6Smaya{ 821410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 821510e230b6Smaya 821610e230b6Smaya dw[0] = 821710e230b6Smaya __gen_uint(values->SLMEnable, 0, 0) | 821810e230b6Smaya __gen_uint(values->URBAllocation, 1, 6) | 821910e230b6Smaya __gen_uint(values->URBLowBandwidth, 7, 7) | 822010e230b6Smaya __gen_uint(values->ROAllocation, 14, 19) | 822110e230b6Smaya __gen_uint(values->ROLowBandwidth, 20, 20) | 822210e230b6Smaya __gen_uint(values->DCAllocation, 21, 26) | 822310e230b6Smaya __gen_uint(values->DCLowBandwidth, 27, 27); 822410e230b6Smaya} 822510e230b6Smaya 822610e230b6Smaya#define GEN75_L3CNTLREG3_num 0xb024 822710e230b6Smaya#define GEN75_L3CNTLREG3_length 1 822810e230b6Smayastruct GEN75_L3CNTLREG3 { 822910e230b6Smaya uint32_t ISAllocation; 823010e230b6Smaya uint32_t ISLowBandwidth; 823110e230b6Smaya uint32_t CAllocation; 823210e230b6Smaya uint32_t CLowBandwidth; 823310e230b6Smaya uint32_t TAllocation; 823410e230b6Smaya uint32_t TLowBandwidth; 823510e230b6Smaya}; 823610e230b6Smaya 823710e230b6Smayastatic inline void 823810e230b6SmayaGEN75_L3CNTLREG3_pack(__attribute__((unused)) __gen_user_data *data, 823910e230b6Smaya __attribute__((unused)) void * restrict dst, 824010e230b6Smaya __attribute__((unused)) const struct GEN75_L3CNTLREG3 * restrict values) 824110e230b6Smaya{ 824210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 824310e230b6Smaya 824410e230b6Smaya dw[0] = 824510e230b6Smaya __gen_uint(values->ISAllocation, 1, 6) | 824610e230b6Smaya __gen_uint(values->ISLowBandwidth, 7, 7) | 824710e230b6Smaya __gen_uint(values->CAllocation, 8, 13) | 824810e230b6Smaya __gen_uint(values->CLowBandwidth, 14, 14) | 824910e230b6Smaya __gen_uint(values->TAllocation, 15, 20) | 825010e230b6Smaya __gen_uint(values->TLowBandwidth, 21, 21); 825110e230b6Smaya} 825210e230b6Smaya 825310e230b6Smaya#define GEN75_L3SQCREG1_num 0xb010 825410e230b6Smaya#define GEN75_L3SQCREG1_length 1 825510e230b6Smayastruct GEN75_L3SQCREG1 { 825610e230b6Smaya uint32_t ConvertDC_UC; 825710e230b6Smaya uint32_t ConvertIS_UC; 825810e230b6Smaya uint32_t ConvertC_UC; 825910e230b6Smaya uint32_t ConvertT_UC; 826010e230b6Smaya}; 826110e230b6Smaya 826210e230b6Smayastatic inline void 826310e230b6SmayaGEN75_L3SQCREG1_pack(__attribute__((unused)) __gen_user_data *data, 826410e230b6Smaya __attribute__((unused)) void * restrict dst, 826510e230b6Smaya __attribute__((unused)) const struct GEN75_L3SQCREG1 * restrict values) 826610e230b6Smaya{ 826710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 826810e230b6Smaya 826910e230b6Smaya dw[0] = 827010e230b6Smaya __gen_uint(values->ConvertDC_UC, 24, 24) | 827110e230b6Smaya __gen_uint(values->ConvertIS_UC, 25, 25) | 827210e230b6Smaya __gen_uint(values->ConvertC_UC, 26, 26) | 827310e230b6Smaya __gen_uint(values->ConvertT_UC, 27, 27); 827410e230b6Smaya} 827510e230b6Smaya 827610e230b6Smaya#define GEN75_PS_INVOCATION_COUNT_num 0x2348 827710e230b6Smaya#define GEN75_PS_INVOCATION_COUNT_length 2 827810e230b6Smayastruct GEN75_PS_INVOCATION_COUNT { 827910e230b6Smaya uint64_t PSInvocationCountReport; 828010e230b6Smaya}; 828110e230b6Smaya 828210e230b6Smayastatic inline void 828310e230b6SmayaGEN75_PS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 828410e230b6Smaya __attribute__((unused)) void * restrict dst, 828510e230b6Smaya __attribute__((unused)) const struct GEN75_PS_INVOCATION_COUNT * restrict values) 828610e230b6Smaya{ 828710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 828810e230b6Smaya 828910e230b6Smaya const uint64_t v0 = 829010e230b6Smaya __gen_uint(values->PSInvocationCountReport, 0, 63); 829110e230b6Smaya dw[0] = v0; 829210e230b6Smaya dw[1] = v0 >> 32; 829310e230b6Smaya} 829410e230b6Smaya 829510e230b6Smaya#define GEN75_RCS_FAULT_REG_num 0x4094 829610e230b6Smaya#define GEN75_RCS_FAULT_REG_length 1 829710e230b6Smayastruct GEN75_RCS_FAULT_REG { 829810e230b6Smaya bool ValidBit; 829910e230b6Smaya uint32_t FaultType; 830010e230b6Smaya#define PageFault 0 830110e230b6Smaya#define InvalidPDFault 1 830210e230b6Smaya#define UnloadedPDFault 2 830310e230b6Smaya#define InvalidandUnloadedPDfault 3 830410e230b6Smaya uint32_t SRCIDofFault; 830510e230b6Smaya uint32_t GTTSEL; 830610e230b6Smaya#define PPGTT 0 830710e230b6Smaya#define GGTT 1 830810e230b6Smaya __gen_address_type VirtualAddressofFault; 830910e230b6Smaya}; 831010e230b6Smaya 831110e230b6Smayastatic inline void 831210e230b6SmayaGEN75_RCS_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data, 831310e230b6Smaya __attribute__((unused)) void * restrict dst, 831410e230b6Smaya __attribute__((unused)) const struct GEN75_RCS_FAULT_REG * restrict values) 831510e230b6Smaya{ 831610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 831710e230b6Smaya 831810e230b6Smaya const uint32_t v0 = 831910e230b6Smaya __gen_uint(values->ValidBit, 0, 0) | 832010e230b6Smaya __gen_uint(values->FaultType, 1, 2) | 832110e230b6Smaya __gen_uint(values->SRCIDofFault, 3, 10) | 832210e230b6Smaya __gen_uint(values->GTTSEL, 11, 11); 832310e230b6Smaya dw[0] = __gen_combine_address(data, &dw[0], values->VirtualAddressofFault, v0); 832410e230b6Smaya} 832510e230b6Smaya 832610e230b6Smaya#define GEN75_RCS_RING_BUFFER_CTL_num 0x203c 832710e230b6Smaya#define GEN75_RCS_RING_BUFFER_CTL_length 1 832810e230b6Smayastruct GEN75_RCS_RING_BUFFER_CTL { 832910e230b6Smaya bool RingBufferEnable; 833010e230b6Smaya uint32_t AutomaticReportHeadPointer; 833110e230b6Smaya#define MI_AUTOREPORT_OFF 0 833210e230b6Smaya#define MI_AUTOREPORT_64KBMI_AUTOREPORT_4KB 1 833310e230b6Smaya#define MI_AUTOREPORT_128KB 3 833410e230b6Smaya bool SemaphoreWait; 833510e230b6Smaya bool RBWait; 833610e230b6Smaya uint32_t BufferLengthinpages1; 833710e230b6Smaya}; 833810e230b6Smaya 833910e230b6Smayastatic inline void 834010e230b6SmayaGEN75_RCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data, 834110e230b6Smaya __attribute__((unused)) void * restrict dst, 834210e230b6Smaya __attribute__((unused)) const struct GEN75_RCS_RING_BUFFER_CTL * restrict values) 834310e230b6Smaya{ 834410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 834510e230b6Smaya 834610e230b6Smaya dw[0] = 834710e230b6Smaya __gen_uint(values->RingBufferEnable, 0, 0) | 834810e230b6Smaya __gen_uint(values->AutomaticReportHeadPointer, 1, 2) | 834910e230b6Smaya __gen_uint(values->SemaphoreWait, 10, 10) | 835010e230b6Smaya __gen_uint(values->RBWait, 11, 11) | 835110e230b6Smaya __gen_uint(values->BufferLengthinpages1, 12, 20); 835210e230b6Smaya} 835310e230b6Smaya 835410e230b6Smaya#define GEN75_ROW_INSTDONE_num 0xe164 835510e230b6Smaya#define GEN75_ROW_INSTDONE_length 1 835610e230b6Smayastruct GEN75_ROW_INSTDONE { 835710e230b6Smaya bool BCDone; 835810e230b6Smaya bool PSDDone; 835910e230b6Smaya bool DCDone; 836010e230b6Smaya bool DAPRDone; 836110e230b6Smaya bool TDLDone; 836210e230b6Smaya bool GWDone; 836310e230b6Smaya bool ICDone; 836410e230b6Smaya bool MA0Done; 836510e230b6Smaya bool EU00DoneSS0; 836610e230b6Smaya bool EU01DoneSS0; 836710e230b6Smaya bool EU02DoneSS0; 836810e230b6Smaya bool EU03DoneSS0; 836910e230b6Smaya bool EU04DoneSS0; 837010e230b6Smaya bool EU10DoneSS0; 837110e230b6Smaya bool EU11DoneSS0; 837210e230b6Smaya bool EU12DoneSS0; 837310e230b6Smaya bool EU13DoneSS0; 837410e230b6Smaya bool EU14DoneSS0; 837510e230b6Smaya bool MA1DoneSS0; 837610e230b6Smaya}; 837710e230b6Smaya 837810e230b6Smayastatic inline void 837910e230b6SmayaGEN75_ROW_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data, 838010e230b6Smaya __attribute__((unused)) void * restrict dst, 838110e230b6Smaya __attribute__((unused)) const struct GEN75_ROW_INSTDONE * restrict values) 838210e230b6Smaya{ 838310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 838410e230b6Smaya 838510e230b6Smaya dw[0] = 838610e230b6Smaya __gen_uint(values->BCDone, 0, 0) | 838710e230b6Smaya __gen_uint(values->PSDDone, 1, 1) | 838810e230b6Smaya __gen_uint(values->DCDone, 2, 2) | 838910e230b6Smaya __gen_uint(values->DAPRDone, 3, 3) | 839010e230b6Smaya __gen_uint(values->TDLDone, 6, 6) | 839110e230b6Smaya __gen_uint(values->GWDone, 8, 8) | 839210e230b6Smaya __gen_uint(values->ICDone, 12, 12) | 839310e230b6Smaya __gen_uint(values->MA0Done, 15, 15) | 839410e230b6Smaya __gen_uint(values->EU00DoneSS0, 16, 16) | 839510e230b6Smaya __gen_uint(values->EU01DoneSS0, 17, 17) | 839610e230b6Smaya __gen_uint(values->EU02DoneSS0, 18, 18) | 839710e230b6Smaya __gen_uint(values->EU03DoneSS0, 19, 19) | 839810e230b6Smaya __gen_uint(values->EU04DoneSS0, 20, 20) | 839910e230b6Smaya __gen_uint(values->EU10DoneSS0, 21, 21) | 840010e230b6Smaya __gen_uint(values->EU11DoneSS0, 22, 22) | 840110e230b6Smaya __gen_uint(values->EU12DoneSS0, 23, 23) | 840210e230b6Smaya __gen_uint(values->EU13DoneSS0, 24, 24) | 840310e230b6Smaya __gen_uint(values->EU14DoneSS0, 25, 25) | 840410e230b6Smaya __gen_uint(values->MA1DoneSS0, 26, 26); 840510e230b6Smaya} 840610e230b6Smaya 840710e230b6Smaya#define GEN75_SAMPLER_INSTDONE_num 0xe160 840810e230b6Smaya#define GEN75_SAMPLER_INSTDONE_length 1 840910e230b6Smayastruct GEN75_SAMPLER_INSTDONE { 841010e230b6Smaya bool IMEDone; 841110e230b6Smaya bool PL0Done; 841210e230b6Smaya bool SO0Done; 841310e230b6Smaya bool DG0Done; 841410e230b6Smaya bool FT0Done; 841510e230b6Smaya bool DM0Done; 841610e230b6Smaya bool SCDone; 841710e230b6Smaya bool FL0Done; 841810e230b6Smaya bool QCDone; 841910e230b6Smaya bool SVSMDone; 842010e230b6Smaya bool SI0Done; 842110e230b6Smaya bool MT0Done; 842210e230b6Smaya bool AVSDone; 842310e230b6Smaya bool IEFDone; 842410e230b6Smaya bool CREDone; 842510e230b6Smaya bool SVSMARB3; 842610e230b6Smaya bool SVSMARB2; 842710e230b6Smaya bool SVSMARB1; 842810e230b6Smaya bool SVSMAdapter; 842910e230b6Smaya bool FT1Done; 843010e230b6Smaya bool DM1Done; 843110e230b6Smaya bool MT1Done; 843210e230b6Smaya}; 843310e230b6Smaya 843410e230b6Smayastatic inline void 843510e230b6SmayaGEN75_SAMPLER_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data, 843610e230b6Smaya __attribute__((unused)) void * restrict dst, 843710e230b6Smaya __attribute__((unused)) const struct GEN75_SAMPLER_INSTDONE * restrict values) 843810e230b6Smaya{ 843910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 844010e230b6Smaya 844110e230b6Smaya dw[0] = 844210e230b6Smaya __gen_uint(values->IMEDone, 0, 0) | 844310e230b6Smaya __gen_uint(values->PL0Done, 1, 1) | 844410e230b6Smaya __gen_uint(values->SO0Done, 2, 2) | 844510e230b6Smaya __gen_uint(values->DG0Done, 3, 3) | 844610e230b6Smaya __gen_uint(values->FT0Done, 4, 4) | 844710e230b6Smaya __gen_uint(values->DM0Done, 5, 5) | 844810e230b6Smaya __gen_uint(values->SCDone, 6, 6) | 844910e230b6Smaya __gen_uint(values->FL0Done, 7, 7) | 845010e230b6Smaya __gen_uint(values->QCDone, 8, 8) | 845110e230b6Smaya __gen_uint(values->SVSMDone, 9, 9) | 845210e230b6Smaya __gen_uint(values->SI0Done, 10, 10) | 845310e230b6Smaya __gen_uint(values->MT0Done, 11, 11) | 845410e230b6Smaya __gen_uint(values->AVSDone, 12, 12) | 845510e230b6Smaya __gen_uint(values->IEFDone, 13, 13) | 845610e230b6Smaya __gen_uint(values->CREDone, 14, 14) | 845710e230b6Smaya __gen_uint(values->SVSMARB3, 15, 15) | 845810e230b6Smaya __gen_uint(values->SVSMARB2, 16, 16) | 845910e230b6Smaya __gen_uint(values->SVSMARB1, 17, 17) | 846010e230b6Smaya __gen_uint(values->SVSMAdapter, 18, 18) | 846110e230b6Smaya __gen_uint(values->FT1Done, 19, 19) | 846210e230b6Smaya __gen_uint(values->DM1Done, 20, 20) | 846310e230b6Smaya __gen_uint(values->MT1Done, 21, 21); 846410e230b6Smaya} 846510e230b6Smaya 846610e230b6Smaya#define GEN75_SCRATCH1_num 0xb038 846710e230b6Smaya#define GEN75_SCRATCH1_length 1 846810e230b6Smayastruct GEN75_SCRATCH1 { 846910e230b6Smaya uint32_t L3AtomicDisable; 847010e230b6Smaya}; 847110e230b6Smaya 847210e230b6Smayastatic inline void 847310e230b6SmayaGEN75_SCRATCH1_pack(__attribute__((unused)) __gen_user_data *data, 847410e230b6Smaya __attribute__((unused)) void * restrict dst, 847510e230b6Smaya __attribute__((unused)) const struct GEN75_SCRATCH1 * restrict values) 847610e230b6Smaya{ 847710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 847810e230b6Smaya 847910e230b6Smaya dw[0] = 848010e230b6Smaya __gen_uint(values->L3AtomicDisable, 27, 27); 848110e230b6Smaya} 848210e230b6Smaya 848310e230b6Smaya#define GEN75_SC_INSTDONE_num 0x7100 848410e230b6Smaya#define GEN75_SC_INSTDONE_length 1 848510e230b6Smayastruct GEN75_SC_INSTDONE { 848610e230b6Smaya bool SVLDone; 848710e230b6Smaya bool WMFEDone; 848810e230b6Smaya bool WMBEDone; 848910e230b6Smaya bool HIZDone; 849010e230b6Smaya bool STCDone; 849110e230b6Smaya bool IZDone; 849210e230b6Smaya bool SBEDone; 849310e230b6Smaya bool RCZDone; 849410e230b6Smaya bool RCCDone; 849510e230b6Smaya bool RCPBEDone; 849610e230b6Smaya bool RCPFEDone; 849710e230b6Smaya bool DAPBDone; 849810e230b6Smaya bool DAPRBEDone; 849910e230b6Smaya bool SARBDone; 850010e230b6Smaya}; 850110e230b6Smaya 850210e230b6Smayastatic inline void 850310e230b6SmayaGEN75_SC_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data, 850410e230b6Smaya __attribute__((unused)) void * restrict dst, 850510e230b6Smaya __attribute__((unused)) const struct GEN75_SC_INSTDONE * restrict values) 850610e230b6Smaya{ 850710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 850810e230b6Smaya 850910e230b6Smaya dw[0] = 851010e230b6Smaya __gen_uint(values->SVLDone, 0, 0) | 851110e230b6Smaya __gen_uint(values->WMFEDone, 1, 1) | 851210e230b6Smaya __gen_uint(values->WMBEDone, 2, 2) | 851310e230b6Smaya __gen_uint(values->HIZDone, 3, 3) | 851410e230b6Smaya __gen_uint(values->STCDone, 4, 4) | 851510e230b6Smaya __gen_uint(values->IZDone, 5, 5) | 851610e230b6Smaya __gen_uint(values->SBEDone, 6, 6) | 851710e230b6Smaya __gen_uint(values->RCZDone, 8, 8) | 851810e230b6Smaya __gen_uint(values->RCCDone, 9, 9) | 851910e230b6Smaya __gen_uint(values->RCPBEDone, 10, 10) | 852010e230b6Smaya __gen_uint(values->RCPFEDone, 11, 11) | 852110e230b6Smaya __gen_uint(values->DAPBDone, 12, 12) | 852210e230b6Smaya __gen_uint(values->DAPRBEDone, 13, 13) | 852310e230b6Smaya __gen_uint(values->SARBDone, 15, 15); 852410e230b6Smaya} 852510e230b6Smaya 852610e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN0_num 0x5200 852710e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN0_length 2 852810e230b6Smayastruct GEN75_SO_NUM_PRIMS_WRITTEN0 { 852910e230b6Smaya uint64_t NumPrimsWrittenCount; 853010e230b6Smaya}; 853110e230b6Smaya 853210e230b6Smayastatic inline void 853310e230b6SmayaGEN75_SO_NUM_PRIMS_WRITTEN0_pack(__attribute__((unused)) __gen_user_data *data, 853410e230b6Smaya __attribute__((unused)) void * restrict dst, 853510e230b6Smaya __attribute__((unused)) const struct GEN75_SO_NUM_PRIMS_WRITTEN0 * restrict values) 853610e230b6Smaya{ 853710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 853810e230b6Smaya 853910e230b6Smaya const uint64_t v0 = 854010e230b6Smaya __gen_uint(values->NumPrimsWrittenCount, 0, 63); 854110e230b6Smaya dw[0] = v0; 854210e230b6Smaya dw[1] = v0 >> 32; 854310e230b6Smaya} 854410e230b6Smaya 854510e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN1_num 0x5208 854610e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN1_length 2 854710e230b6Smayastruct GEN75_SO_NUM_PRIMS_WRITTEN1 { 854810e230b6Smaya uint64_t NumPrimsWrittenCount; 854910e230b6Smaya}; 855010e230b6Smaya 855110e230b6Smayastatic inline void 855210e230b6SmayaGEN75_SO_NUM_PRIMS_WRITTEN1_pack(__attribute__((unused)) __gen_user_data *data, 855310e230b6Smaya __attribute__((unused)) void * restrict dst, 855410e230b6Smaya __attribute__((unused)) const struct GEN75_SO_NUM_PRIMS_WRITTEN1 * restrict values) 855510e230b6Smaya{ 855610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 855710e230b6Smaya 855810e230b6Smaya const uint64_t v0 = 855910e230b6Smaya __gen_uint(values->NumPrimsWrittenCount, 0, 63); 856010e230b6Smaya dw[0] = v0; 856110e230b6Smaya dw[1] = v0 >> 32; 856210e230b6Smaya} 856310e230b6Smaya 856410e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN2_num 0x5210 856510e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN2_length 2 856610e230b6Smayastruct GEN75_SO_NUM_PRIMS_WRITTEN2 { 856710e230b6Smaya uint64_t NumPrimsWrittenCount; 856810e230b6Smaya}; 856910e230b6Smaya 857010e230b6Smayastatic inline void 857110e230b6SmayaGEN75_SO_NUM_PRIMS_WRITTEN2_pack(__attribute__((unused)) __gen_user_data *data, 857210e230b6Smaya __attribute__((unused)) void * restrict dst, 857310e230b6Smaya __attribute__((unused)) const struct GEN75_SO_NUM_PRIMS_WRITTEN2 * restrict values) 857410e230b6Smaya{ 857510e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 857610e230b6Smaya 857710e230b6Smaya const uint64_t v0 = 857810e230b6Smaya __gen_uint(values->NumPrimsWrittenCount, 0, 63); 857910e230b6Smaya dw[0] = v0; 858010e230b6Smaya dw[1] = v0 >> 32; 858110e230b6Smaya} 858210e230b6Smaya 858310e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN3_num 0x5218 858410e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN3_length 2 858510e230b6Smayastruct GEN75_SO_NUM_PRIMS_WRITTEN3 { 858610e230b6Smaya uint64_t NumPrimsWrittenCount; 858710e230b6Smaya}; 858810e230b6Smaya 858910e230b6Smayastatic inline void 859010e230b6SmayaGEN75_SO_NUM_PRIMS_WRITTEN3_pack(__attribute__((unused)) __gen_user_data *data, 859110e230b6Smaya __attribute__((unused)) void * restrict dst, 859210e230b6Smaya __attribute__((unused)) const struct GEN75_SO_NUM_PRIMS_WRITTEN3 * restrict values) 859310e230b6Smaya{ 859410e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 859510e230b6Smaya 859610e230b6Smaya const uint64_t v0 = 859710e230b6Smaya __gen_uint(values->NumPrimsWrittenCount, 0, 63); 859810e230b6Smaya dw[0] = v0; 859910e230b6Smaya dw[1] = v0 >> 32; 860010e230b6Smaya} 860110e230b6Smaya 860210e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED0_num 0x5240 860310e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED0_length 2 860410e230b6Smayastruct GEN75_SO_PRIM_STORAGE_NEEDED0 { 860510e230b6Smaya uint64_t PrimStorageNeededCount; 860610e230b6Smaya}; 860710e230b6Smaya 860810e230b6Smayastatic inline void 860910e230b6SmayaGEN75_SO_PRIM_STORAGE_NEEDED0_pack(__attribute__((unused)) __gen_user_data *data, 861010e230b6Smaya __attribute__((unused)) void * restrict dst, 861110e230b6Smaya __attribute__((unused)) const struct GEN75_SO_PRIM_STORAGE_NEEDED0 * restrict values) 861210e230b6Smaya{ 861310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 861410e230b6Smaya 861510e230b6Smaya const uint64_t v0 = 861610e230b6Smaya __gen_uint(values->PrimStorageNeededCount, 0, 63); 861710e230b6Smaya dw[0] = v0; 861810e230b6Smaya dw[1] = v0 >> 32; 861910e230b6Smaya} 862010e230b6Smaya 862110e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED1_num 0x5248 862210e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED1_length 2 862310e230b6Smayastruct GEN75_SO_PRIM_STORAGE_NEEDED1 { 862410e230b6Smaya uint64_t PrimStorageNeededCount; 862510e230b6Smaya}; 862610e230b6Smaya 862710e230b6Smayastatic inline void 862810e230b6SmayaGEN75_SO_PRIM_STORAGE_NEEDED1_pack(__attribute__((unused)) __gen_user_data *data, 862910e230b6Smaya __attribute__((unused)) void * restrict dst, 863010e230b6Smaya __attribute__((unused)) const struct GEN75_SO_PRIM_STORAGE_NEEDED1 * restrict values) 863110e230b6Smaya{ 863210e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 863310e230b6Smaya 863410e230b6Smaya const uint64_t v0 = 863510e230b6Smaya __gen_uint(values->PrimStorageNeededCount, 0, 63); 863610e230b6Smaya dw[0] = v0; 863710e230b6Smaya dw[1] = v0 >> 32; 863810e230b6Smaya} 863910e230b6Smaya 864010e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED2_num 0x5250 864110e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED2_length 2 864210e230b6Smayastruct GEN75_SO_PRIM_STORAGE_NEEDED2 { 864310e230b6Smaya uint64_t PrimStorageNeededCount; 864410e230b6Smaya}; 864510e230b6Smaya 864610e230b6Smayastatic inline void 864710e230b6SmayaGEN75_SO_PRIM_STORAGE_NEEDED2_pack(__attribute__((unused)) __gen_user_data *data, 864810e230b6Smaya __attribute__((unused)) void * restrict dst, 864910e230b6Smaya __attribute__((unused)) const struct GEN75_SO_PRIM_STORAGE_NEEDED2 * restrict values) 865010e230b6Smaya{ 865110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 865210e230b6Smaya 865310e230b6Smaya const uint64_t v0 = 865410e230b6Smaya __gen_uint(values->PrimStorageNeededCount, 0, 63); 865510e230b6Smaya dw[0] = v0; 865610e230b6Smaya dw[1] = v0 >> 32; 865710e230b6Smaya} 865810e230b6Smaya 865910e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED3_num 0x5258 866010e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED3_length 2 866110e230b6Smayastruct GEN75_SO_PRIM_STORAGE_NEEDED3 { 866210e230b6Smaya uint64_t PrimStorageNeededCount; 866310e230b6Smaya}; 866410e230b6Smaya 866510e230b6Smayastatic inline void 866610e230b6SmayaGEN75_SO_PRIM_STORAGE_NEEDED3_pack(__attribute__((unused)) __gen_user_data *data, 866710e230b6Smaya __attribute__((unused)) void * restrict dst, 866810e230b6Smaya __attribute__((unused)) const struct GEN75_SO_PRIM_STORAGE_NEEDED3 * restrict values) 866910e230b6Smaya{ 867010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 867110e230b6Smaya 867210e230b6Smaya const uint64_t v0 = 867310e230b6Smaya __gen_uint(values->PrimStorageNeededCount, 0, 63); 867410e230b6Smaya dw[0] = v0; 867510e230b6Smaya dw[1] = v0 >> 32; 867610e230b6Smaya} 867710e230b6Smaya 867810e230b6Smaya#define GEN75_SO_WRITE_OFFSET0_num 0x5280 867910e230b6Smaya#define GEN75_SO_WRITE_OFFSET0_length 1 868010e230b6Smayastruct GEN75_SO_WRITE_OFFSET0 { 868110e230b6Smaya uint64_t WriteOffset; 868210e230b6Smaya}; 868310e230b6Smaya 868410e230b6Smayastatic inline void 868510e230b6SmayaGEN75_SO_WRITE_OFFSET0_pack(__attribute__((unused)) __gen_user_data *data, 868610e230b6Smaya __attribute__((unused)) void * restrict dst, 868710e230b6Smaya __attribute__((unused)) const struct GEN75_SO_WRITE_OFFSET0 * restrict values) 868810e230b6Smaya{ 868910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 869010e230b6Smaya 869110e230b6Smaya dw[0] = 869210e230b6Smaya __gen_offset(values->WriteOffset, 2, 31); 869310e230b6Smaya} 869410e230b6Smaya 869510e230b6Smaya#define GEN75_SO_WRITE_OFFSET1_num 0x5284 869610e230b6Smaya#define GEN75_SO_WRITE_OFFSET1_length 1 869710e230b6Smayastruct GEN75_SO_WRITE_OFFSET1 { 869810e230b6Smaya uint64_t WriteOffset; 869910e230b6Smaya}; 870010e230b6Smaya 870110e230b6Smayastatic inline void 870210e230b6SmayaGEN75_SO_WRITE_OFFSET1_pack(__attribute__((unused)) __gen_user_data *data, 870310e230b6Smaya __attribute__((unused)) void * restrict dst, 870410e230b6Smaya __attribute__((unused)) const struct GEN75_SO_WRITE_OFFSET1 * restrict values) 870510e230b6Smaya{ 870610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 870710e230b6Smaya 870810e230b6Smaya dw[0] = 870910e230b6Smaya __gen_offset(values->WriteOffset, 2, 31); 871010e230b6Smaya} 871110e230b6Smaya 871210e230b6Smaya#define GEN75_SO_WRITE_OFFSET2_num 0x5288 871310e230b6Smaya#define GEN75_SO_WRITE_OFFSET2_length 1 871410e230b6Smayastruct GEN75_SO_WRITE_OFFSET2 { 871510e230b6Smaya uint64_t WriteOffset; 871610e230b6Smaya}; 871710e230b6Smaya 871810e230b6Smayastatic inline void 871910e230b6SmayaGEN75_SO_WRITE_OFFSET2_pack(__attribute__((unused)) __gen_user_data *data, 872010e230b6Smaya __attribute__((unused)) void * restrict dst, 872110e230b6Smaya __attribute__((unused)) const struct GEN75_SO_WRITE_OFFSET2 * restrict values) 872210e230b6Smaya{ 872310e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 872410e230b6Smaya 872510e230b6Smaya dw[0] = 872610e230b6Smaya __gen_offset(values->WriteOffset, 2, 31); 872710e230b6Smaya} 872810e230b6Smaya 872910e230b6Smaya#define GEN75_SO_WRITE_OFFSET3_num 0x528c 873010e230b6Smaya#define GEN75_SO_WRITE_OFFSET3_length 1 873110e230b6Smayastruct GEN75_SO_WRITE_OFFSET3 { 873210e230b6Smaya uint64_t WriteOffset; 873310e230b6Smaya}; 873410e230b6Smaya 873510e230b6Smayastatic inline void 873610e230b6SmayaGEN75_SO_WRITE_OFFSET3_pack(__attribute__((unused)) __gen_user_data *data, 873710e230b6Smaya __attribute__((unused)) void * restrict dst, 873810e230b6Smaya __attribute__((unused)) const struct GEN75_SO_WRITE_OFFSET3 * restrict values) 873910e230b6Smaya{ 874010e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 874110e230b6Smaya 874210e230b6Smaya dw[0] = 874310e230b6Smaya __gen_offset(values->WriteOffset, 2, 31); 874410e230b6Smaya} 874510e230b6Smaya 874610e230b6Smaya#define GEN75_VCS_FAULT_REG_num 0x4194 874710e230b6Smaya#define GEN75_VCS_FAULT_REG_length 1 874810e230b6Smayastruct GEN75_VCS_FAULT_REG { 874910e230b6Smaya bool ValidBit; 875010e230b6Smaya uint32_t FaultType; 875110e230b6Smaya#define PageFault 0 875210e230b6Smaya#define InvalidPDFault 1 875310e230b6Smaya#define UnloadedPDFault 2 875410e230b6Smaya#define InvalidandUnloadedPDfault 3 875510e230b6Smaya uint32_t SRCIDofFault; 875610e230b6Smaya uint32_t GTTSEL; 875710e230b6Smaya#define PPGTT 0 875810e230b6Smaya#define GGTT 1 875910e230b6Smaya __gen_address_type VirtualAddressofFault; 876010e230b6Smaya}; 876110e230b6Smaya 876210e230b6Smayastatic inline void 876310e230b6SmayaGEN75_VCS_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data, 876410e230b6Smaya __attribute__((unused)) void * restrict dst, 876510e230b6Smaya __attribute__((unused)) const struct GEN75_VCS_FAULT_REG * restrict values) 876610e230b6Smaya{ 876710e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 876810e230b6Smaya 876910e230b6Smaya const uint32_t v0 = 877010e230b6Smaya __gen_uint(values->ValidBit, 0, 0) | 877110e230b6Smaya __gen_uint(values->FaultType, 1, 2) | 877210e230b6Smaya __gen_uint(values->SRCIDofFault, 3, 10) | 877310e230b6Smaya __gen_uint(values->GTTSEL, 11, 11); 877410e230b6Smaya dw[0] = __gen_combine_address(data, &dw[0], values->VirtualAddressofFault, v0); 877510e230b6Smaya} 877610e230b6Smaya 877710e230b6Smaya#define GEN75_VCS_INSTDONE_num 0x1206c 877810e230b6Smaya#define GEN75_VCS_INSTDONE_length 1 877910e230b6Smayastruct GEN75_VCS_INSTDONE { 878010e230b6Smaya bool RingEnable; 878110e230b6Smaya uint32_t USBDone; 878210e230b6Smaya uint32_t QRCDone; 878310e230b6Smaya uint32_t SECDone; 878410e230b6Smaya uint32_t MPCDone; 878510e230b6Smaya uint32_t VFTDone; 878610e230b6Smaya uint32_t BSPDone; 878710e230b6Smaya uint32_t VLFDone; 878810e230b6Smaya uint32_t VOPDone; 878910e230b6Smaya uint32_t VMCDone; 879010e230b6Smaya uint32_t VIPDone; 879110e230b6Smaya uint32_t VITDone; 879210e230b6Smaya uint32_t VDSDone; 879310e230b6Smaya uint32_t VMXDone; 879410e230b6Smaya uint32_t VCPDone; 879510e230b6Smaya uint32_t VCDDone; 879610e230b6Smaya uint32_t VADDone; 879710e230b6Smaya uint32_t VMDDone; 879810e230b6Smaya uint32_t VISDone; 879910e230b6Smaya uint32_t VACDone; 880010e230b6Smaya uint32_t VAMDone; 880110e230b6Smaya uint32_t JPGDone; 880210e230b6Smaya uint32_t VBPDone; 880310e230b6Smaya uint32_t VHRDone; 880410e230b6Smaya uint32_t VCIDone; 880510e230b6Smaya uint32_t VCRDone; 880610e230b6Smaya uint32_t VINDone; 880710e230b6Smaya uint32_t VPRDone; 880810e230b6Smaya uint32_t VTQDone; 880910e230b6Smaya uint32_t Reserved; 881010e230b6Smaya uint32_t VCSDone; 881110e230b6Smaya uint32_t GACDone; 881210e230b6Smaya}; 881310e230b6Smaya 881410e230b6Smayastatic inline void 881510e230b6SmayaGEN75_VCS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data, 881610e230b6Smaya __attribute__((unused)) void * restrict dst, 881710e230b6Smaya __attribute__((unused)) const struct GEN75_VCS_INSTDONE * restrict values) 881810e230b6Smaya{ 881910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 882010e230b6Smaya 882110e230b6Smaya dw[0] = 882210e230b6Smaya __gen_uint(values->RingEnable, 0, 0) | 882310e230b6Smaya __gen_uint(values->USBDone, 1, 1) | 882410e230b6Smaya __gen_uint(values->QRCDone, 2, 2) | 882510e230b6Smaya __gen_uint(values->SECDone, 3, 3) | 882610e230b6Smaya __gen_uint(values->MPCDone, 4, 4) | 882710e230b6Smaya __gen_uint(values->VFTDone, 5, 5) | 882810e230b6Smaya __gen_uint(values->BSPDone, 6, 6) | 882910e230b6Smaya __gen_uint(values->VLFDone, 7, 7) | 883010e230b6Smaya __gen_uint(values->VOPDone, 8, 8) | 883110e230b6Smaya __gen_uint(values->VMCDone, 9, 9) | 883210e230b6Smaya __gen_uint(values->VIPDone, 10, 10) | 883310e230b6Smaya __gen_uint(values->VITDone, 11, 11) | 883410e230b6Smaya __gen_uint(values->VDSDone, 12, 12) | 883510e230b6Smaya __gen_uint(values->VMXDone, 13, 13) | 883610e230b6Smaya __gen_uint(values->VCPDone, 14, 14) | 883710e230b6Smaya __gen_uint(values->VCDDone, 15, 15) | 883810e230b6Smaya __gen_uint(values->VADDone, 16, 16) | 883910e230b6Smaya __gen_uint(values->VMDDone, 17, 17) | 884010e230b6Smaya __gen_uint(values->VISDone, 18, 18) | 884110e230b6Smaya __gen_uint(values->VACDone, 19, 19) | 884210e230b6Smaya __gen_uint(values->VAMDone, 20, 20) | 884310e230b6Smaya __gen_uint(values->JPGDone, 21, 21) | 884410e230b6Smaya __gen_uint(values->VBPDone, 22, 22) | 884510e230b6Smaya __gen_uint(values->VHRDone, 23, 23) | 884610e230b6Smaya __gen_uint(values->VCIDone, 24, 24) | 884710e230b6Smaya __gen_uint(values->VCRDone, 25, 25) | 884810e230b6Smaya __gen_uint(values->VINDone, 26, 26) | 884910e230b6Smaya __gen_uint(values->VPRDone, 27, 27) | 885010e230b6Smaya __gen_uint(values->VTQDone, 28, 28) | 885110e230b6Smaya __gen_uint(values->Reserved, 29, 29) | 885210e230b6Smaya __gen_uint(values->VCSDone, 30, 30) | 885310e230b6Smaya __gen_uint(values->GACDone, 31, 31); 885410e230b6Smaya} 885510e230b6Smaya 885610e230b6Smaya#define GEN75_VCS_RING_BUFFER_CTL_num 0x1203c 885710e230b6Smaya#define GEN75_VCS_RING_BUFFER_CTL_length 1 885810e230b6Smayastruct GEN75_VCS_RING_BUFFER_CTL { 885910e230b6Smaya bool RingBufferEnable; 886010e230b6Smaya uint32_t AutomaticReportHeadPointer; 886110e230b6Smaya#define MI_AUTOREPORT_OFF 0 886210e230b6Smaya#define MI_AUTOREPORT_64KB 1 886310e230b6Smaya#define MI_AUTOREPORT_4KB 2 886410e230b6Smaya#define MI_AUTOREPORT_128KB 3 886510e230b6Smaya bool DisableRegisterAccesses; 886610e230b6Smaya bool SemaphoreWait; 886710e230b6Smaya bool RBWait; 886810e230b6Smaya uint32_t BufferLengthinpages1; 886910e230b6Smaya}; 887010e230b6Smaya 887110e230b6Smayastatic inline void 887210e230b6SmayaGEN75_VCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data, 887310e230b6Smaya __attribute__((unused)) void * restrict dst, 887410e230b6Smaya __attribute__((unused)) const struct GEN75_VCS_RING_BUFFER_CTL * restrict values) 887510e230b6Smaya{ 887610e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 887710e230b6Smaya 887810e230b6Smaya dw[0] = 887910e230b6Smaya __gen_uint(values->RingBufferEnable, 0, 0) | 888010e230b6Smaya __gen_uint(values->AutomaticReportHeadPointer, 1, 2) | 888110e230b6Smaya __gen_uint(values->DisableRegisterAccesses, 8, 8) | 888210e230b6Smaya __gen_uint(values->SemaphoreWait, 10, 10) | 888310e230b6Smaya __gen_uint(values->RBWait, 11, 11) | 888410e230b6Smaya __gen_uint(values->BufferLengthinpages1, 12, 20); 888510e230b6Smaya} 888610e230b6Smaya 888710e230b6Smaya#define GEN75_VECS_FAULT_REG_num 0x4394 888810e230b6Smaya#define GEN75_VECS_FAULT_REG_length 1 888910e230b6Smayastruct GEN75_VECS_FAULT_REG { 889010e230b6Smaya bool ValidBit; 889110e230b6Smaya uint32_t FaultType; 889210e230b6Smaya#define PageFault 0 889310e230b6Smaya#define InvalidPDFault 1 889410e230b6Smaya#define UnloadedPDFault 2 889510e230b6Smaya#define InvalidandUnloadedPDfault 3 889610e230b6Smaya uint32_t SRCIDofFault; 889710e230b6Smaya uint32_t GTTSEL; 889810e230b6Smaya#define PPGTT 0 889910e230b6Smaya#define GGTT 1 890010e230b6Smaya __gen_address_type VirtualAddressofFault; 890110e230b6Smaya}; 890210e230b6Smaya 890310e230b6Smayastatic inline void 890410e230b6SmayaGEN75_VECS_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data, 890510e230b6Smaya __attribute__((unused)) void * restrict dst, 890610e230b6Smaya __attribute__((unused)) const struct GEN75_VECS_FAULT_REG * restrict values) 890710e230b6Smaya{ 890810e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 890910e230b6Smaya 891010e230b6Smaya const uint32_t v0 = 891110e230b6Smaya __gen_uint(values->ValidBit, 0, 0) | 891210e230b6Smaya __gen_uint(values->FaultType, 1, 2) | 891310e230b6Smaya __gen_uint(values->SRCIDofFault, 3, 10) | 891410e230b6Smaya __gen_uint(values->GTTSEL, 11, 11); 891510e230b6Smaya dw[0] = __gen_combine_address(data, &dw[0], values->VirtualAddressofFault, v0); 891610e230b6Smaya} 891710e230b6Smaya 891810e230b6Smaya#define GEN75_VECS_INSTDONE_num 0x1a06c 891910e230b6Smaya#define GEN75_VECS_INSTDONE_length 1 892010e230b6Smayastruct GEN75_VECS_INSTDONE { 892110e230b6Smaya bool RingEnable; 892210e230b6Smaya uint32_t VECSDone; 892310e230b6Smaya uint32_t GAMDone; 892410e230b6Smaya}; 892510e230b6Smaya 892610e230b6Smayastatic inline void 892710e230b6SmayaGEN75_VECS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data, 892810e230b6Smaya __attribute__((unused)) void * restrict dst, 892910e230b6Smaya __attribute__((unused)) const struct GEN75_VECS_INSTDONE * restrict values) 893010e230b6Smaya{ 893110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 893210e230b6Smaya 893310e230b6Smaya dw[0] = 893410e230b6Smaya __gen_uint(values->RingEnable, 0, 0) | 893510e230b6Smaya __gen_uint(values->VECSDone, 30, 30) | 893610e230b6Smaya __gen_uint(values->GAMDone, 31, 31); 893710e230b6Smaya} 893810e230b6Smaya 893910e230b6Smaya#define GEN75_VECS_RING_BUFFER_CTL_num 0x1a03c 894010e230b6Smaya#define GEN75_VECS_RING_BUFFER_CTL_length 1 894110e230b6Smayastruct GEN75_VECS_RING_BUFFER_CTL { 894210e230b6Smaya bool RingBufferEnable; 894310e230b6Smaya uint32_t AutomaticReportHeadPointer; 894410e230b6Smaya#define MI_AUTOREPORT_OFF 0 894510e230b6Smaya#define MI_AUTOREPORT_64KB 1 894610e230b6Smaya#define MI_AUTOREPORT_4KB 2 894710e230b6Smaya#define MI_AUTOREPORT_128KB 3 894810e230b6Smaya bool DisableRegisterAccesses; 894910e230b6Smaya bool SemaphoreWait; 895010e230b6Smaya bool RBWait; 895110e230b6Smaya uint32_t BufferLengthinpages1; 895210e230b6Smaya}; 895310e230b6Smaya 895410e230b6Smayastatic inline void 895510e230b6SmayaGEN75_VECS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data, 895610e230b6Smaya __attribute__((unused)) void * restrict dst, 895710e230b6Smaya __attribute__((unused)) const struct GEN75_VECS_RING_BUFFER_CTL * restrict values) 895810e230b6Smaya{ 895910e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 896010e230b6Smaya 896110e230b6Smaya dw[0] = 896210e230b6Smaya __gen_uint(values->RingBufferEnable, 0, 0) | 896310e230b6Smaya __gen_uint(values->AutomaticReportHeadPointer, 1, 2) | 896410e230b6Smaya __gen_uint(values->DisableRegisterAccesses, 8, 8) | 896510e230b6Smaya __gen_uint(values->SemaphoreWait, 10, 10) | 896610e230b6Smaya __gen_uint(values->RBWait, 11, 11) | 896710e230b6Smaya __gen_uint(values->BufferLengthinpages1, 12, 20); 896810e230b6Smaya} 896910e230b6Smaya 897010e230b6Smaya#define GEN75_VS_INVOCATION_COUNT_num 0x2320 897110e230b6Smaya#define GEN75_VS_INVOCATION_COUNT_length 2 897210e230b6Smayastruct GEN75_VS_INVOCATION_COUNT { 897310e230b6Smaya uint64_t VSInvocationCountReport; 897410e230b6Smaya}; 897510e230b6Smaya 897610e230b6Smayastatic inline void 897710e230b6SmayaGEN75_VS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data, 897810e230b6Smaya __attribute__((unused)) void * restrict dst, 897910e230b6Smaya __attribute__((unused)) const struct GEN75_VS_INVOCATION_COUNT * restrict values) 898010e230b6Smaya{ 898110e230b6Smaya uint32_t * restrict dw = (uint32_t * restrict) dst; 898210e230b6Smaya 898310e230b6Smaya const uint64_t v0 = 898410e230b6Smaya __gen_uint(values->VSInvocationCountReport, 0, 63); 898510e230b6Smaya dw[0] = v0; 898610e230b6Smaya dw[1] = v0 >> 32; 898710e230b6Smaya} 898810e230b6Smaya 898910e230b6Smaya#endif /* GEN75_PACK_H */ 8990