vk: Add GetPhysicalDeviceFeatures
[mesa.git] / src / vulkan / gen75_pack.h
index f01fdb07156d78f30bf91f8a76a7e28e20d9dbed..9ea8c2bcf65d1ca1fa9653d37af6996de2bb45fb 100644 (file)
 #include <stdio.h>
 #include <assert.h>
 
+#ifndef __gen_validate_value
+#define __gen_validate_value(x)
+#endif
+
 #ifndef __gen_field_functions
 #define __gen_field_functions
 
@@ -40,9 +44,16 @@ union __gen_value {
    uint32_t dw;
 };
 
+static inline uint64_t
+__gen_mbo(uint32_t start, uint32_t end)
+{
+   return (~0ul >> (64 - (end - start + 1))) << start;
+}
+
 static inline uint64_t
 __gen_field(uint64_t v, uint32_t start, uint32_t end)
 {
+   __gen_validate_value(v);
 #if DEBUG
    if (end - start + 1 < 64)
       assert(v < 1ul << (end - start + 1));
@@ -54,6 +65,7 @@ __gen_field(uint64_t v, uint32_t start, uint32_t end)
 static inline uint64_t
 __gen_offset(uint64_t v, uint32_t start, uint32_t end)
 {
+   __gen_validate_value(v);
 #if DEBUG
    uint64_t mask = (~0ul >> (64 - (end - start + 1))) << start;
 
@@ -66,6 +78,7 @@ __gen_offset(uint64_t v, uint32_t start, uint32_t end)
 static inline uint32_t
 __gen_float(float v)
 {
+   __gen_validate_value(v);
    return ((union __gen_value) { .f = (v) }).dw;
 }
 
@@ -171,7 +184,7 @@ GEN75_GPGPU_CSR_BASE_ADDRESS_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_STORE_REGISTER_MEM {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-   uint32_t                                     UseGlobalGTT;
+   bool                                         UseGlobalGTT;
    uint32_t                                     PredicateEnable;
    uint32_t                                     DwordLength;
    uint32_t                                     RegisterAddress;
@@ -193,7 +206,7 @@ GEN75_MI_STORE_REGISTER_MEM_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[1] =
-      __gen_field(values->RegisterAddress, 2, 22) |
+      __gen_offset(values->RegisterAddress, 2, 22) |
       0;
 
    uint32_t dw2 =
@@ -248,6 +261,24 @@ GEN75_PIPELINE_SELECT_pack(__gen_user_data *data, void * restrict dst,
    ._3DCommandSubOpcode  =  1,                  \
    .DwordLength          =  8
 
+struct GEN75_MEMORY_OBJECT_CONTROL_STATE {
+   uint32_t                                     LLCeLLCCacheabilityControlLLCCC;
+   uint32_t                                     L3CacheabilityControlL3CC;
+};
+
+static inline void
+GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(__gen_user_data *data, void * restrict dst,
+                                     const struct GEN75_MEMORY_OBJECT_CONTROL_STATE * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   dw[0] =
+      __gen_field(values->LLCeLLCCacheabilityControlLLCCC, 1, 2) |
+      __gen_field(values->L3CacheabilityControlL3CC, 0, 0) |
+      0;
+
+}
+
 struct GEN75_STATE_BASE_ADDRESS {
    uint32_t                                     CommandType;
    uint32_t                                     CommandSubType;
@@ -255,29 +286,29 @@ struct GEN75_STATE_BASE_ADDRESS {
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
    __gen_address_type                           GeneralStateBaseAddress;
-   uint32_t                                     GeneralStateMemoryObjectControlState;
-   uint32_t                                     StatelessDataPortAccessMemoryObjectControlState;
-   uint32_t                                     GeneralStateBaseAddressModifyEnable;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     GeneralStateMemoryObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     StatelessDataPortAccessMemoryObjectControlState;
+   bool                                         GeneralStateBaseAddressModifyEnable;
    __gen_address_type                           SurfaceStateBaseAddress;
-   uint32_t                                     SurfaceStateMemoryObjectControlState;
-   uint32_t                                     SurfaceStateBaseAddressModifyEnable;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     SurfaceStateMemoryObjectControlState;
+   bool                                         SurfaceStateBaseAddressModifyEnable;
    __gen_address_type                           DynamicStateBaseAddress;
-   uint32_t                                     DynamicStateMemoryObjectControlState;
-   uint32_t                                     DynamicStateBaseAddressModifyEnable;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     DynamicStateMemoryObjectControlState;
+   bool                                         DynamicStateBaseAddressModifyEnable;
    __gen_address_type                           IndirectObjectBaseAddress;
-   uint32_t                                     IndirectObjectMemoryObjectControlState;
-   uint32_t                                     IndirectObjectBaseAddressModifyEnable;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     IndirectObjectMemoryObjectControlState;
+   bool                                         IndirectObjectBaseAddressModifyEnable;
    __gen_address_type                           InstructionBaseAddress;
-   uint32_t                                     InstructionMemoryObjectControlState;
-   uint32_t                                     InstructionBaseAddressModifyEnable;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     InstructionMemoryObjectControlState;
+   bool                                         InstructionBaseAddressModifyEnable;
    __gen_address_type                           GeneralStateAccessUpperBound;
-   uint32_t                                     GeneralStateAccessUpperBoundModifyEnable;
+   bool                                         GeneralStateAccessUpperBoundModifyEnable;
    __gen_address_type                           DynamicStateAccessUpperBound;
-   uint32_t                                     DynamicStateAccessUpperBoundModifyEnable;
+   bool                                         DynamicStateAccessUpperBoundModifyEnable;
    __gen_address_type                           IndirectObjectAccessUpperBound;
-   uint32_t                                     IndirectObjectAccessUpperBoundModifyEnable;
+   bool                                         IndirectObjectAccessUpperBoundModifyEnable;
    __gen_address_type                           InstructionAccessUpperBound;
-   uint32_t                                     InstructionAccessUpperBoundModifyEnable;
+   bool                                         InstructionAccessUpperBoundModifyEnable;
 };
 
 static inline void
@@ -294,41 +325,53 @@ GEN75_STATE_BASE_ADDRESS_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
+   uint32_t dw_GeneralStateMemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_GeneralStateMemoryObjectControlState, &values->GeneralStateMemoryObjectControlState);
+   uint32_t dw_StatelessDataPortAccessMemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_StatelessDataPortAccessMemoryObjectControlState, &values->StatelessDataPortAccessMemoryObjectControlState);
    uint32_t dw1 =
-   /* Struct  GeneralStateMemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
-   /* Struct  StatelessDataPortAccessMemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_GeneralStateMemoryObjectControlState, 8, 11) |
+      __gen_field(dw_StatelessDataPortAccessMemoryObjectControlState, 4, 7) |
       __gen_field(values->GeneralStateBaseAddressModifyEnable, 0, 0) |
       0;
 
    dw[1] =
       __gen_combine_address(data, &dw[1], values->GeneralStateBaseAddress, dw1);
 
+   uint32_t dw_SurfaceStateMemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_SurfaceStateMemoryObjectControlState, &values->SurfaceStateMemoryObjectControlState);
    uint32_t dw2 =
-   /* Struct  SurfaceStateMemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_SurfaceStateMemoryObjectControlState, 8, 11) |
       __gen_field(values->SurfaceStateBaseAddressModifyEnable, 0, 0) |
       0;
 
    dw[2] =
       __gen_combine_address(data, &dw[2], values->SurfaceStateBaseAddress, dw2);
 
+   uint32_t dw_DynamicStateMemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_DynamicStateMemoryObjectControlState, &values->DynamicStateMemoryObjectControlState);
    uint32_t dw3 =
-   /* Struct  DynamicStateMemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_DynamicStateMemoryObjectControlState, 8, 11) |
       __gen_field(values->DynamicStateBaseAddressModifyEnable, 0, 0) |
       0;
 
    dw[3] =
       __gen_combine_address(data, &dw[3], values->DynamicStateBaseAddress, dw3);
 
+   uint32_t dw_IndirectObjectMemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_IndirectObjectMemoryObjectControlState, &values->IndirectObjectMemoryObjectControlState);
    uint32_t dw4 =
-   /* Struct  IndirectObjectMemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_IndirectObjectMemoryObjectControlState, 8, 11) |
       __gen_field(values->IndirectObjectBaseAddressModifyEnable, 0, 0) |
       0;
 
    dw[4] =
       __gen_combine_address(data, &dw[4], values->IndirectObjectBaseAddress, dw4);
 
+   uint32_t dw_InstructionMemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_InstructionMemoryObjectControlState, &values->InstructionMemoryObjectControlState);
    uint32_t dw5 =
-   /* Struct  InstructionMemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_InstructionMemoryObjectControlState, 8, 11) |
       __gen_field(values->InstructionBaseAddressModifyEnable, 0, 0) |
       0;
 
@@ -461,7 +504,7 @@ struct GEN75_SWTESS_BASE_ADDRESS {
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
    __gen_address_type                           SWTessellationBaseAddress;
-   uint32_t                                     SWTessellationMemoryObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     SWTessellationMemoryObjectControlState;
 };
 
 static inline void
@@ -478,8 +521,10 @@ GEN75_SWTESS_BASE_ADDRESS_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
+   uint32_t dw_SWTessellationMemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_SWTessellationMemoryObjectControlState, &values->SWTessellationMemoryObjectControlState);
    uint32_t dw1 =
-   /* Struct  SWTessellationMemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_SWTessellationMemoryObjectControlState, 8, 11) |
       0;
 
    dw[1] =
@@ -501,11 +546,11 @@ struct GEN75_3DPRIMITIVE {
    uint32_t                                     CommandSubType;
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
-   uint32_t                                     IndirectParameterEnable;
+   bool                                         IndirectParameterEnable;
    uint32_t                                     UAVCoherencyRequired;
-   uint32_t                                     PredicateEnable;
+   bool                                         PredicateEnable;
    uint32_t                                     DwordLength;
-   uint32_t                                     EndOffsetEnable;
+   bool                                         EndOffsetEnable;
 #define     SEQUENTIAL                                         0
 #define     RANDOM                                             1
    uint32_t                                     VertexAccessType;
@@ -577,10 +622,10 @@ struct GEN75_3DSTATE_AA_LINE_PARAMETERS {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     AACoverageBias;
-   uint32_t                                     AACoverageSlope;
-   uint32_t                                     AACoverageEndCapBias;
-   uint32_t                                     AACoverageEndCapSlope;
+   float                                        AACoverageBias;
+   float                                        AACoverageSlope;
+   float                                        AACoverageEndCapBias;
+   float                                        AACoverageEndCapSlope;
 };
 
 static inline void
@@ -598,13 +643,13 @@ GEN75_3DSTATE_AA_LINE_PARAMETERS_pack(__gen_user_data *data, void * restrict dst
       0;
 
    dw[1] =
-      __gen_field(values->AACoverageBias, 16, 23) |
-      __gen_field(values->AACoverageSlope, 0, 7) |
+      __gen_field(values->AACoverageBias * (1 << 8), 16, 23) |
+      __gen_field(values->AACoverageSlope * (1 << 8), 0, 7) |
       0;
 
    dw[2] =
-      __gen_field(values->AACoverageEndCapBias, 16, 23) |
-      __gen_field(values->AACoverageEndCapSlope, 0, 7) |
+      __gen_field(values->AACoverageEndCapBias * (1 << 8), 16, 23) |
+      __gen_field(values->AACoverageEndCapSlope * (1 << 8), 0, 7) |
       0;
 
 }
@@ -616,6 +661,24 @@ GEN75_3DSTATE_AA_LINE_PARAMETERS_pack(__gen_user_data *data, void * restrict dst
    ._3DCommandOpcode     =  0,                  \
    ._3DCommandSubOpcode  = 70
 
+struct GEN75_BINDING_TABLE_EDIT_ENTRY {
+   uint32_t                                     BindingTableIndex;
+   uint32_t                                     SurfaceStatePointer;
+};
+
+static inline void
+GEN75_BINDING_TABLE_EDIT_ENTRY_pack(__gen_user_data *data, void * restrict dst,
+                                  const struct GEN75_BINDING_TABLE_EDIT_ENTRY * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   dw[0] =
+      __gen_field(values->BindingTableIndex, 16, 23) |
+      __gen_offset(values->SurfaceStatePointer, 0, 15) |
+      0;
+
+}
+
 struct GEN75_3DSTATE_BINDING_TABLE_EDIT_DS {
    uint32_t                                     CommandType;
    uint32_t                                     CommandSubType;
@@ -1031,7 +1094,7 @@ struct GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC {
    uint32_t                                     DwordLength;
    __gen_address_type                           BindingTablePoolBaseAddress;
    uint32_t                                     BindingTablePoolEnable;
-   uint32_t                                     SurfaceObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     SurfaceObjectControlState;
    __gen_address_type                           BindingTablePoolUpperBound;
 };
 
@@ -1049,9 +1112,11 @@ GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_pack(__gen_user_data *data, void * restri
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
+   uint32_t dw_SurfaceObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_SurfaceObjectControlState, &values->SurfaceObjectControlState);
    uint32_t dw1 =
       __gen_field(values->BindingTablePoolEnable, 11, 11) |
-   /* Struct  SurfaceObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_SurfaceObjectControlState, 7, 10) |
       0;
 
    dw[1] =
@@ -1099,6 +1164,7 @@ GEN75_3DSTATE_BLEND_STATE_POINTERS_pack(__gen_user_data *data, void * restrict d
 
    dw[1] =
       __gen_offset(values->BlendStatePointer, 6, 31) |
+      __gen_mbo(0, 0) |
       0;
 
 }
@@ -1137,6 +1203,7 @@ GEN75_3DSTATE_CC_STATE_POINTERS_pack(__gen_user_data *data, void * restrict dst,
 
    dw[1] =
       __gen_offset(values->ColorCalcStatePointer, 6, 31) |
+      __gen_mbo(0, 0) |
       0;
 
 }
@@ -1205,7 +1272,7 @@ struct GEN75_3DSTATE_CLEAR_PARAMS {
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
    uint32_t                                     DepthClearValue;
-   uint32_t                                     DepthClearValueValid;
+   bool                                         DepthClearValueValid;
 };
 
 static inline void
@@ -1249,27 +1316,27 @@ struct GEN75_3DSTATE_CLIP {
    uint32_t                                     DwordLength;
    uint32_t                                     FrontWinding;
    uint32_t                                     VertexSubPixelPrecisionSelect;
-   uint32_t                                     EarlyCullEnable;
+   bool                                         EarlyCullEnable;
 #define     CULLMODE_BOTH                                      0
 #define     CULLMODE_NONE                                      1
 #define     CULLMODE_FRONT                                     2
 #define     CULLMODE_BACK                                      3
    uint32_t                                     CullMode;
-   uint32_t                                     ClipperStatisticsEnable;
+   bool                                         ClipperStatisticsEnable;
    uint32_t                                     UserClipDistanceCullTestEnableBitmask;
-   uint32_t                                     ClipEnable;
+   bool                                         ClipEnable;
 #define     APIMODE_OGL                                        0
    uint32_t                                     APIMode;
-   uint32_t                                     ViewportXYClipTestEnable;
-   uint32_t                                     ViewportZClipTestEnable;
-   uint32_t                                     GuardbandClipTestEnable;
+   bool                                         ViewportXYClipTestEnable;
+   bool                                         ViewportZClipTestEnable;
+   bool                                         GuardbandClipTestEnable;
    uint32_t                                     UserClipDistanceClipTestEnableBitmask;
 #define     CLIPMODE_NORMAL                                    0
 #define     CLIPMODE_REJECT_ALL                                3
 #define     CLIPMODE_ACCEPT_ALL                                4
    uint32_t                                     ClipMode;
-   uint32_t                                     PerspectiveDivideDisable;
-   uint32_t                                     NonPerspectiveBarycentricEnable;
+   bool                                         PerspectiveDivideDisable;
+   bool                                         NonPerspectiveBarycentricEnable;
 #define     Vertex0                                            0
 #define     Vertex1                                            1
 #define     Vertex2                                            2
@@ -1281,9 +1348,9 @@ struct GEN75_3DSTATE_CLIP {
 #define     Vertex1                                            1
 #define     Vertex2                                            2
    uint32_t                                     TriangleFanProvokingVertexSelect;
-   uint32_t                                     MinimumPointWidth;
-   uint32_t                                     MaximumPointWidth;
-   uint32_t                                     ForceZeroRTAIndexEnable;
+   float                                        MinimumPointWidth;
+   float                                        MaximumPointWidth;
+   bool                                         ForceZeroRTAIndexEnable;
    uint32_t                                     MaximumVPIndex;
 };
 
@@ -1326,8 +1393,8 @@ GEN75_3DSTATE_CLIP_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[3] =
-      __gen_field(values->MinimumPointWidth, 17, 27) |
-      __gen_field(values->MaximumPointWidth, 6, 16) |
+      __gen_field(values->MinimumPointWidth * (1 << 3), 17, 27) |
+      __gen_field(values->MaximumPointWidth * (1 << 3), 6, 16) |
       __gen_field(values->ForceZeroRTAIndexEnable, 5, 5) |
       __gen_field(values->MaximumVPIndex, 0, 3) |
       0;
@@ -1343,13 +1410,70 @@ GEN75_3DSTATE_CLIP_pack(__gen_user_data *data, void * restrict dst,
    ._3DCommandSubOpcode  = 26,                  \
    .DwordLength          =  5
 
+struct GEN75_3DSTATE_CONSTANT_BODY {
+   uint32_t                                     ConstantBuffer1ReadLength;
+   uint32_t                                     ConstantBuffer0ReadLength;
+   uint32_t                                     ConstantBuffer3ReadLength;
+   uint32_t                                     ConstantBuffer2ReadLength;
+   __gen_address_type                           PointerToConstantBuffer0;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     ConstantBufferObjectControlState;
+   __gen_address_type                           PointerToConstantBuffer1;
+   __gen_address_type                           PointerToConstantBuffer2;
+   __gen_address_type                           PointerToConstantBuffer3;
+};
+
+static inline void
+GEN75_3DSTATE_CONSTANT_BODY_pack(__gen_user_data *data, void * restrict dst,
+                               const struct GEN75_3DSTATE_CONSTANT_BODY * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   dw[0] =
+      __gen_field(values->ConstantBuffer1ReadLength, 16, 31) |
+      __gen_field(values->ConstantBuffer0ReadLength, 0, 15) |
+      0;
+
+   dw[1] =
+      __gen_field(values->ConstantBuffer3ReadLength, 16, 31) |
+      __gen_field(values->ConstantBuffer2ReadLength, 0, 15) |
+      0;
+
+   uint32_t dw_ConstantBufferObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_ConstantBufferObjectControlState, &values->ConstantBufferObjectControlState);
+   uint32_t dw2 =
+      __gen_field(dw_ConstantBufferObjectControlState, 0, 4) |
+      0;
+
+   dw[2] =
+      __gen_combine_address(data, &dw[2], values->PointerToConstantBuffer0, dw2);
+
+   uint32_t dw3 =
+      0;
+
+   dw[3] =
+      __gen_combine_address(data, &dw[3], values->PointerToConstantBuffer1, dw3);
+
+   uint32_t dw4 =
+      0;
+
+   dw[4] =
+      __gen_combine_address(data, &dw[4], values->PointerToConstantBuffer2, dw4);
+
+   uint32_t dw5 =
+      0;
+
+   dw[5] =
+      __gen_combine_address(data, &dw[5], values->PointerToConstantBuffer3, dw5);
+
+}
+
 struct GEN75_3DSTATE_CONSTANT_DS {
    uint32_t                                     CommandType;
    uint32_t                                     CommandSubType;
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     ConstantBody;
+   struct GEN75_3DSTATE_CONSTANT_BODY           ConstantBody;
 };
 
 static inline void
@@ -1366,10 +1490,7 @@ GEN75_3DSTATE_CONSTANT_DS_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
-   dw[1] =
-   /* Struct  ConstantBody: found 3DSTATE_CONSTANT(Body) */
-      0;
-
+   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
 }
 
 #define GEN75_3DSTATE_CONSTANT_GS_length 0x00000007
@@ -1387,7 +1508,7 @@ struct GEN75_3DSTATE_CONSTANT_GS {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     ConstantBody;
+   struct GEN75_3DSTATE_CONSTANT_BODY           ConstantBody;
 };
 
 static inline void
@@ -1404,10 +1525,7 @@ GEN75_3DSTATE_CONSTANT_GS_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
-   dw[1] =
-   /* Struct  ConstantBody: found 3DSTATE_CONSTANT(Body) */
-      0;
-
+   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
 }
 
 #define GEN75_3DSTATE_CONSTANT_HS_length 0x00000007
@@ -1425,7 +1543,7 @@ struct GEN75_3DSTATE_CONSTANT_HS {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     ConstantBody;
+   struct GEN75_3DSTATE_CONSTANT_BODY           ConstantBody;
 };
 
 static inline void
@@ -1442,10 +1560,7 @@ GEN75_3DSTATE_CONSTANT_HS_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
-   dw[1] =
-   /* Struct  ConstantBody: found 3DSTATE_CONSTANT(Body) */
-      0;
-
+   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
 }
 
 #define GEN75_3DSTATE_CONSTANT_PS_length 0x00000007
@@ -1463,7 +1578,7 @@ struct GEN75_3DSTATE_CONSTANT_PS {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     ConstantBody;
+   struct GEN75_3DSTATE_CONSTANT_BODY           ConstantBody;
 };
 
 static inline void
@@ -1480,10 +1595,7 @@ GEN75_3DSTATE_CONSTANT_PS_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
-   dw[1] =
-   /* Struct  ConstantBody: found 3DSTATE_CONSTANT(Body) */
-      0;
-
+   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
 }
 
 #define GEN75_3DSTATE_CONSTANT_VS_length 0x00000007
@@ -1501,7 +1613,7 @@ struct GEN75_3DSTATE_CONSTANT_VS {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     ConstantBody;
+   struct GEN75_3DSTATE_CONSTANT_BODY           ConstantBody;
 };
 
 static inline void
@@ -1518,10 +1630,7 @@ GEN75_3DSTATE_CONSTANT_VS_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
-   dw[1] =
-   /* Struct  ConstantBody: found 3DSTATE_CONSTANT(Body) */
-      0;
-
+   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
 }
 
 #define GEN75_3DSTATE_DEPTH_BUFFER_length 0x00000007
@@ -1545,9 +1654,9 @@ struct GEN75_3DSTATE_DEPTH_BUFFER {
 #define     SURFTYPE_CUBE                                      3
 #define     SURFTYPE_NULL                                      7
    uint32_t                                     SurfaceType;
-   uint32_t                                     DepthWriteEnable;
-   uint32_t                                     StencilWriteEnable;
-   uint32_t                                     HierarchicalDepthBufferEnable;
+   bool                                         DepthWriteEnable;
+   bool                                         StencilWriteEnable;
+   bool                                         HierarchicalDepthBufferEnable;
 #define     D32_FLOAT                                          1
 #define     D24_UNORM_X8_UINT                                  3
 #define     D16_UNORM                                          5
@@ -1560,7 +1669,7 @@ struct GEN75_3DSTATE_DEPTH_BUFFER {
 #define     SURFTYPE_CUBEmustbezero                            0
    uint32_t                                     Depth;
    uint32_t                                     MinimumArrayElement;
-   uint32_t                                     DepthBufferObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     DepthBufferObjectControlState;
    uint32_t                                     DepthCoordinateOffsetY;
    uint32_t                                     DepthCoordinateOffsetX;
    uint32_t                                     RenderTargetViewExtent;
@@ -1601,10 +1710,12 @@ GEN75_3DSTATE_DEPTH_BUFFER_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->LOD, 0, 3) |
       0;
 
+   uint32_t dw_DepthBufferObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_DepthBufferObjectControlState, &values->DepthBufferObjectControlState);
    dw[4] =
       __gen_field(values->Depth, 21, 31) |
       __gen_field(values->MinimumArrayElement, 10, 20) |
-   /* Struct  DepthBufferObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_DepthBufferObjectControlState, 0, 3) |
       0;
 
    dw[5] =
@@ -1652,6 +1763,7 @@ GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_pack(__gen_user_data *data, void * re
 
    dw[1] =
       __gen_offset(values->PointertoDEPTH_STENCIL_STATE, 6, 31) |
+      __gen_mbo(0, 0) |
       0;
 
 }
@@ -1750,19 +1862,19 @@ struct GEN75_3DSTATE_DS {
 #define     IEEE754                                            0
 #define     Alternate                                          1
    uint32_t                                     FloatingPointMode;
-   uint32_t                                     AccessesUAV;
-   uint32_t                                     IllegalOpcodeExceptionEnable;
-   uint32_t                                     SoftwareExceptionEnable;
+   bool                                         AccessesUAV;
+   bool                                         IllegalOpcodeExceptionEnable;
+   bool                                         SoftwareExceptionEnable;
    uint32_t                                     ScratchSpaceBasePointer;
    uint32_t                                     PerThreadScratchSpace;
    uint32_t                                     DispatchGRFStartRegisterForURBData;
    uint32_t                                     PatchURBEntryReadLength;
    uint32_t                                     PatchURBEntryReadOffset;
    uint32_t                                     MaximumNumberofThreads;
-   uint32_t                                     StatisticsEnable;
-   uint32_t                                     ComputeWCoordinateEnable;
-   uint32_t                                     DSCacheDisable;
-   uint32_t                                     DSFunctionEnable;
+   bool                                         StatisticsEnable;
+   bool                                         ComputeWCoordinateEnable;
+   bool                                         DSCacheDisable;
+   bool                                         DSFunctionEnable;
 };
 
 static inline void
@@ -1823,6 +1935,26 @@ GEN75_3DSTATE_DS_pack(__gen_user_data *data, void * restrict dst,
    ._3DCommandOpcode     =  0,                  \
    ._3DCommandSubOpcode  = 55
 
+struct GEN75_GATHER_CONSTANT_ENTRY {
+   uint32_t                                     ConstantBufferOffset;
+   uint32_t                                     ChannelMask;
+   uint32_t                                     BindingTableIndexOffset;
+};
+
+static inline void
+GEN75_GATHER_CONSTANT_ENTRY_pack(__gen_user_data *data, void * restrict dst,
+                               const struct GEN75_GATHER_CONSTANT_ENTRY * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   dw[0] =
+      __gen_offset(values->ConstantBufferOffset, 8, 15) |
+      __gen_field(values->ChannelMask, 4, 7) |
+      __gen_field(values->BindingTableIndexOffset, 0, 3) |
+      0;
+
+}
+
 struct GEN75_3DSTATE_GATHER_CONSTANT_DS {
    uint32_t                                     CommandType;
    uint32_t                                     CommandSubType;
@@ -1967,7 +2099,7 @@ struct GEN75_3DSTATE_GATHER_CONSTANT_PS {
    uint32_t                                     ConstantBufferValid;
    uint32_t                                     ConstantBufferBindingTableBlock;
    uint32_t                                     GatherBufferOffset;
-   uint32_t                                     ConstantBufferDx9Enable;
+   bool                                         ConstantBufferDx9Enable;
    /* variable length fields follow */
 };
 
@@ -2014,7 +2146,7 @@ struct GEN75_3DSTATE_GATHER_CONSTANT_VS {
    uint32_t                                     ConstantBufferValid;
    uint32_t                                     ConstantBufferBindingTableBlock;
    uint32_t                                     GatherBufferOffset;
-   uint32_t                                     ConstantBufferDx9Enable;
+   bool                                         ConstantBufferDx9Enable;
    /* variable length fields follow */
 };
 
@@ -2061,8 +2193,8 @@ struct GEN75_3DSTATE_GATHER_POOL_ALLOC {
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
    __gen_address_type                           GatherPoolBaseAddress;
-   uint32_t                                     GatherPoolEnable;
-   uint32_t                                     MemoryObjectControlState;
+   bool                                         GatherPoolEnable;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     MemoryObjectControlState;
    __gen_address_type                           GatherPoolUpperBound;
 };
 
@@ -2080,9 +2212,12 @@ GEN75_3DSTATE_GATHER_POOL_ALLOC_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
+   uint32_t dw_MemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_MemoryObjectControlState, &values->MemoryObjectControlState);
    uint32_t dw1 =
       __gen_field(values->GatherPoolEnable, 11, 11) |
-   /* Struct  MemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_mbo(4, 5) |
+      __gen_field(dw_MemoryObjectControlState, 0, 3) |
       0;
 
    dw[1] =
@@ -2129,16 +2264,16 @@ struct GEN75_3DSTATE_GS {
 #define     IEEE754                                            0
 #define     alternate                                          1
    uint32_t                                     FloatingPointMode;
-   uint32_t                                     IllegalOpcodeExceptionEnable;
+   bool                                         IllegalOpcodeExceptionEnable;
    uint32_t                                     GSaccessesUAV;
-   uint32_t                                     MaskStackExceptionEnable;
-   uint32_t                                     SoftwareExceptionEnable;
+   bool                                         MaskStackExceptionEnable;
+   bool                                         SoftwareExceptionEnable;
    uint32_t                                     ScratchSpaceBasePointer;
    uint32_t                                     PerThreadScratchSpace;
    uint32_t                                     OutputVertexSize;
    uint32_t                                     OutputTopology;
    uint32_t                                     VertexURBEntryReadLength;
-   uint32_t                                     IncludeVertexHandles;
+   bool                                         IncludeVertexHandles;
    uint32_t                                     VertexURBEntryReadOffset;
    uint32_t                                     DispatchGRFStartRegisterforURBData;
    uint32_t                                     MaximumNumberofThreads;
@@ -2151,13 +2286,13 @@ struct GEN75_3DSTATE_GS {
    uint32_t                                     DispatchMode;
    uint32_t                                     GSStatisticsEnable;
    uint32_t                                     GSInvocationsIncrementValue;
-   uint32_t                                     IncludePrimitiveID;
+   bool                                         IncludePrimitiveID;
    uint32_t                                     Hint;
 #define     REORDER_LEADING                                    0
 #define     REORDER_TRAILING                                   1
    uint32_t                                     ReorderMode;
-   uint32_t                                     DiscardAdjacency;
-   uint32_t                                     GSEnable;
+   bool                                         DiscardAdjacency;
+   bool                                         GSEnable;
 #define     GSCTL_CUT                                          0
 #define     GSCTL_SID                                          1
    uint32_t                                     ControlDataFormat;
@@ -2246,7 +2381,7 @@ struct GEN75_3DSTATE_HIER_DEPTH_BUFFER {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     HierarchicalDepthBufferObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     HierarchicalDepthBufferObjectControlState;
    uint32_t                                     SurfacePitch;
    __gen_address_type                           SurfaceBaseAddress;
 };
@@ -2265,8 +2400,10 @@ GEN75_3DSTATE_HIER_DEPTH_BUFFER_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
+   uint32_t dw_HierarchicalDepthBufferObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_HierarchicalDepthBufferObjectControlState, &values->HierarchicalDepthBufferObjectControlState);
    dw[1] =
-   /* Struct  HierarchicalDepthBufferObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_HierarchicalDepthBufferObjectControlState, 25, 28) |
       __gen_field(values->SurfacePitch, 0, 16) |
       0;
 
@@ -2306,11 +2443,11 @@ struct GEN75_3DSTATE_HS {
 #define     IEEE754                                            0
 #define     alternate                                          1
    uint32_t                                     FloatingPointMode;
-   uint32_t                                     IllegalOpcodeExceptionEnable;
-   uint32_t                                     SoftwareExceptionEnable;
+   bool                                         IllegalOpcodeExceptionEnable;
+   bool                                         SoftwareExceptionEnable;
    uint32_t                                     MaximumNumberofThreads;
-   uint32_t                                     Enable;
-   uint32_t                                     StatisticsEnable;
+   bool                                         Enable;
+   bool                                         StatisticsEnable;
    uint32_t                                     InstanceCount;
    uint32_t                                     KernelStartPointer;
    uint32_t                                     ScratchSpaceBasePointer;
@@ -2319,8 +2456,8 @@ struct GEN75_3DSTATE_HS {
 #define     Dmask                                              0
 #define     Vmask                                              1
    uint32_t                                     VectorMaskEnable;
-   uint32_t                                     HSaccessesUAV;
-   uint32_t                                     IncludeVertexHandles;
+   bool                                         HSaccessesUAV;
+   bool                                         IncludeVertexHandles;
    uint32_t                                     DispatchGRFStartRegisterForURBData;
    uint32_t                                     VertexURBEntryReadLength;
    uint32_t                                     VertexURBEntryReadOffset;
@@ -2396,7 +2533,7 @@ struct GEN75_3DSTATE_INDEX_BUFFER {
    uint32_t                                     CommandSubType;
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
-   uint32_t                                     MemoryObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     MemoryObjectControlState;
 #define     INDEX_BYTE                                         0
 #define     INDEX_WORD                                         1
 #define     INDEX_DWORD                                        2
@@ -2412,12 +2549,14 @@ GEN75_3DSTATE_INDEX_BUFFER_pack(__gen_user_data *data, void * restrict dst,
 {
    uint32_t *dw = (uint32_t * restrict) dst;
 
+   uint32_t dw_MemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_MemoryObjectControlState, &values->MemoryObjectControlState);
    dw[0] =
       __gen_field(values->CommandType, 29, 31) |
       __gen_field(values->CommandSubType, 27, 28) |
       __gen_field(values->_3DCommandOpcode, 24, 26) |
       __gen_field(values->_3DCommandSubOpcode, 16, 23) |
-   /* Struct  MemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_MemoryObjectControlState, 12, 15) |
       __gen_field(values->IndexFormat, 8, 9) |
       __gen_field(values->DwordLength, 0, 7) |
       0;
@@ -2451,11 +2590,11 @@ struct GEN75_3DSTATE_LINE_STIPPLE {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     ModifyEnableCurrentRepeatCounterCurrentStippleIndex;
+   bool                                         ModifyEnableCurrentRepeatCounterCurrentStippleIndex;
    uint32_t                                     CurrentRepeatCounter;
    uint32_t                                     CurrentStippleIndex;
    uint32_t                                     LineStipplePattern;
-   uint32_t                                     LineStippleInverseRepeatCount;
+   float                                        LineStippleInverseRepeatCount;
    uint32_t                                     LineStippleRepeatCount;
 };
 
@@ -2481,7 +2620,7 @@ GEN75_3DSTATE_LINE_STIPPLE_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[2] =
-      __gen_field(values->LineStippleInverseRepeatCount, 15, 31) |
+      __gen_field(values->LineStippleInverseRepeatCount * (1 << 16), 15, 31) |
       __gen_field(values->LineStippleRepeatCount, 0, 8) |
       0;
 
@@ -2542,7 +2681,7 @@ struct GEN75_3DSTATE_MULTISAMPLE {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     MultiSampleEnable;
+   bool                                         MultiSampleEnable;
 #define     PIXLOC_CENTER                                      0
 #define     PIXLOC_UL_CORNER                                   1
    uint32_t                                     PixelLocation;
@@ -2550,22 +2689,22 @@ struct GEN75_3DSTATE_MULTISAMPLE {
 #define     NUMSAMPLES_4                                       2
 #define     NUMSAMPLES_8                                       3
    uint32_t                                     NumberofMultisamples;
-   uint32_t                                     Sample3XOffset;
-   uint32_t                                     Sample3YOffset;
-   uint32_t                                     Sample2XOffset;
-   uint32_t                                     Sample2YOffset;
-   uint32_t                                     Sample1XOffset;
-   uint32_t                                     Sample1YOffset;
-   uint32_t                                     Sample0XOffset;
-   uint32_t                                     Sample0YOffset;
-   uint32_t                                     Sample7XOffset;
-   uint32_t                                     Sample7YOffset;
-   uint32_t                                     Sample6XOffset;
-   uint32_t                                     Sample6YOffset;
-   uint32_t                                     Sample5XOffset;
-   uint32_t                                     Sample5YOffset;
-   uint32_t                                     Sample4XOffset;
-   uint32_t                                     Sample4YOffset;
+   float                                        Sample3XOffset;
+   float                                        Sample3YOffset;
+   float                                        Sample2XOffset;
+   float                                        Sample2YOffset;
+   float                                        Sample1XOffset;
+   float                                        Sample1YOffset;
+   float                                        Sample0XOffset;
+   float                                        Sample0YOffset;
+   float                                        Sample7XOffset;
+   float                                        Sample7YOffset;
+   float                                        Sample6XOffset;
+   float                                        Sample6YOffset;
+   float                                        Sample5XOffset;
+   float                                        Sample5YOffset;
+   float                                        Sample4XOffset;
+   float                                        Sample4YOffset;
 };
 
 static inline void
@@ -2589,25 +2728,25 @@ GEN75_3DSTATE_MULTISAMPLE_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[2] =
-      __gen_field(values->Sample3XOffset, 28, 31) |
-      __gen_field(values->Sample3YOffset, 24, 27) |
-      __gen_field(values->Sample2XOffset, 20, 23) |
-      __gen_field(values->Sample2YOffset, 16, 19) |
-      __gen_field(values->Sample1XOffset, 12, 15) |
-      __gen_field(values->Sample1YOffset, 8, 11) |
-      __gen_field(values->Sample0XOffset, 4, 7) |
-      __gen_field(values->Sample0YOffset, 0, 3) |
+      __gen_field(values->Sample3XOffset * (1 << 4), 28, 31) |
+      __gen_field(values->Sample3YOffset * (1 << 4), 24, 27) |
+      __gen_field(values->Sample2XOffset * (1 << 4), 20, 23) |
+      __gen_field(values->Sample2YOffset * (1 << 4), 16, 19) |
+      __gen_field(values->Sample1XOffset * (1 << 4), 12, 15) |
+      __gen_field(values->Sample1YOffset * (1 << 4), 8, 11) |
+      __gen_field(values->Sample0XOffset * (1 << 4), 4, 7) |
+      __gen_field(values->Sample0YOffset * (1 << 4), 0, 3) |
       0;
 
    dw[3] =
-      __gen_field(values->Sample7XOffset, 28, 31) |
-      __gen_field(values->Sample7YOffset, 24, 27) |
-      __gen_field(values->Sample6XOffset, 20, 23) |
-      __gen_field(values->Sample6YOffset, 16, 19) |
-      __gen_field(values->Sample5XOffset, 12, 15) |
-      __gen_field(values->Sample5YOffset, 8, 11) |
-      __gen_field(values->Sample4XOffset, 4, 7) |
-      __gen_field(values->Sample4YOffset, 0, 3) |
+      __gen_field(values->Sample7XOffset * (1 << 4), 28, 31) |
+      __gen_field(values->Sample7YOffset * (1 << 4), 24, 27) |
+      __gen_field(values->Sample6XOffset * (1 << 4), 20, 23) |
+      __gen_field(values->Sample6YOffset * (1 << 4), 16, 19) |
+      __gen_field(values->Sample5XOffset * (1 << 4), 12, 15) |
+      __gen_field(values->Sample5YOffset * (1 << 4), 8, 11) |
+      __gen_field(values->Sample4XOffset * (1 << 4), 4, 7) |
+      __gen_field(values->Sample4YOffset * (1 << 4), 0, 3) |
       0;
 
 }
@@ -2728,27 +2867,27 @@ struct GEN75_3DSTATE_PS {
 #define     RD                                                 2
 #define     RTZ                                                3
    uint32_t                                     RoundingMode;
-   uint32_t                                     IllegalOpcodeExceptionEnable;
-   uint32_t                                     MaskStackExceptionEnable;
-   uint32_t                                     SoftwareExceptionEnable;
+   bool                                         IllegalOpcodeExceptionEnable;
+   bool                                         MaskStackExceptionEnable;
+   bool                                         SoftwareExceptionEnable;
    uint32_t                                     ScratchSpaceBasePointer;
    uint32_t                                     PerThreadScratchSpace;
    uint32_t                                     MaximumNumberofThreads;
    uint32_t                                     SampleMask;
-   uint32_t                                     PushConstantEnable;
-   uint32_t                                     AttributeEnable;
-   uint32_t                                     oMaskPresenttoRenderTarget;
-   uint32_t                                     RenderTargetFastClearEnable;
-   uint32_t                                     DualSourceBlendEnable;
-   uint32_t                                     RenderTargetResolveEnable;
-   uint32_t                                     PSAccessesUAV;
+   bool                                         PushConstantEnable;
+   bool                                         AttributeEnable;
+   bool                                         oMaskPresenttoRenderTarget;
+   bool                                         RenderTargetFastClearEnable;
+   bool                                         DualSourceBlendEnable;
+   bool                                         RenderTargetResolveEnable;
+   bool                                         PSAccessesUAV;
 #define     POSOFFSET_NONE                                     0
 #define     POSOFFSET_CENTROID                                 2
 #define     POSOFFSET_SAMPLE                                   3
    uint32_t                                     PositionXYOffsetSelect;
-   uint32_t                                     _32PixelDispatchEnable;
-   uint32_t                                     _16PixelDispatchEnable;
-   uint32_t                                     _8PixelDispatchEnable;
+   bool                                         _32PixelDispatchEnable;
+   bool                                         _16PixelDispatchEnable;
+   bool                                         _8PixelDispatchEnable;
    uint32_t                                     DispatchGRFStartRegisterforConstantSetupData0;
    uint32_t                                     DispatchGRFStartRegisterforConstantSetupData1;
    uint32_t                                     DispatchGRFStartRegisterforConstantSetupData2;
@@ -3046,38 +3185,38 @@ struct GEN75_3DSTATE_RAST_MULTISAMPLE {
 #define     NRM_NUMRASTSAMPLES_8                               3
 #define     NRM_NUMRASTSAMPLES_16                              4
    uint32_t                                     NumberofRasterizationMultisamples;
-   uint32_t                                     Sample3XOffset;
-   uint32_t                                     Sample3YOffset;
-   uint32_t                                     Sample2XOffset;
-   uint32_t                                     Sample2YOffset;
-   uint32_t                                     Sample1XOffset;
-   uint32_t                                     Sample1YOffset;
-   uint32_t                                     Sample0XOffset;
-   uint32_t                                     Sample0YOffset;
-   uint32_t                                     Sample7XOffset;
-   uint32_t                                     Sample7YOffset;
-   uint32_t                                     Sample6XOffset;
-   uint32_t                                     Sample6YOffset;
-   uint32_t                                     Sample5XOffset;
-   uint32_t                                     Sample5YOffset;
-   uint32_t                                     Sample4XOffset;
-   uint32_t                                     Sample4YOffset;
-   uint32_t                                     Sample11XOffset;
-   uint32_t                                     Sample11YOffset;
-   uint32_t                                     Sample10XOffset;
-   uint32_t                                     Sample10YOffset;
-   uint32_t                                     Sample9XOffset;
-   uint32_t                                     Sample9YOffset;
-   uint32_t                                     Sample8XOffset;
-   uint32_t                                     Sample8YOffset;
-   uint32_t                                     Sample15XOffset;
-   uint32_t                                     Sample15YOffset;
-   uint32_t                                     Sample14XOffset;
-   uint32_t                                     Sample14YOffset;
-   uint32_t                                     Sample13XOffset;
-   uint32_t                                     Sample13YOffset;
-   uint32_t                                     Sample12XOffset;
-   uint32_t                                     Sample12YOffset;
+   float                                        Sample3XOffset;
+   float                                        Sample3YOffset;
+   float                                        Sample2XOffset;
+   float                                        Sample2YOffset;
+   float                                        Sample1XOffset;
+   float                                        Sample1YOffset;
+   float                                        Sample0XOffset;
+   float                                        Sample0YOffset;
+   float                                        Sample7XOffset;
+   float                                        Sample7YOffset;
+   float                                        Sample6XOffset;
+   float                                        Sample6YOffset;
+   float                                        Sample5XOffset;
+   float                                        Sample5YOffset;
+   float                                        Sample4XOffset;
+   float                                        Sample4YOffset;
+   float                                        Sample11XOffset;
+   float                                        Sample11YOffset;
+   float                                        Sample10XOffset;
+   float                                        Sample10YOffset;
+   float                                        Sample9XOffset;
+   float                                        Sample9YOffset;
+   float                                        Sample8XOffset;
+   float                                        Sample8YOffset;
+   float                                        Sample15XOffset;
+   float                                        Sample15YOffset;
+   float                                        Sample14XOffset;
+   float                                        Sample14YOffset;
+   float                                        Sample13XOffset;
+   float                                        Sample13YOffset;
+   float                                        Sample12XOffset;
+   float                                        Sample12YOffset;
 };
 
 static inline void
@@ -3099,47 +3238,47 @@ GEN75_3DSTATE_RAST_MULTISAMPLE_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[2] =
-      __gen_field(values->Sample3XOffset, 28, 31) |
-      __gen_field(values->Sample3YOffset, 24, 27) |
-      __gen_field(values->Sample2XOffset, 20, 23) |
-      __gen_field(values->Sample2YOffset, 16, 19) |
-      __gen_field(values->Sample1XOffset, 12, 15) |
-      __gen_field(values->Sample1YOffset, 8, 11) |
-      __gen_field(values->Sample0XOffset, 4, 7) |
-      __gen_field(values->Sample0YOffset, 0, 3) |
+      __gen_field(values->Sample3XOffset * (1 << 4), 28, 31) |
+      __gen_field(values->Sample3YOffset * (1 << 4), 24, 27) |
+      __gen_field(values->Sample2XOffset * (1 << 4), 20, 23) |
+      __gen_field(values->Sample2YOffset * (1 << 4), 16, 19) |
+      __gen_field(values->Sample1XOffset * (1 << 4), 12, 15) |
+      __gen_field(values->Sample1YOffset * (1 << 4), 8, 11) |
+      __gen_field(values->Sample0XOffset * (1 << 4), 4, 7) |
+      __gen_field(values->Sample0YOffset * (1 << 4), 0, 3) |
       0;
 
    dw[3] =
-      __gen_field(values->Sample7XOffset, 28, 31) |
-      __gen_field(values->Sample7YOffset, 24, 27) |
-      __gen_field(values->Sample6XOffset, 20, 23) |
-      __gen_field(values->Sample6YOffset, 16, 19) |
-      __gen_field(values->Sample5XOffset, 12, 15) |
-      __gen_field(values->Sample5YOffset, 8, 11) |
-      __gen_field(values->Sample4XOffset, 4, 7) |
-      __gen_field(values->Sample4YOffset, 0, 3) |
+      __gen_field(values->Sample7XOffset * (1 << 4), 28, 31) |
+      __gen_field(values->Sample7YOffset * (1 << 4), 24, 27) |
+      __gen_field(values->Sample6XOffset * (1 << 4), 20, 23) |
+      __gen_field(values->Sample6YOffset * (1 << 4), 16, 19) |
+      __gen_field(values->Sample5XOffset * (1 << 4), 12, 15) |
+      __gen_field(values->Sample5YOffset * (1 << 4), 8, 11) |
+      __gen_field(values->Sample4XOffset * (1 << 4), 4, 7) |
+      __gen_field(values->Sample4YOffset * (1 << 4), 0, 3) |
       0;
 
    dw[4] =
-      __gen_field(values->Sample11XOffset, 28, 31) |
-      __gen_field(values->Sample11YOffset, 24, 27) |
-      __gen_field(values->Sample10XOffset, 20, 23) |
-      __gen_field(values->Sample10YOffset, 16, 19) |
-      __gen_field(values->Sample9XOffset, 12, 15) |
-      __gen_field(values->Sample9YOffset, 8, 11) |
-      __gen_field(values->Sample8XOffset, 4, 7) |
-      __gen_field(values->Sample8YOffset, 0, 3) |
+      __gen_field(values->Sample11XOffset * (1 << 4), 28, 31) |
+      __gen_field(values->Sample11YOffset * (1 << 4), 24, 27) |
+      __gen_field(values->Sample10XOffset * (1 << 4), 20, 23) |
+      __gen_field(values->Sample10YOffset * (1 << 4), 16, 19) |
+      __gen_field(values->Sample9XOffset * (1 << 4), 12, 15) |
+      __gen_field(values->Sample9YOffset * (1 << 4), 8, 11) |
+      __gen_field(values->Sample8XOffset * (1 << 4), 4, 7) |
+      __gen_field(values->Sample8YOffset * (1 << 4), 0, 3) |
       0;
 
    dw[5] =
-      __gen_field(values->Sample15XOffset, 28, 31) |
-      __gen_field(values->Sample15YOffset, 24, 27) |
-      __gen_field(values->Sample14XOffset, 20, 23) |
-      __gen_field(values->Sample14YOffset, 16, 19) |
-      __gen_field(values->Sample13XOffset, 12, 15) |
-      __gen_field(values->Sample13YOffset, 8, 11) |
-      __gen_field(values->Sample12XOffset, 4, 7) |
-      __gen_field(values->Sample12YOffset, 0, 3) |
+      __gen_field(values->Sample15XOffset * (1 << 4), 28, 31) |
+      __gen_field(values->Sample15YOffset * (1 << 4), 24, 27) |
+      __gen_field(values->Sample14XOffset * (1 << 4), 20, 23) |
+      __gen_field(values->Sample14YOffset * (1 << 4), 16, 19) |
+      __gen_field(values->Sample13XOffset * (1 << 4), 12, 15) |
+      __gen_field(values->Sample13YOffset * (1 << 4), 8, 11) |
+      __gen_field(values->Sample12XOffset * (1 << 4), 4, 7) |
+      __gen_field(values->Sample12YOffset * (1 << 4), 0, 3) |
       0;
 
 }
@@ -3151,6 +3290,28 @@ GEN75_3DSTATE_RAST_MULTISAMPLE_pack(__gen_user_data *data, void * restrict dst,
    ._3DCommandOpcode     =  1,                  \
    ._3DCommandSubOpcode  =  2
 
+struct GEN75_PALETTE_ENTRY {
+   uint32_t                                     Alpha;
+   uint32_t                                     Red;
+   uint32_t                                     Green;
+   uint32_t                                     Blue;
+};
+
+static inline void
+GEN75_PALETTE_ENTRY_pack(__gen_user_data *data, void * restrict dst,
+                       const struct GEN75_PALETTE_ENTRY * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   dw[0] =
+      __gen_field(values->Alpha, 24, 31) |
+      __gen_field(values->Red, 16, 23) |
+      __gen_field(values->Green, 8, 15) |
+      __gen_field(values->Blue, 0, 7) |
+      0;
+
+}
+
 struct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0 {
    uint32_t                                     CommandType;
    uint32_t                                     CommandSubType;
@@ -3455,16 +3616,16 @@ struct GEN75_3DSTATE_SBE {
    uint32_t                                     DwordLength;
    uint32_t                                     AttributeSwizzleControlMode;
    uint32_t                                     NumberofSFOutputAttributes;
-   uint32_t                                     AttributeSwizzleEnable;
+   bool                                         AttributeSwizzleEnable;
 #define     UPPERLEFT                                          0
 #define     LOWERLEFT                                          1
    uint32_t                                     PointSpriteTextureCoordinateOrigin;
    uint32_t                                     VertexURBEntryReadLength;
    uint32_t                                     VertexURBEntryReadOffset;
-   uint32_t                                     Attribute2n1ComponentOverrideW;
-   uint32_t                                     Attribute2n1ComponentOverrideZ;
-   uint32_t                                     Attribute2n1ComponentOverrideY;
-   uint32_t                                     Attribute2n1ComponentOverrideX;
+   bool                                         Attribute2n1ComponentOverrideW;
+   bool                                         Attribute2n1ComponentOverrideZ;
+   bool                                         Attribute2n1ComponentOverrideY;
+   bool                                         Attribute2n1ComponentOverrideX;
 #define     CONST_0000                                         0
 #define     CONST_0001_FLOAT                                   1
 #define     CONST_1111_FLOAT                                   2
@@ -3476,10 +3637,10 @@ struct GEN75_3DSTATE_SBE {
 #define     INPUTATTR_FACING_W                                 3
    uint32_t                                     Attribute2n1SwizzleSelect;
    uint32_t                                     Attribute2n1SourceAttribute;
-   uint32_t                                     Attribute2nComponentOverrideW;
-   uint32_t                                     Attribute2nComponentOverrideZ;
-   uint32_t                                     Attribute2nComponentOverrideY;
-   uint32_t                                     Attribute2nComponentOverrideX;
+   bool                                         Attribute2nComponentOverrideW;
+   bool                                         Attribute2nComponentOverrideZ;
+   bool                                         Attribute2nComponentOverrideY;
+   bool                                         Attribute2nComponentOverrideX;
 #define     CONST_0000                                         0
 #define     CONST_0001_FLOAT                                   1
 #define     CONST_1111_FLOAT                                   2
@@ -3642,11 +3803,11 @@ struct GEN75_3DSTATE_SF {
 #define     D24_UNORM_X8_UINT                                  3
 #define     D16_UNORM                                          5
    uint32_t                                     DepthBufferSurfaceFormat;
-   uint32_t                                     LegacyGlobalDepthBiasEnable;
-   uint32_t                                     StatisticsEnable;
-   uint32_t                                     GlobalDepthOffsetEnableSolid;
-   uint32_t                                     GlobalDepthOffsetEnableWireframe;
-   uint32_t                                     GlobalDepthOffsetEnablePoint;
+   bool                                         LegacyGlobalDepthBiasEnable;
+   bool                                         StatisticsEnable;
+   bool                                         GlobalDepthOffsetEnableSolid;
+   bool                                         GlobalDepthOffsetEnableWireframe;
+   bool                                         GlobalDepthOffsetEnablePoint;
 #define     RASTER_SOLID                                       0
 #define     RASTER_WIREFRAME                                   1
 #define     RASTER_POINT                                       2
@@ -3655,21 +3816,21 @@ struct GEN75_3DSTATE_SF {
 #define     RASTER_WIREFRAME                                   1
 #define     RASTER_POINT                                       2
    uint32_t                                     BackFaceFillMode;
-   uint32_t                                     ViewTransformEnable;
+   bool                                         ViewTransformEnable;
    uint32_t                                     FrontWinding;
-   uint32_t                                     AntiAliasingEnable;
+   bool                                         AntiAliasingEnable;
 #define     CULLMODE_BOTH                                      0
 #define     CULLMODE_NONE                                      1
 #define     CULLMODE_FRONT                                     2
 #define     CULLMODE_BACK                                      3
    uint32_t                                     CullMode;
-   uint32_t                                     LineWidth;
+   float                                        LineWidth;
    uint32_t                                     LineEndCapAntialiasingRegionWidth;
-   uint32_t                                     LineStippleEnable;
-   uint32_t                                     ScissorRectangleEnable;
-   uint32_t                                     RTIndependentRasterizationEnable;
+   bool                                         LineStippleEnable;
+   bool                                         ScissorRectangleEnable;
+   bool                                         RTIndependentRasterizationEnable;
    uint32_t                                     MultisampleRasterizationMode;
-   uint32_t                                     LastPixelEnable;
+   bool                                         LastPixelEnable;
 #define     Vertex0                                            0
 #define     Vertex1                                            1
 #define     Vertex2                                            2
@@ -3683,7 +3844,7 @@ struct GEN75_3DSTATE_SF {
    uint32_t                                     AALineDistanceMode;
    uint32_t                                     VertexSubPixelPrecisionSelect;
    uint32_t                                     UsePointWidthState;
-   uint32_t                                     PointWidth;
+   float                                        PointWidth;
    uint32_t                                     GlobalDepthOffsetConstant;
    uint32_t                                     GlobalDepthOffsetScale;
    uint32_t                                     GlobalDepthOffsetClamp;
@@ -3719,7 +3880,7 @@ GEN75_3DSTATE_SF_pack(__gen_user_data *data, void * restrict dst,
    dw[2] =
       __gen_field(values->AntiAliasingEnable, 31, 31) |
       __gen_field(values->CullMode, 29, 30) |
-      __gen_field(values->LineWidth, 18, 27) |
+      __gen_field(values->LineWidth * (1 << 7), 18, 27) |
       __gen_field(values->LineEndCapAntialiasingRegionWidth, 16, 17) |
       __gen_field(values->LineStippleEnable, 14, 14) |
       __gen_field(values->ScissorRectangleEnable, 11, 11) |
@@ -3735,7 +3896,7 @@ GEN75_3DSTATE_SF_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->AALineDistanceMode, 14, 14) |
       __gen_field(values->VertexSubPixelPrecisionSelect, 12, 12) |
       __gen_field(values->UsePointWidthState, 11, 11) |
-      __gen_field(values->PointWidth, 0, 10) |
+      __gen_field(values->PointWidth * (1 << 3), 0, 10) |
       0;
 
    dw[4] =
@@ -3768,7 +3929,7 @@ struct GEN75_3DSTATE_SO_BUFFER {
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
    uint32_t                                     SOBufferIndex;
-   uint32_t                                     SOBufferObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     SOBufferObjectControlState;
    uint32_t                                     SurfacePitch;
    __gen_address_type                           SurfaceBaseAddress;
    __gen_address_type                           SurfaceEndAddress;
@@ -3788,9 +3949,11 @@ GEN75_3DSTATE_SO_BUFFER_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
+   uint32_t dw_SOBufferObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_SOBufferObjectControlState, &values->SOBufferObjectControlState);
    dw[1] =
       __gen_field(values->SOBufferIndex, 29, 30) |
-   /* Struct  SOBufferObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_SOBufferObjectControlState, 25, 28) |
       __gen_field(values->SurfacePitch, 0, 11) |
       0;
 
@@ -3815,6 +3978,61 @@ GEN75_3DSTATE_SO_BUFFER_pack(__gen_user_data *data, void * restrict dst,
    ._3DCommandOpcode     =  1,                  \
    ._3DCommandSubOpcode  = 23
 
+struct GEN75_SO_DECL {
+   uint32_t                                     OutputBufferSlot;
+   uint32_t                                     HoleFlag;
+   uint32_t                                     RegisterIndex;
+   uint32_t                                     ComponentMask;
+};
+
+static inline void
+GEN75_SO_DECL_pack(__gen_user_data *data, void * restrict dst,
+                 const struct GEN75_SO_DECL * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   dw[0] =
+      __gen_field(values->OutputBufferSlot, 12, 13) |
+      __gen_field(values->HoleFlag, 11, 11) |
+      __gen_field(values->RegisterIndex, 4, 9) |
+      __gen_field(values->ComponentMask, 0, 3) |
+      0;
+
+}
+
+struct GEN75_SO_DECL_ENTRY {
+   struct GEN75_SO_DECL                         Stream3Decl;
+   struct GEN75_SO_DECL                         Stream2Decl;
+   struct GEN75_SO_DECL                         Stream1Decl;
+   struct GEN75_SO_DECL                         Stream0Decl;
+};
+
+static inline void
+GEN75_SO_DECL_ENTRY_pack(__gen_user_data *data, void * restrict dst,
+                       const struct GEN75_SO_DECL_ENTRY * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   uint32_t dw_Stream3Decl;
+   GEN75_SO_DECL_pack(data, &dw_Stream3Decl, &values->Stream3Decl);
+   uint32_t dw_Stream2Decl;
+   GEN75_SO_DECL_pack(data, &dw_Stream2Decl, &values->Stream2Decl);
+   uint32_t dw_Stream1Decl;
+   GEN75_SO_DECL_pack(data, &dw_Stream1Decl, &values->Stream1Decl);
+   uint32_t dw_Stream0Decl;
+   GEN75_SO_DECL_pack(data, &dw_Stream0Decl, &values->Stream0Decl);
+   uint64_t qw0 =
+      __gen_field(dw_Stream3Decl, 48, 63) |
+      __gen_field(dw_Stream2Decl, 32, 47) |
+      __gen_field(dw_Stream1Decl, 16, 31) |
+      __gen_field(dw_Stream0Decl, 0, 15) |
+      0;
+
+   dw[0] = qw0;
+   dw[1] = qw0 >> 32;
+
+}
+
 struct GEN75_3DSTATE_SO_DECL_LIST {
    uint32_t                                     CommandType;
    uint32_t                                     CommandSubType;
@@ -3879,7 +4097,7 @@ struct GEN75_3DSTATE_STENCIL_BUFFER {
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
    uint32_t                                     StencilBufferEnable;
-   uint32_t                                     StencilBufferObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     StencilBufferObjectControlState;
    uint32_t                                     SurfacePitch;
    __gen_address_type                           SurfaceBaseAddress;
 };
@@ -3898,9 +4116,11 @@ GEN75_3DSTATE_STENCIL_BUFFER_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->DwordLength, 0, 7) |
       0;
 
+   uint32_t dw_StencilBufferObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_StencilBufferObjectControlState, &values->StencilBufferObjectControlState);
    dw[1] =
       __gen_field(values->StencilBufferEnable, 31, 31) |
-   /* Struct  StencilBufferObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_StencilBufferObjectControlState, 25, 28) |
       __gen_field(values->SurfacePitch, 0, 16) |
       0;
 
@@ -3933,7 +4153,7 @@ struct GEN75_3DSTATE_STREAMOUT {
 #define     LEADING                                            0
 #define     TRAILING                                           1
    uint32_t                                     ReorderMode;
-   uint32_t                                     SOStatisticsEnable;
+   bool                                         SOStatisticsEnable;
    uint32_t                                     SOBufferEnable3;
    uint32_t                                     SOBufferEnable2;
    uint32_t                                     SOBufferEnable1;
@@ -4007,9 +4227,9 @@ struct GEN75_3DSTATE_TE {
 #define     EVEN_FRACTIONAL                                    2
    uint32_t                                     Partitioning;
 #define     POINT                                              0
-#define     LINE                                               1
-#define     TRI_CW                                             2
-#define     TRI_CCW                                            3
+#define     OUTPUT_LINE                                        1
+#define     OUTPUT_TRI_CW                                      2
+#define     OUTPUT_TRI_CCW                                     3
    uint32_t                                     OutputTopology;
 #define     QUAD                                               0
 #define     TRI                                                1
@@ -4018,7 +4238,7 @@ struct GEN75_3DSTATE_TE {
 #define     HW_TESS                                            0
 #define     SW_TESS                                            1
    uint32_t                                     TEMode;
-   uint32_t                                     TEEnable;
+   bool                                         TEEnable;
    float                                        MaximumTessellationFactorOdd;
    float                                        MaximumTessellationFactorNotOdd;
 };
@@ -4188,6 +4408,57 @@ GEN75_3DSTATE_URB_HS_pack(__gen_user_data *data, void * restrict dst,
    ._3DCommandOpcode     =  0,                  \
    ._3DCommandSubOpcode  =  8
 
+struct GEN75_VERTEX_BUFFER_STATE {
+   uint32_t                                     VertexBufferIndex;
+#define     VERTEXDATA                                         0
+#define     INSTANCEDATA                                       1
+   uint32_t                                     BufferAccessType;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     VertexBufferMemoryObjectControlState;
+   uint32_t                                     AddressModifyEnable;
+   bool                                         NullVertexBuffer;
+   uint32_t                                     VertexFetchInvalidate;
+   uint32_t                                     BufferPitch;
+   __gen_address_type                           BufferStartingAddress;
+   __gen_address_type                           EndAddress;
+   uint32_t                                     InstanceDataStepRate;
+};
+
+static inline void
+GEN75_VERTEX_BUFFER_STATE_pack(__gen_user_data *data, void * restrict dst,
+                             const struct GEN75_VERTEX_BUFFER_STATE * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   uint32_t dw_VertexBufferMemoryObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_VertexBufferMemoryObjectControlState, &values->VertexBufferMemoryObjectControlState);
+   dw[0] =
+      __gen_field(values->VertexBufferIndex, 26, 31) |
+      __gen_field(values->BufferAccessType, 20, 20) |
+      __gen_field(dw_VertexBufferMemoryObjectControlState, 16, 19) |
+      __gen_field(values->AddressModifyEnable, 14, 14) |
+      __gen_field(values->NullVertexBuffer, 13, 13) |
+      __gen_field(values->VertexFetchInvalidate, 12, 12) |
+      __gen_field(values->BufferPitch, 0, 11) |
+      0;
+
+   uint32_t dw1 =
+      0;
+
+   dw[1] =
+      __gen_combine_address(data, &dw[1], values->BufferStartingAddress, dw1);
+
+   uint32_t dw2 =
+      0;
+
+   dw[2] =
+      __gen_combine_address(data, &dw[2], values->EndAddress, dw2);
+
+   dw[3] =
+      __gen_field(values->InstanceDataStepRate, 0, 31) |
+      0;
+
+}
+
 struct GEN75_3DSTATE_VERTEX_BUFFERS {
    uint32_t                                     CommandType;
    uint32_t                                     CommandSubType;
@@ -4221,6 +4492,41 @@ GEN75_3DSTATE_VERTEX_BUFFERS_pack(__gen_user_data *data, void * restrict dst,
    ._3DCommandOpcode     =  0,                  \
    ._3DCommandSubOpcode  =  9
 
+struct GEN75_VERTEX_ELEMENT_STATE {
+   uint32_t                                     VertexBufferIndex;
+   bool                                         Valid;
+   uint32_t                                     SourceElementFormat;
+   bool                                         EdgeFlagEnable;
+   uint32_t                                     SourceElementOffset;
+   uint32_t                                     Component0Control;
+   uint32_t                                     Component1Control;
+   uint32_t                                     Component2Control;
+   uint32_t                                     Component3Control;
+};
+
+static inline void
+GEN75_VERTEX_ELEMENT_STATE_pack(__gen_user_data *data, void * restrict dst,
+                              const struct GEN75_VERTEX_ELEMENT_STATE * restrict values)
+{
+   uint32_t *dw = (uint32_t * restrict) dst;
+
+   dw[0] =
+      __gen_field(values->VertexBufferIndex, 26, 31) |
+      __gen_field(values->Valid, 25, 25) |
+      __gen_field(values->SourceElementFormat, 16, 24) |
+      __gen_field(values->EdgeFlagEnable, 15, 15) |
+      __gen_field(values->SourceElementOffset, 0, 11) |
+      0;
+
+   dw[1] =
+      __gen_field(values->Component0Control, 28, 30) |
+      __gen_field(values->Component1Control, 24, 26) |
+      __gen_field(values->Component2Control, 20, 22) |
+      __gen_field(values->Component3Control, 16, 18) |
+      0;
+
+}
+
 struct GEN75_3DSTATE_VERTEX_ELEMENTS {
    uint32_t                                     CommandType;
    uint32_t                                     CommandSubType;
@@ -4261,7 +4567,7 @@ struct GEN75_3DSTATE_VF {
    uint32_t                                     CommandSubType;
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
-   uint32_t                                     IndexedDrawCutIndexEnable;
+   bool                                         IndexedDrawCutIndexEnable;
    uint32_t                                     DwordLength;
    uint32_t                                     CutIndex;
 };
@@ -4300,7 +4606,7 @@ struct GEN75_3DSTATE_VF_STATISTICS {
    uint32_t                                     CommandSubType;
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
-   uint32_t                                     StatisticsEnable;
+   bool                                         StatisticsEnable;
 };
 
 static inline void
@@ -4430,18 +4736,18 @@ struct GEN75_3DSTATE_VS {
 #define     IEEE754                                            0
 #define     Alternate                                          1
    uint32_t                                     FloatingPointMode;
-   uint32_t                                     IllegalOpcodeExceptionEnable;
-   uint32_t                                     VSaccessesUAV;
-   uint32_t                                     SoftwareExceptionEnable;
+   bool                                         IllegalOpcodeExceptionEnable;
+   bool                                         VSaccessesUAV;
+   bool                                         SoftwareExceptionEnable;
    uint32_t                                     ScratchSpaceBaseOffset;
    uint32_t                                     PerThreadScratchSpace;
    uint32_t                                     DispatchGRFStartRegisterforURBData;
    uint32_t                                     VertexURBEntryReadLength;
    uint32_t                                     VertexURBEntryReadOffset;
    uint32_t                                     MaximumNumberofThreads;
-   uint32_t                                     StatisticsEnable;
-   uint32_t                                     VertexCacheDisable;
-   uint32_t                                     VSFunctionEnable;
+   bool                                         StatisticsEnable;
+   bool                                         VertexCacheDisable;
+   bool                                         VSFunctionEnable;
 };
 
 static inline void
@@ -4509,13 +4815,13 @@ struct GEN75_3DSTATE_WM {
    uint32_t                                     _3DCommandOpcode;
    uint32_t                                     _3DCommandSubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     StatisticsEnable;
-   uint32_t                                     DepthBufferClear;
-   uint32_t                                     ThreadDispatchEnable;
-   uint32_t                                     DepthBufferResolveEnable;
-   uint32_t                                     HierarchicalDepthBufferResolveEnable;
-   uint32_t                                     LegacyDiamondLineRasterization;
-   uint32_t                                     PixelShaderKillPixel;
+   bool                                         StatisticsEnable;
+   bool                                         DepthBufferClear;
+   bool                                         ThreadDispatchEnable;
+   bool                                         DepthBufferResolveEnable;
+   bool                                         HierarchicalDepthBufferResolveEnable;
+   bool                                         LegacyDiamondLineRasterization;
+   bool                                         PixelShaderKillPixel;
 #define     PSCDEPTH_OFF                                       0
 #define     PSCDEPTH_ON                                        1
 #define     PSCDEPTH_ON_GE                                     2
@@ -4525,19 +4831,19 @@ struct GEN75_3DSTATE_WM {
 #define     EDSC_PSEXEC                                        1
 #define     EDSC_PREPS                                         2
    uint32_t                                     EarlyDepthStencilControl;
-   uint32_t                                     PixelShaderUsesSourceDepth;
-   uint32_t                                     PixelShaderUsesSourceW;
+   bool                                         PixelShaderUsesSourceDepth;
+   bool                                         PixelShaderUsesSourceW;
 #define     INTERP_PIXEL                                       0
 #define     INTERP_CENTROID                                    2
 #define     INTERP_SAMPLE                                      3
    uint32_t                                     PositionZWInterpolationMode;
    uint32_t                                     BarycentricInterpolationMode;
-   uint32_t                                     PixelShaderUsesInputCoverageMask;
+   bool                                         PixelShaderUsesInputCoverageMask;
    uint32_t                                     LineEndCapAntialiasingRegionWidth;
    uint32_t                                     LineAntialiasingRegionWidth;
-   uint32_t                                     RTIndependentRasterizationEnable;
-   uint32_t                                     PolygonStippleEnable;
-   uint32_t                                     LineStippleEnable;
+   bool                                         RTIndependentRasterizationEnable;
+   bool                                         PolygonStippleEnable;
+   bool                                         LineStippleEnable;
 #define     RASTRULE_UPPER_LEFT                                0
 #define     RASTRULE_UPPER_RIGHT                               1
    uint32_t                                     PointRasterizationRule;
@@ -4613,7 +4919,7 @@ struct GEN75_GPGPU_OBJECT {
    uint32_t                                     Pipeline;
    uint32_t                                     MediaCommandOpcode;
    uint32_t                                     SubOpcode;
-   uint32_t                                     PredicateEnable;
+   bool                                         PredicateEnable;
    uint32_t                                     DwordLength;
    uint32_t                                     SharedLocalMemoryFixedOffset;
    uint32_t                                     InterfaceDescriptorOffset;
@@ -4698,8 +5004,8 @@ struct GEN75_GPGPU_WALKER {
    uint32_t                                     Pipeline;
    uint32_t                                     MediaCommandOpcode;
    uint32_t                                     SubOpcodeA;
-   uint32_t                                     IndirectParameterEnable;
-   uint32_t                                     PredicateEnable;
+   bool                                         IndirectParameterEnable;
+   bool                                         PredicateEnable;
    uint32_t                                     DwordLength;
    uint32_t                                     InterfaceDescriptorOffset;
 #define     SIMD8                                              0
@@ -4886,7 +5192,7 @@ struct GEN75_MEDIA_OBJECT {
    uint32_t                                     MediaCommandSubOpcode;
    uint32_t                                     DwordLength;
    uint32_t                                     InterfaceDescriptorOffset;
-   uint32_t                                     ChildrenPresent;
+   bool                                         ChildrenPresent;
 #define     Nothreadsynchronization                            0
 #define     Threaddispatchissynchronizedbythespawnrootthreadmessage       1
    uint32_t                                     ThreadSynchronization;
@@ -4906,7 +5212,7 @@ struct GEN75_MEDIA_OBJECT {
    uint32_t                                     ScoredboardY;
    uint32_t                                     ScoreboardX;
    uint32_t                                     ScoreboardColor;
-   uint32_t                                     ScoreboardMask;
+   bool                                         ScoreboardMask;
    /* variable length fields follow */
 };
 
@@ -4972,8 +5278,8 @@ struct GEN75_MEDIA_OBJECT_PRT {
    uint32_t                                     SubOpcode;
    uint32_t                                     DwordLength;
    uint32_t                                     InterfaceDescriptorOffset;
-   uint32_t                                     ChildrenPresent;
-   uint32_t                                     PRT_FenceNeeded;
+   bool                                         ChildrenPresent;
+   bool                                         PRT_FenceNeeded;
 #define     Rootthreadqueue                                    0
 #define     VFEstateflush                                      1
    uint32_t                                     PRT_FenceType;
@@ -5027,7 +5333,7 @@ struct GEN75_MEDIA_OBJECT_WALKER {
    uint32_t                                     SubOpcode;
    uint32_t                                     DwordLength;
    uint32_t                                     InterfaceDescriptorOffset;
-   uint32_t                                     ChildrenPresent;
+   bool                                         ChildrenPresent;
 #define     Nothreadsynchronization                            0
 #define     Threaddispatchissynchronizedbythespawnrootthreadmessage       1
    uint32_t                                     ThreadSynchronization;
@@ -5036,10 +5342,10 @@ struct GEN75_MEDIA_OBJECT_WALKER {
    uint32_t                                     UseScoreboard;
    uint32_t                                     IndirectDataLength;
    uint32_t                                     IndirectDataStartAddress;
-   uint32_t                                     ScoreboardMask;
-   uint32_t                                     DualMode;
-   uint32_t                                     Repel;
-   uint32_t                                     QuadMode;
+   bool                                         ScoreboardMask;
+   bool                                         DualMode;
+   bool                                         Repel;
+   bool                                         QuadMode;
    uint32_t                                     ColorCountMinusOne;
    uint32_t                                     MiddleLoopExtraSteps;
    uint32_t                                     LocalMidLoopUnitY;
@@ -5177,8 +5483,8 @@ struct GEN75_MEDIA_STATE_FLUSH {
    uint32_t                                     MediaCommandOpcode;
    uint32_t                                     SubOpcode;
    uint32_t                                     DwordLength;
-   uint32_t                                     DisablePreemption;
-   uint32_t                                     FlushtoGO;
+   bool                                         DisablePreemption;
+   bool                                         FlushtoGO;
    uint32_t                                     WatermarkRequired;
    uint32_t                                     InterfaceDescriptorOffset;
 };
@@ -5361,7 +5667,7 @@ GEN75_MI_ARB_CHECK_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_ARB_ON_OFF {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-   uint32_t                                     ArbitrationEnable;
+   bool                                         ArbitrationEnable;
 };
 
 static inline void
@@ -5415,11 +5721,11 @@ struct GEN75_MI_BATCH_BUFFER_START {
 #define     _1stlevelbatch                                     0
 #define     _2ndlevelbatch                                     1
    uint32_t                                     _2ndLevelBatchBuffer;
-   uint32_t                                     AddOffsetEnable;
-   uint32_t                                     PredicationEnable;
+   bool                                         AddOffsetEnable;
+   bool                                         PredicationEnable;
    uint32_t                                     NonPrivileged;
-   uint32_t                                     ClearCommandBufferEnable;
-   uint32_t                                     ResourceStreamerEnable;
+   bool                                         ClearCommandBufferEnable;
+   bool                                         ResourceStreamerEnable;
 #define     ASI_GGTT                                           0
 #define     ASI_PPGTT                                          1
    uint32_t                                     AddressSpaceIndicator;
@@ -5555,17 +5861,17 @@ GEN75_MI_CONDITIONAL_BATCH_BUFFER_END_pack(__gen_user_data *data, void * restric
 struct GEN75_MI_FLUSH {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-   uint32_t                                     IndirectStatePointersDisable;
-   uint32_t                                     GenericMediaStateClear;
+   bool                                         IndirectStatePointersDisable;
+   bool                                         GenericMediaStateClear;
 #define     DontReset                                          0
 #define     Reset                                              1
-   uint32_t                                     GlobalSnapshotCountReset;
+   bool                                         GlobalSnapshotCountReset;
 #define     Flush                                              0
 #define     DontFlush                                          1
-   uint32_t                                     RenderCacheFlushInhibit;
+   bool                                         RenderCacheFlushInhibit;
 #define     DontInvalidate                                     0
 #define     Invalidate                                         1
-   uint32_t                                     StateInstructionCacheInvalidate;
+   bool                                         StateInstructionCacheInvalidate;
 };
 
 static inline void
@@ -5616,7 +5922,7 @@ GEN75_MI_LOAD_REGISTER_IMM_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[1] =
-      __gen_field(values->RegisterOffset, 2, 22) |
+      __gen_offset(values->RegisterOffset, 2, 22) |
       0;
 
    dw[2] =
@@ -5635,7 +5941,7 @@ GEN75_MI_LOAD_REGISTER_IMM_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_LOAD_REGISTER_MEM {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-   uint32_t                                     UseGlobalGTT;
+   bool                                         UseGlobalGTT;
    uint32_t                                     AsyncModeEnable;
    uint32_t                                     DwordLength;
    uint32_t                                     RegisterAddress;
@@ -5657,7 +5963,7 @@ GEN75_MI_LOAD_REGISTER_MEM_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[1] =
-      __gen_field(values->RegisterAddress, 2, 22) |
+      __gen_offset(values->RegisterAddress, 2, 22) |
       0;
 
    uint32_t dw2 =
@@ -5696,11 +6002,11 @@ GEN75_MI_LOAD_REGISTER_REG_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[1] =
-      __gen_field(values->SourceRegisterAddress, 2, 22) |
+      __gen_offset(values->SourceRegisterAddress, 2, 22) |
       0;
 
    dw[2] =
-      __gen_field(values->DestinationRegisterAddress, 2, 22) |
+      __gen_offset(values->DestinationRegisterAddress, 2, 22) |
       0;
 
 }
@@ -5868,7 +6174,7 @@ GEN75_MI_MATH_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_NOOP {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-   uint32_t                                     IdentificationNumberRegisterWriteEnable;
+   bool                                         IdentificationNumberRegisterWriteEnable;
    uint32_t                                     IdentificationNumber;
 };
 
@@ -5896,9 +6202,9 @@ GEN75_MI_NOOP_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_PREDICATE {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-#define     KEEP                                               0
-#define     LOAD                                               2
-#define     LOADINV                                            3
+#define     LOAD_KEEP                                          0
+#define     LOAD_LOAD                                          2
+#define     LOAD_LOADINV                                       3
    uint32_t                                     LoadOperation;
 #define     COMBINE_SET                                        0
 #define     COMBINE_AND                                        1
@@ -5959,8 +6265,8 @@ GEN75_MI_REPORT_HEAD_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_RS_CONTEXT {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-#define     Restore                                            0
-#define     Save                                               1
+#define     RS_RESTORE                                         0
+#define     RS_SAVE                                            1
    uint32_t                                     ResourceStreamerSave;
 };
 
@@ -5987,8 +6293,8 @@ GEN75_MI_RS_CONTEXT_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_RS_CONTROL {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-#define     Stop                                               0
-#define     Start                                              1
+#define     RS_STOP                                            0
+#define     RS_START                                           1
    uint32_t                                     ResourceStreamerControl;
 };
 
@@ -6106,9 +6412,9 @@ struct GEN75_MI_SET_CONTEXT {
    uint32_t                                     DwordLength;
    __gen_address_type                           LogicalContextAddress;
    uint32_t                                     ReservedMustbe1;
-   uint32_t                                     CoreModeEnable;
-   uint32_t                                     ResourceStreamerStateSaveEnable;
-   uint32_t                                     ResourceStreamerStateRestoreEnable;
+   bool                                         CoreModeEnable;
+   bool                                         ResourceStreamerStateSaveEnable;
+   bool                                         ResourceStreamerStateRestoreEnable;
    uint32_t                                     ForceRestore;
    uint32_t                                     RestoreInhibit;
 };
@@ -6153,7 +6459,7 @@ struct GEN75_MI_SET_PREDICATE {
 #define     PredicateonClear                                   1
 #define     PredicateonSet                                     2
 #define     PredicateDisable                                   3
-   uint32_t                                     PREDICATEENABLE;
+   bool                                         PREDICATEENABLE;
 };
 
 static inline void
@@ -6180,7 +6486,7 @@ GEN75_MI_SET_PREDICATE_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_STORE_DATA_IMM {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-   uint32_t                                     UseGlobalGTT;
+   bool                                         UseGlobalGTT;
    uint32_t                                     DwordLength;
    uint32_t                                     Address;
    uint32_t                                     CoreModeEnable;
@@ -6309,7 +6615,7 @@ GEN75_MI_STORE_URB_MEM_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_SUSPEND_FLUSH {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-   uint32_t                                     SuspendFlush;
+   bool                                         SuspendFlush;
 };
 
 static inline void
@@ -6447,7 +6753,7 @@ GEN75_MI_URB_CLEAR_pack(__gen_user_data *data, void * restrict dst,
 
    dw[1] =
       __gen_field(values->URBClearLength, 16, 29) |
-      __gen_field(values->URBAddress, 0, 14) |
+      __gen_offset(values->URBAddress, 0, 14) |
       0;
 
 }
@@ -6485,23 +6791,23 @@ GEN75_MI_USER_INTERRUPT_pack(__gen_user_data *data, void * restrict dst,
 struct GEN75_MI_WAIT_FOR_EVENT {
    uint32_t                                     CommandType;
    uint32_t                                     MICommandOpcode;
-   uint32_t                                     DisplayPipeCHorizontalBlankWaitEnable;
-   uint32_t                                     DisplayPipeCVerticalBlankWaitEnable;
-   uint32_t                                     DisplaySpriteCFlipPendingWaitEnable;
+   bool                                         DisplayPipeCHorizontalBlankWaitEnable;
+   bool                                         DisplayPipeCVerticalBlankWaitEnable;
+   bool                                         DisplaySpriteCFlipPendingWaitEnable;
 #define     Notenabled                                         0
    uint32_t                                     ConditionCodeWaitSelect;
-   uint32_t                                     DisplayPlaneCFlipPendingWaitEnable;
-   uint32_t                                     DisplayPipeCScanLineWaitEnable;
-   uint32_t                                     DisplayPipeBHorizontalBlankWaitEnable;
-   uint32_t                                     DisplayPipeBVerticalBlankWaitEnable;
-   uint32_t                                     DisplaySpriteBFlipPendingWaitEnable;
-   uint32_t                                     DisplayPlaneBFlipPendingWaitEnable;
-   uint32_t                                     DisplayPipeBScanLineWaitEnable;
-   uint32_t                                     DisplayPipeAHorizontalBlankWaitEnable;
-   uint32_t                                     DisplayPipeAVerticalBlankWaitEnable;
-   uint32_t                                     DisplaySpriteAFlipPendingWaitEnable;
-   uint32_t                                     DisplayPlaneAFlipPendingWaitEnable;
-   uint32_t                                     DisplayPipeAScanLineWaitEnable;
+   bool                                         DisplayPlaneCFlipPendingWaitEnable;
+   bool                                         DisplayPipeCScanLineWaitEnable;
+   bool                                         DisplayPipeBHorizontalBlankWaitEnable;
+   bool                                         DisplayPipeBVerticalBlankWaitEnable;
+   bool                                         DisplaySpriteBFlipPendingWaitEnable;
+   bool                                         DisplayPlaneBFlipPendingWaitEnable;
+   bool                                         DisplayPipeBScanLineWaitEnable;
+   bool                                         DisplayPipeAHorizontalBlankWaitEnable;
+   bool                                         DisplayPipeAVerticalBlankWaitEnable;
+   bool                                         DisplaySpriteAFlipPendingWaitEnable;
+   bool                                         DisplayPlaneAFlipPendingWaitEnable;
+   bool                                         DisplayPipeAScanLineWaitEnable;
 };
 
 static inline void
@@ -6560,29 +6866,29 @@ struct GEN75_PIPE_CONTROL {
 #define     Reset                                              1
    uint32_t                                     GlobalSnapshotCountReset;
    uint32_t                                     TLBInvalidate;
-   uint32_t                                     GenericMediaStateClear;
+   bool                                         GenericMediaStateClear;
 #define     NoWrite                                            0
 #define     WriteImmediateData                                 1
 #define     WritePSDepthCount                                  2
 #define     WriteTimestamp                                     3
    uint32_t                                     PostSyncOperation;
-   uint32_t                                     DepthStallEnable;
+   bool                                         DepthStallEnable;
 #define     DisableFlush                                       0
 #define     EnableFlush                                        1
-   uint32_t                                     RenderTargetCacheFlushEnable;
-   uint32_t                                     InstructionCacheInvalidateEnable;
-   uint32_t                                     TextureCacheInvalidationEnable;
-   uint32_t                                     IndirectStatePointersDisable;
-   uint32_t                                     NotifyEnable;
-   uint32_t                                     PipeControlFlushEnable;
-   uint32_t                                     DCFlushEnable;
-   uint32_t                                     VFCacheInvalidationEnable;
-   uint32_t                                     ConstantCacheInvalidationEnable;
-   uint32_t                                     StateCacheInvalidationEnable;
-   uint32_t                                     StallAtPixelScoreboard;
+   bool                                         RenderTargetCacheFlushEnable;
+   bool                                         InstructionCacheInvalidateEnable;
+   bool                                         TextureCacheInvalidationEnable;
+   bool                                         IndirectStatePointersDisable;
+   bool                                         NotifyEnable;
+   bool                                         PipeControlFlushEnable;
+   bool                                         DCFlushEnable;
+   bool                                         VFCacheInvalidationEnable;
+   bool                                         ConstantCacheInvalidationEnable;
+   bool                                         StateCacheInvalidationEnable;
+   bool                                         StallAtPixelScoreboard;
 #define     FlushDisabled                                      0
 #define     FlushEnabled                                       1
-   uint32_t                                     DepthCacheFlushEnable;
+   bool                                         DepthCacheFlushEnable;
    __gen_address_type                           Address;
    uint32_t                                     ImmediateData;
    uint32_t                                     ImmediateData0;
@@ -6642,226 +6948,21 @@ GEN75_PIPE_CONTROL_pack(__gen_user_data *data, void * restrict dst,
 
 }
 
-struct GEN75_3DSTATE_CONSTANT_BODY {
-   uint32_t                                     ConstantBuffer1ReadLength;
-   uint32_t                                     ConstantBuffer0ReadLength;
-   uint32_t                                     ConstantBuffer3ReadLength;
-   uint32_t                                     ConstantBuffer2ReadLength;
-   __gen_address_type                           PointerToConstantBuffer0;
-   uint32_t                                     ConstantBufferObjectControlState;
-   __gen_address_type                           PointerToConstantBuffer1;
-   __gen_address_type                           PointerToConstantBuffer2;
-   __gen_address_type                           PointerToConstantBuffer3;
-};
-
-static inline void
-GEN75_3DSTATE_CONSTANT_BODY_pack(__gen_user_data *data, void * restrict dst,
-                               const struct GEN75_3DSTATE_CONSTANT_BODY * restrict values)
-{
-   uint32_t *dw = (uint32_t * restrict) dst;
-
-   dw[0] =
-      __gen_field(values->ConstantBuffer1ReadLength, 16, 31) |
-      __gen_field(values->ConstantBuffer0ReadLength, 0, 15) |
-      0;
-
-   dw[1] =
-      __gen_field(values->ConstantBuffer3ReadLength, 16, 31) |
-      __gen_field(values->ConstantBuffer2ReadLength, 0, 15) |
-      0;
-
-   uint32_t dw2 =
-   /* Struct  ConstantBufferObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
-      0;
-
-   dw[2] =
-      __gen_combine_address(data, &dw[2], values->PointerToConstantBuffer0, dw2);
-
-   uint32_t dw3 =
-      0;
-
-   dw[3] =
-      __gen_combine_address(data, &dw[3], values->PointerToConstantBuffer1, dw3);
-
-   uint32_t dw4 =
-      0;
-
-   dw[4] =
-      __gen_combine_address(data, &dw[4], values->PointerToConstantBuffer2, dw4);
-
-   uint32_t dw5 =
-      0;
-
-   dw[5] =
-      __gen_combine_address(data, &dw[5], values->PointerToConstantBuffer3, dw5);
-
-}
-
-struct GEN75_BINDING_TABLE_EDIT_ENTRY {
-   uint32_t                                     BindingTableIndex;
-   uint32_t                                     SurfaceStatePointer;
-};
-
-static inline void
-GEN75_BINDING_TABLE_EDIT_ENTRY_pack(__gen_user_data *data, void * restrict dst,
-                                  const struct GEN75_BINDING_TABLE_EDIT_ENTRY * restrict values)
-{
-   uint32_t *dw = (uint32_t * restrict) dst;
-
-   dw[0] =
-      __gen_field(values->BindingTableIndex, 16, 23) |
-      __gen_offset(values->SurfaceStatePointer, 0, 15) |
-      0;
-
-}
-
-struct GEN75_GATHER_CONSTANT_ENTRY {
-   uint32_t                                     ConstantBufferOffset;
-   uint32_t                                     ChannelMask;
-   uint32_t                                     BindingTableIndexOffset;
-};
-
-static inline void
-GEN75_GATHER_CONSTANT_ENTRY_pack(__gen_user_data *data, void * restrict dst,
-                               const struct GEN75_GATHER_CONSTANT_ENTRY * restrict values)
-{
-   uint32_t *dw = (uint32_t * restrict) dst;
-
-   dw[0] =
-      __gen_offset(values->ConstantBufferOffset, 8, 15) |
-      __gen_field(values->ChannelMask, 4, 7) |
-      __gen_field(values->BindingTableIndexOffset, 0, 3) |
-      0;
-
-}
-
-struct GEN75_VERTEX_BUFFER_STATE {
-   uint32_t                                     VertexBufferIndex;
-#define     VERTEXDATA                                         0
-#define     INSTANCEDATA                                       1
-   uint32_t                                     BufferAccessType;
-   uint32_t                                     VertexBufferMemoryObjectControlState;
-   uint32_t                                     AddressModifyEnable;
-   uint32_t                                     NullVertexBuffer;
-   uint32_t                                     VertexFetchInvalidate;
-   uint32_t                                     BufferPitch;
-   __gen_address_type                           BufferStartingAddress;
-   __gen_address_type                           EndAddress;
-   uint32_t                                     InstanceDataStepRate;
-};
-
-static inline void
-GEN75_VERTEX_BUFFER_STATE_pack(__gen_user_data *data, void * restrict dst,
-                             const struct GEN75_VERTEX_BUFFER_STATE * restrict values)
-{
-   uint32_t *dw = (uint32_t * restrict) dst;
-
-   dw[0] =
-      __gen_field(values->VertexBufferIndex, 26, 31) |
-      __gen_field(values->BufferAccessType, 20, 20) |
-   /* Struct  VertexBufferMemoryObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
-      __gen_field(values->AddressModifyEnable, 14, 14) |
-      __gen_field(values->NullVertexBuffer, 13, 13) |
-      __gen_field(values->VertexFetchInvalidate, 12, 12) |
-      __gen_field(values->BufferPitch, 0, 11) |
-      0;
-
-   uint32_t dw1 =
-      0;
-
-   dw[1] =
-      __gen_combine_address(data, &dw[1], values->BufferStartingAddress, dw1);
-
-   uint32_t dw2 =
-      0;
-
-   dw[2] =
-      __gen_combine_address(data, &dw[2], values->EndAddress, dw2);
-
-   dw[3] =
-      __gen_field(values->InstanceDataStepRate, 0, 31) |
-      0;
-
-}
-
-struct GEN75_VERTEX_ELEMENT_STATE {
-   uint32_t                                     VertexBufferIndex;
-   uint32_t                                     Valid;
-   uint32_t                                     SourceElementFormat;
-   uint32_t                                     EdgeFlagEnable;
-   uint32_t                                     SourceElementOffset;
-   uint32_t                                     Component0Control;
-   uint32_t                                     Component1Control;
-   uint32_t                                     Component2Control;
-   uint32_t                                     Component3Control;
-};
-
-static inline void
-GEN75_VERTEX_ELEMENT_STATE_pack(__gen_user_data *data, void * restrict dst,
-                              const struct GEN75_VERTEX_ELEMENT_STATE * restrict values)
-{
-   uint32_t *dw = (uint32_t * restrict) dst;
-
-   dw[0] =
-      __gen_field(values->VertexBufferIndex, 26, 31) |
-      __gen_field(values->Valid, 25, 25) |
-      __gen_field(values->SourceElementFormat, 16, 24) |
-      __gen_field(values->EdgeFlagEnable, 15, 15) |
-      __gen_field(values->SourceElementOffset, 0, 11) |
-      0;
-
-   dw[1] =
-      __gen_field(values->Component0Control, 28, 30) |
-      __gen_field(values->Component1Control, 24, 26) |
-      __gen_field(values->Component2Control, 20, 22) |
-      __gen_field(values->Component3Control, 16, 18) |
-      0;
-
-}
-
-struct GEN75_SO_DECL_ENTRY {
-   uint32_t                                     Stream3Decl;
-   uint32_t                                     Stream2Decl;
-   uint32_t                                     Stream1Decl;
-   uint32_t                                     Stream0Decl;
-};
+#define GEN75_3DSTATE_CONSTANT_BODY_length 0x00000006
 
-static inline void
-GEN75_SO_DECL_ENTRY_pack(__gen_user_data *data, void * restrict dst,
-                       const struct GEN75_SO_DECL_ENTRY * restrict values)
-{
-   uint32_t *dw = (uint32_t * restrict) dst;
+#define GEN75_BINDING_TABLE_EDIT_ENTRY_length 0x00000001
 
-   dw[0] =
-   /* Struct  Stream3Decl: found SO_DECL */
-   /* Struct  Stream2Decl: found SO_DECL */
-   /* Struct  Stream1Decl: found SO_DECL */
-   /* Struct  Stream0Decl: found SO_DECL */
-      0;
+#define GEN75_GATHER_CONSTANT_ENTRY_length 0x00000001
 
-}
+#define GEN75_VERTEX_BUFFER_STATE_length 0x00000004
 
-struct GEN75_SO_DECL {
-   uint32_t                                     OutputBufferSlot;
-   uint32_t                                     HoleFlag;
-   uint32_t                                     RegisterIndex;
-   uint32_t                                     ComponentMask;
-};
+#define GEN75_VERTEX_ELEMENT_STATE_length 0x00000002
 
-static inline void
-GEN75_SO_DECL_pack(__gen_user_data *data, void * restrict dst,
-                 const struct GEN75_SO_DECL * restrict values)
-{
-   uint32_t *dw = (uint32_t * restrict) dst;
+#define GEN75_SO_DECL_ENTRY_length 0x00000002
 
-   dw[0] =
-      __gen_field(values->OutputBufferSlot, 12, 13) |
-      __gen_field(values->HoleFlag, 11, 11) |
-      __gen_field(values->RegisterIndex, 4, 9) |
-      __gen_field(values->ComponentMask, 0, 3) |
-      0;
+#define GEN75_SO_DECL_length 0x00000001
 
-}
+#define GEN75_SCISSOR_RECT_length 0x00000002
 
 struct GEN75_SCISSOR_RECT {
    uint32_t                                     ScissorRectangleYMin;
@@ -6888,6 +6989,8 @@ GEN75_SCISSOR_RECT_pack(__gen_user_data *data, void * restrict dst,
 
 }
 
+#define GEN75_SF_CLIP_VIEWPORT_length 0x00000010
+
 struct GEN75_SF_CLIP_VIEWPORT {
    float                                        ViewportMatrixElementm00;
    float                                        ViewportMatrixElementm11;
@@ -6958,9 +7061,11 @@ GEN75_SF_CLIP_VIEWPORT_pack(__gen_user_data *data, void * restrict dst,
 
 }
 
+#define GEN75_BLEND_STATE_length 0x00000002
+
 struct GEN75_BLEND_STATE {
-   uint32_t                                     ColorBufferBlendEnable;
-   uint32_t                                     IndependentAlphaBlendEnable;
+   bool                                         ColorBufferBlendEnable;
+   bool                                         IndependentAlphaBlendEnable;
 #define     BLENDFUNCTION_ADD                                  0
 #define     BLENDFUNCTION_SUBTRACT                             1
 #define     BLENDFUNCTION_REVERSE_SUBTRACT                     2
@@ -6996,14 +7101,14 @@ struct GEN75_BLEND_STATE {
    uint32_t                                     ColorBlendFunction;
    uint32_t                                     SourceBlendFactor;
    uint32_t                                     DestinationBlendFactor;
-   uint32_t                                     AlphaToCoverageEnable;
-   uint32_t                                     AlphaToOneEnable;
-   uint32_t                                     AlphaToCoverageDitherEnable;
-   uint32_t                                     WriteDisableAlpha;
-   uint32_t                                     WriteDisableRed;
-   uint32_t                                     WriteDisableGreen;
-   uint32_t                                     WriteDisableBlue;
-   uint32_t                                     LogicOpEnable;
+   bool                                         AlphaToCoverageEnable;
+   bool                                         AlphaToOneEnable;
+   bool                                         AlphaToCoverageDitherEnable;
+   bool                                         WriteDisableAlpha;
+   bool                                         WriteDisableRed;
+   bool                                         WriteDisableGreen;
+   bool                                         WriteDisableBlue;
+   bool                                         LogicOpEnable;
 #define     LOGICOP_CLEAR                                      0
 #define     LOGICOP_NOR                                        1
 #define     LOGICOP_AND_INVERTED                               2
@@ -7021,7 +7126,7 @@ struct GEN75_BLEND_STATE {
 #define     LOGICOP_OR                                        14
 #define     LOGICOP_SET                                       15
    uint32_t                                     LogicOpFunction;
-   uint32_t                                     AlphaTestEnable;
+   bool                                         AlphaTestEnable;
 #define     COMPAREFUNCTION_ALWAYS                             0
 #define     COMPAREFUNCTION_NEVER                              1
 #define     COMPAREFUNCTION_LESS                               2
@@ -7031,15 +7136,15 @@ struct GEN75_BLEND_STATE {
 #define     COMPAREFUNCTION_NOTEQUAL                           6
 #define     COMPAREFUNCTION_GEQUAL                             7
    uint32_t                                     AlphaTestFunction;
-   uint32_t                                     ColorDitherEnable;
+   bool                                         ColorDitherEnable;
    uint32_t                                     XDitherOffset;
    uint32_t                                     YDitherOffset;
 #define     COLORCLAMP_UNORM                                   0
 #define     COLORCLAMP_SNORM                                   1
 #define     COLORCLAMP_RTFORMAT                                2
    uint32_t                                     ColorClampRange;
-   uint32_t                                     PreBlendColorClampEnable;
-   uint32_t                                     PostBlendColorClampEnable;
+   bool                                         PreBlendColorClampEnable;
+   bool                                         PostBlendColorClampEnable;
 };
 
 static inline void
@@ -7081,6 +7186,8 @@ GEN75_BLEND_STATE_pack(__gen_user_data *data, void * restrict dst,
 
 }
 
+#define GEN75_CC_VIEWPORT_length 0x00000002
+
 struct GEN75_CC_VIEWPORT {
    float                                        MinimumDepth;
    float                                        MaximumDepth;
@@ -7102,6 +7209,8 @@ GEN75_CC_VIEWPORT_pack(__gen_user_data *data, void * restrict dst,
 
 }
 
+#define GEN75_COLOR_CALC_STATE_length 0x00000006
+
 struct GEN75_COLOR_CALC_STATE {
    uint32_t                                     StencilReferenceValue;
    uint32_t                                     BackFaceStencilReferenceValue;
@@ -7155,8 +7264,10 @@ GEN75_COLOR_CALC_STATE_pack(__gen_user_data *data, void * restrict dst,
 
 }
 
+#define GEN75_DEPTH_STENCIL_STATE_length 0x00000003
+
 struct GEN75_DEPTH_STENCIL_STATE {
-   uint32_t                                     StencilTestEnable;
+   bool                                         StencilTestEnable;
 #define     COMPAREFUNCTION_ALWAYS                             0
 #define     COMPAREFUNCTION_NEVER                              1
 #define     COMPAREFUNCTION_LESS                               2
@@ -7177,8 +7288,8 @@ struct GEN75_DEPTH_STENCIL_STATE {
    uint32_t                                     StencilFailOp;
    uint32_t                                     StencilPassDepthFailOp;
    uint32_t                                     StencilPassDepthPassOp;
-   uint32_t                                     StencilBufferWriteEnable;
-   uint32_t                                     DoubleSidedStencilEnable;
+   bool                                         StencilBufferWriteEnable;
+   bool                                         DoubleSidedStencilEnable;
 #define     COMPAREFUNCTION_ALWAYS                             0
 #define     COMPAREFUNCTION_NEVER                              1
 #define     COMPAREFUNCTION_LESS                               2
@@ -7203,7 +7314,7 @@ struct GEN75_DEPTH_STENCIL_STATE {
    uint32_t                                     StencilWriteMask;
    uint32_t                                     BackfaceStencilTestMask;
    uint32_t                                     BackfaceStencilWriteMask;
-   uint32_t                                     DepthTestEnable;
+   bool                                         DepthTestEnable;
 #define     COMPAREFUNCTION_ALWAYS                             0
 #define     COMPAREFUNCTION_NEVER                              1
 #define     COMPAREFUNCTION_LESS                               2
@@ -7213,7 +7324,7 @@ struct GEN75_DEPTH_STENCIL_STATE {
 #define     COMPAREFUNCTION_NOTEQUAL                           6
 #define     COMPAREFUNCTION_GEQUAL                             7
    uint32_t                                     DepthTestFunction;
-   uint32_t                                     DepthBufferWriteEnable;
+   bool                                         DepthBufferWriteEnable;
 };
 
 static inline void
@@ -7251,21 +7362,9 @@ GEN75_DEPTH_STENCIL_STATE_pack(__gen_user_data *data, void * restrict dst,
 
 }
 
-struct GEN75_MEMORY_OBJECT_CONTROL_STATE {
-   uint32_t                                     L3CacheabilityControlL3CC;
-};
-
-static inline void
-GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(__gen_user_data *data, void * restrict dst,
-                                     const struct GEN75_MEMORY_OBJECT_CONTROL_STATE * restrict values)
-{
-   uint32_t *dw = (uint32_t * restrict) dst;
-
-   dw[0] =
-      __gen_field(values->L3CacheabilityControlL3CC, 0, 0) |
-      0;
+#define GEN75_MEMORY_OBJECT_CONTROL_STATE_length 0x00000001
 
-}
+#define GEN75_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS_length 0x00000001
 
 struct GEN75_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS {
 #define     Highestpriority                                    0
@@ -7295,6 +7394,8 @@ GEN75_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS_pack(__gen_user_data *data, void
 
 }
 
+#define GEN75_INTERFACE_DESCRIPTOR_DATA_length 0x00000008
+
 struct GEN75_INTERFACE_DESCRIPTOR_DATA {
    uint32_t                                     KernelStartPointer;
 #define     Multiple                                           0
@@ -7306,9 +7407,9 @@ struct GEN75_INTERFACE_DESCRIPTOR_DATA {
 #define     IEEE754                                            0
 #define     Alternate                                          1
    uint32_t                                     FloatingPointMode;
-   uint32_t                                     IllegalOpcodeExceptionEnable;
-   uint32_t                                     MaskStackExceptionEnable;
-   uint32_t                                     SoftwareExceptionEnable;
+   bool                                         IllegalOpcodeExceptionEnable;
+   bool                                         MaskStackExceptionEnable;
+   bool                                         SoftwareExceptionEnable;
    uint32_t                                     SamplerStatePointer;
 #define     Nosamplersused                                     0
 #define     Between1and4samplersused                           1
@@ -7324,7 +7425,7 @@ struct GEN75_INTERFACE_DESCRIPTOR_DATA {
 #define     RD                                                 2
 #define     RTZ                                                3
    uint32_t                                     RoundingMode;
-   uint32_t                                     BarrierEnable;
+   bool                                         BarrierEnable;
    uint32_t                                     SharedLocalMemorySize;
    uint32_t                                     NumberofThreadsinGPGPUThreadGroup;
    uint32_t                                     CrossThreadConstantDataReadLength;
@@ -7379,28 +7480,28 @@ GEN75_INTERFACE_DESCRIPTOR_DATA_pack(__gen_user_data *data, void * restrict dst,
 
 }
 
-struct GEN75_PALETTE_ENTRY {
-   uint32_t                                     Alpha;
-   uint32_t                                     Red;
-   uint32_t                                     Green;
-   uint32_t                                     Blue;
+#define GEN75_PALETTE_ENTRY_length 0x00000001
+
+#define GEN75_BINDING_TABLE_STATE_length 0x00000001
+
+struct GEN75_BINDING_TABLE_STATE {
+   uint32_t                                     SurfaceStatePointer;
 };
 
 static inline void
-GEN75_PALETTE_ENTRY_pack(__gen_user_data *data, void * restrict dst,
-                       const struct GEN75_PALETTE_ENTRY * restrict values)
+GEN75_BINDING_TABLE_STATE_pack(__gen_user_data *data, void * restrict dst,
+                             const struct GEN75_BINDING_TABLE_STATE * restrict values)
 {
    uint32_t *dw = (uint32_t * restrict) dst;
 
    dw[0] =
-      __gen_field(values->Alpha, 24, 31) |
-      __gen_field(values->Red, 16, 23) |
-      __gen_field(values->Green, 8, 15) |
-      __gen_field(values->Blue, 0, 7) |
+      __gen_offset(values->SurfaceStatePointer, 5, 31) |
       0;
 
 }
 
+#define GEN75_RENDER_SURFACE_STATE_length 0x00000008
+
 struct GEN75_RENDER_SURFACE_STATE {
 #define     SURFTYPE_1D                                        0
 #define     SURFTYPE_2D                                        1
@@ -7410,7 +7511,7 @@ struct GEN75_RENDER_SURFACE_STATE {
 #define     SURFTYPE_STRBUF                                    5
 #define     SURFTYPE_NULL                                      7
    uint32_t                                     SurfaceType;
-   uint32_t                                     SurfaceArray;
+   bool                                         SurfaceArray;
    uint32_t                                     SurfaceFormat;
    uint32_t                                     SurfaceVerticalAlignment;
 #define     HALIGN_4                                           0
@@ -7454,14 +7555,14 @@ struct GEN75_RENDER_SURFACE_STATE {
    uint32_t                                     MinimumArrayElement0;
    uint32_t                                     XOffset;
    uint32_t                                     YOffset;
-   uint32_t                                     SurfaceObjectControlState;
+   struct GEN75_MEMORY_OBJECT_CONTROL_STATE     SurfaceObjectControlState;
    uint32_t                                     SurfaceMinLOD;
    uint32_t                                     MIPCountLOD;
    __gen_address_type                           MCSBaseAddress;
    uint32_t                                     MCSSurfacePitch;
    __gen_address_type                           AppendCounterAddress;
-   uint32_t                                     AppendCounterEnable;
-   uint32_t                                     MCSEnable;
+   bool                                         AppendCounterEnable;
+   bool                                         MCSEnable;
    uint32_t                                     ReservedMBZ;
    uint32_t                                     XOffsetforUVPlane;
    uint32_t                                     YOffsetforUVPlane;
@@ -7475,7 +7576,7 @@ struct GEN75_RENDER_SURFACE_STATE {
    uint32_t                                     ShaderChannelSelectG;
    uint32_t                                     ShaderChannelSelectB;
    uint32_t                                     ShaderChannelSelectA;
-   uint32_t                                     ResourceMinLOD;
+   float                                        ResourceMinLOD;
 };
 
 static inline void
@@ -7527,10 +7628,12 @@ GEN75_RENDER_SURFACE_STATE_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->MinimumArrayElement, 0, 26) |
       0;
 
+   uint32_t dw_SurfaceObjectControlState;
+   GEN75_MEMORY_OBJECT_CONTROL_STATE_pack(data, &dw_SurfaceObjectControlState, &values->SurfaceObjectControlState);
    dw[5] =
       __gen_offset(values->XOffset, 25, 31) |
       __gen_offset(values->YOffset, 20, 23) |
-   /* Struct  SurfaceObjectControlState: found MEMORY_OBJECT_CONTROL_STATE */
+      __gen_field(dw_SurfaceObjectControlState, 16, 19) |
       __gen_field(values->SurfaceMinLOD, 4, 7) |
       __gen_field(values->MIPCountLOD, 0, 3) |
       0;
@@ -7552,11 +7655,13 @@ GEN75_RENDER_SURFACE_STATE_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->ShaderChannelSelectG, 22, 24) |
       __gen_field(values->ShaderChannelSelectB, 19, 21) |
       __gen_field(values->ShaderChannelSelectA, 16, 18) |
-      __gen_field(values->ResourceMinLOD, 0, 11) |
+      __gen_field(values->ResourceMinLOD * (1 << 8), 0, 11) |
       0;
 
 }
 
+#define GEN75_SAMPLER_BORDER_COLOR_STATE_length 0x00000014
+
 struct GEN75_SAMPLER_BORDER_COLOR_STATE {
    uint32_t                                     BorderColorRedDX100GL;
    uint32_t                                     BorderColorAlpha;
@@ -7566,9 +7671,9 @@ struct GEN75_SAMPLER_BORDER_COLOR_STATE {
    uint32_t                                     BorderColorGreen0;
    uint32_t                                     BorderColorBlue0;
    uint32_t                                     BorderColorAlpha0;
-   uint32_t                                     BorderColor;
-   uint32_t                                     BorderColor0;
-   uint32_t                                     BorderColor1;
+   uint64_t                                     BorderColor;
+   uint64_t                                     BorderColor0;
+   uint64_t                                     BorderColor1;
 };
 
 static inline void
@@ -7608,14 +7713,16 @@ GEN75_SAMPLER_BORDER_COLOR_STATE_pack(__gen_user_data *data, void * restrict dst
 
 }
 
+#define GEN75_SAMPLER_STATE_length 0x00000004
+
 struct GEN75_SAMPLER_STATE {
-   uint32_t                                     SamplerDisable;
+   bool                                         SamplerDisable;
 #define     DX10OGL                                            0
 #define     DX9                                                1
    uint32_t                                     TextureBorderColorMode;
 #define     OGL                                                1
    uint32_t                                     LODPreClampEnable;
-   uint32_t                                     BaseMipLevel;
+   float                                        BaseMipLevel;
 #define     MIPFILTER_NONE                                     0
 #define     MIPFILTER_NEAREST                                  1
 #define     MIPFILTER_LINEAR                                   3
@@ -7634,8 +7741,8 @@ struct GEN75_SAMPLER_STATE {
 #define     LEGACY                                             0
 #define     EWAApproximation                                   1
    uint32_t                                     AnisotropicAlgorithm;
-   uint32_t                                     MinLOD;
-   uint32_t                                     MaxLOD;
+   float                                        MinLOD;
+   float                                        MaxLOD;
 #define     PREFILTEROPALWAYS                                  0
 #define     PREFILTEROPNEVER                                   1
 #define     PREFILTEROPLESS                                    2
@@ -7649,7 +7756,7 @@ struct GEN75_SAMPLER_STATE {
 #define     OVERRIDE                                           1
    uint32_t                                     CubeSurfaceControlMode;
    uint32_t                                     BorderColorPointer;
-   uint32_t                                     ChromaKeyEnable;
+   bool                                         ChromaKeyEnable;
    uint32_t                                     ChromaKeyIndex;
 #define     KEYFILTER_KILL_ON_ANY_MATCH                        0
 #define     KEYFILTER_REPLACE_BLACK                            1
@@ -7663,18 +7770,18 @@ struct GEN75_SAMPLER_STATE {
 #define     RATIO141                                           6
 #define     RATIO161                                           7
    uint32_t                                     MaximumAnisotropy;
-   uint32_t                                     RAddressMinFilterRoundingEnable;
-   uint32_t                                     RAddressMagFilterRoundingEnable;
-   uint32_t                                     VAddressMinFilterRoundingEnable;
-   uint32_t                                     VAddressMagFilterRoundingEnable;
-   uint32_t                                     UAddressMinFilterRoundingEnable;
-   uint32_t                                     UAddressMagFilterRoundingEnable;
+   bool                                         RAddressMinFilterRoundingEnable;
+   bool                                         RAddressMagFilterRoundingEnable;
+   bool                                         VAddressMinFilterRoundingEnable;
+   bool                                         VAddressMagFilterRoundingEnable;
+   bool                                         UAddressMinFilterRoundingEnable;
+   bool                                         UAddressMagFilterRoundingEnable;
 #define     FULL                                               0
 #define     TRIQUAL_HIGHMAG_CLAMP_MIPFILTER                    1
 #define     MED                                                2
 #define     LOW                                                3
    uint32_t                                     TrilinearFilterQuality;
-   uint32_t                                     NonnormalizedCoordinateEnable;
+   bool                                         NonnormalizedCoordinateEnable;
    uint32_t                                     TCXAddressControlMode;
    uint32_t                                     TCYAddressControlMode;
    uint32_t                                     TCZAddressControlMode;
@@ -7690,7 +7797,7 @@ GEN75_SAMPLER_STATE_pack(__gen_user_data *data, void * restrict dst,
       __gen_field(values->SamplerDisable, 31, 31) |
       __gen_field(values->TextureBorderColorMode, 29, 29) |
       __gen_field(values->LODPreClampEnable, 28, 28) |
-      __gen_field(values->BaseMipLevel, 22, 26) |
+      __gen_field(values->BaseMipLevel * (1 << 1), 22, 26) |
       __gen_field(values->MipModeFilter, 20, 21) |
       __gen_field(values->MagModeFilter, 17, 19) |
       __gen_field(values->MinModeFilter, 14, 16) |
@@ -7699,8 +7806,8 @@ GEN75_SAMPLER_STATE_pack(__gen_user_data *data, void * restrict dst,
       0;
 
    dw[1] =
-      __gen_field(values->MinLOD, 20, 31) |
-      __gen_field(values->MaxLOD, 8, 19) |
+      __gen_field(values->MinLOD * (1 << 8), 20, 31) |
+      __gen_field(values->MaxLOD * (1 << 8), 8, 19) |
       __gen_field(values->ShadowFunction, 1, 3) |
       __gen_field(values->CubeSurfaceControlMode, 0, 0) |
       0;
@@ -7739,7 +7846,7 @@ GEN75_SAMPLER_STATE_pack(__gen_user_data *data, void * restrict dst,
 #define     _3DPRIM_QUADLIST                                   7
 #define     _3DPRIM_QUADSTRIP                                  8
 #define     _3DPRIM_LINELIST_ADJ                               9
-#define     _3DPRIM_LISTSTRIP_ADJ                             10
+#define     _3DPRIM_LINESTRIP_ADJ                             10
 #define     _3DPRIM_TRILIST_ADJ                               11
 #define     _3DPRIM_TRISTRIP_ADJ                              12
 #define     _3DPRIM_TRISTRIP_REVERSE                          13