diff --git a/core/gen11/hw_cmds_base.h b/core/gen11/hw_cmds_base.h index e5e85ab411..50e084c8ca 100644 --- a/core/gen11/hw_cmds_base.h +++ b/core/gen11/hw_cmds_base.h @@ -18,8 +18,7 @@ struct CmdParse; namespace NEO { struct GEN11 { -#include "core/generated/gen11/hw_cmds_generated.inl" -#include "core/generated/gen11/hw_cmds_generated_patched.inl" +#include "core/generated/gen11/hw_cmds_generated_gen11.inl" }; struct ICLFamily : public GEN11 { using PARSE = CmdParse; diff --git a/core/gen12lp/hw_cmds_base.h b/core/gen12lp/hw_cmds_base.h index 918bda8079..79c8e50bd0 100644 --- a/core/gen12lp/hw_cmds_base.h +++ b/core/gen12lp/hw_cmds_base.h @@ -20,8 +20,7 @@ struct CmdParse; namespace NEO { struct GEN12LP { -#include "core/generated/gen12lp/hw_cmds_generated.inl" -#include "core/generated/gen12lp/hw_cmds_generated_patched.inl" +#include "core/generated/gen12lp/hw_cmds_generated_gen12lp.inl" static constexpr uint32_t stateComputeModeForceNonCoherentMask = (((1 << 0) | (1 << 1)) << 3); }; struct TGLLPFamily : public GEN12LP { diff --git a/core/gen8/hw_cmds_base.h b/core/gen8/hw_cmds_base.h index 15186c2548..e449519fab 100644 --- a/core/gen8/hw_cmds_base.h +++ b/core/gen8/hw_cmds_base.h @@ -20,8 +20,7 @@ struct CmdParse; namespace NEO { struct GEN8 { -#include "core/generated/gen8/hw_cmds_generated.inl" -#include "core/generated/gen8/hw_cmds_generated_patched.inl" +#include "core/generated/gen8/hw_cmds_generated_gen8.inl" }; struct BDWFamily : public GEN8 { using PARSE = CmdParse; diff --git a/core/gen9/hw_cmds_base.h b/core/gen9/hw_cmds_base.h index 26c6ea1b7a..d33290c747 100644 --- a/core/gen9/hw_cmds_base.h +++ b/core/gen9/hw_cmds_base.h @@ -20,8 +20,7 @@ struct CmdParse; namespace NEO { struct GEN9 { -#include "core/generated/gen9/hw_cmds_generated.inl" -#include "core/generated/gen9/hw_cmds_generated_patched.inl" +#include "core/generated/gen9/hw_cmds_generated_gen9.inl" }; struct SKLFamily : public GEN9 { diff --git a/core/generated/gen11/hw_cmds_generated.inl b/core/generated/gen11/hw_cmds_generated_gen11.inl similarity index 85% rename from core/generated/gen11/hw_cmds_generated.inl rename to core/generated/gen11/hw_cmds_generated_gen11.inl index 1c62c9305d..ad7ac3f079 100644 --- a/core/generated/gen11/hw_cmds_generated.inl +++ b/core/generated/gen11/hw_cmds_generated_gen11.inl @@ -235,6 +235,7 @@ typedef struct tagGPGPU_WALKER { } } GPGPU_WALKER; STATIC_ASSERT(60 == sizeof(GPGPU_WALKER)); + typedef struct tagINTERFACE_DESCRIPTOR_DATA { union tagTheStructure { struct tagCommon { @@ -490,6 +491,7 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA { } } INTERFACE_DESCRIPTOR_DATA; STATIC_ASSERT(32 == sizeof(INTERFACE_DESCRIPTOR_DATA)); + typedef struct tagMEDIA_INTERFACE_DESCRIPTOR_LOAD { union tagTheStructure { struct tagCommon { @@ -555,6 +557,7 @@ typedef struct tagMEDIA_INTERFACE_DESCRIPTOR_LOAD { } } MEDIA_INTERFACE_DESCRIPTOR_LOAD; STATIC_ASSERT(16 == sizeof(MEDIA_INTERFACE_DESCRIPTOR_LOAD)); + typedef struct tagMEDIA_STATE_FLUSH { union tagTheStructure { struct tagCommon { @@ -616,6 +619,7 @@ typedef struct tagMEDIA_STATE_FLUSH { } } MEDIA_STATE_FLUSH; STATIC_ASSERT(8 == sizeof(MEDIA_STATE_FLUSH)); + typedef struct tagMEDIA_VFE_STATE { union tagTheStructure { struct tagCommon { @@ -762,6 +766,7 @@ typedef struct tagMEDIA_VFE_STATE { } } MEDIA_VFE_STATE; STATIC_ASSERT(36 == sizeof(MEDIA_VFE_STATE)); + typedef struct tagMI_ARB_CHECK { union tagTheStructure { struct tagCommon { @@ -805,6 +810,7 @@ typedef struct tagMI_ARB_CHECK { } } MI_ARB_CHECK; STATIC_ASSERT(4 == sizeof(MI_ARB_CHECK)); + typedef struct tagMI_ATOMIC { union tagTheStructure { struct tagCommon { @@ -997,6 +1003,7 @@ typedef struct tagMI_ATOMIC { } } MI_ATOMIC; STATIC_ASSERT(44 == sizeof(MI_ATOMIC)); + typedef struct tagMI_BATCH_BUFFER_END { union tagTheStructure { struct tagCommon { @@ -1035,6 +1042,7 @@ typedef struct tagMI_BATCH_BUFFER_END { } } MI_BATCH_BUFFER_END; STATIC_ASSERT(4 == sizeof(MI_BATCH_BUFFER_END)); + typedef struct tagMI_LOAD_REGISTER_IMM { union tagTheStructure { struct tagCommon { @@ -1106,6 +1114,7 @@ typedef struct tagMI_LOAD_REGISTER_IMM { } } MI_LOAD_REGISTER_IMM; STATIC_ASSERT(12 == sizeof(MI_LOAD_REGISTER_IMM)); + typedef struct tagMI_LOAD_REGISTER_MEM { union tagTheStructure { struct tagCommon { @@ -1193,6 +1202,7 @@ typedef struct tagMI_LOAD_REGISTER_MEM { } } MI_LOAD_REGISTER_MEM; STATIC_ASSERT(16 == sizeof(MI_LOAD_REGISTER_MEM)); + typedef struct tagMI_LOAD_REGISTER_REG { union tagTheStructure { struct tagCommon { @@ -1270,6 +1280,7 @@ typedef struct tagMI_LOAD_REGISTER_REG { } } MI_LOAD_REGISTER_REG; STATIC_ASSERT(12 == sizeof(MI_LOAD_REGISTER_REG)); + typedef struct tagMI_NOOP { union tagTheStructure { struct tagCommon { @@ -1402,6 +1413,7 @@ typedef struct tagMI_STORE_REGISTER_MEM { } } MI_STORE_REGISTER_MEM; STATIC_ASSERT(16 == sizeof(MI_STORE_REGISTER_MEM)); + typedef struct tagPIPELINE_SELECT { union tagTheStructure { struct tagCommon { @@ -1498,6 +1510,7 @@ typedef struct tagPIPELINE_SELECT { } } PIPELINE_SELECT; STATIC_ASSERT(4 == sizeof(PIPELINE_SELECT)); + typedef struct tagPIPE_CONTROL { union tagTheStructure { struct tagCommon { @@ -1783,6 +1796,7 @@ typedef struct tagPIPE_CONTROL { } } PIPE_CONTROL; STATIC_ASSERT(24 == sizeof(PIPE_CONTROL)); + typedef struct tagRENDER_SURFACE_STATE { union tagTheStructure { struct tagCommon { @@ -3020,6 +3034,7 @@ typedef struct tagRENDER_SURFACE_STATE { } } RENDER_SURFACE_STATE; STATIC_ASSERT(64 == sizeof(RENDER_SURFACE_STATE)); + typedef struct tagSAMPLER_STATE { union tagTheStructure { struct tagCommon { @@ -3418,6 +3433,7 @@ typedef struct tagSAMPLER_STATE { } } SAMPLER_STATE; STATIC_ASSERT(16 == sizeof(SAMPLER_STATE)); + typedef struct tagSTATE_BASE_ADDRESS { union tagTheStructure { struct tagCommon { @@ -3829,6 +3845,7 @@ typedef struct tagSTATE_BASE_ADDRESS { } } STATE_BASE_ADDRESS; STATIC_ASSERT(88 == sizeof(STATE_BASE_ADDRESS)); + typedef struct tagMI_REPORT_PERF_COUNT { union tagTheStructure { struct tagCommon { @@ -3903,6 +3920,7 @@ typedef struct tagMI_REPORT_PERF_COUNT { } } MI_REPORT_PERF_COUNT; STATIC_ASSERT(16 == sizeof(MI_REPORT_PERF_COUNT)); + typedef struct tagGPGPU_CSR_BASE_ADDRESS { union tagTheStructure { struct tagCommon { @@ -3965,6 +3983,7 @@ typedef struct tagGPGPU_CSR_BASE_ADDRESS { } } GPGPU_CSR_BASE_ADDRESS; STATIC_ASSERT(12 == sizeof(GPGPU_CSR_BASE_ADDRESS)); + typedef struct tagSTATE_SIP { union tagTheStructure { struct tagCommon { @@ -4027,6 +4046,7 @@ typedef struct tagSTATE_SIP { } } STATE_SIP; STATIC_ASSERT(12 == sizeof(STATE_SIP)); + struct MI_USER_INTERRUPT { union tagTheStructure { struct tagCommon { @@ -4395,4 +4415,773 @@ typedef struct tagGRF { } TheStructure; } GRF; STATIC_ASSERT(32 == sizeof(GRF)); + +typedef struct tagMI_BATCH_BUFFER_START { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t AddressSpaceIndicator : BITFIELD_RANGE(8, 8); + uint32_t Reserved_9 : BITFIELD_RANGE(9, 9); + uint32_t ResourceStreamerEnable : BITFIELD_RANGE(10, 10); + uint32_t Reserved_11 : BITFIELD_RANGE(11, 14); + uint32_t PredicationEnable : BITFIELD_RANGE(15, 15); + uint32_t Reserved_16 : BITFIELD_RANGE(16, 19); + uint32_t PoshEnable : BITFIELD_RANGE(20, 20); + uint32_t PoshStart : BITFIELD_RANGE(21, 21); + uint32_t SecondLevelBatchBuffer : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint64_t Reserved_32 : BITFIELD_RANGE(0, 1); + uint64_t BatchBufferStartAddress_Graphicsaddress39_2 : BITFIELD_RANGE(2, 47); + uint64_t BatchBufferStartAddress_Reserved : BITFIELD_RANGE(48, 63); + } Common; + uint32_t RawData[3]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x1, + } DWORD_LENGTH; + typedef enum tagADDRESS_SPACE_INDICATOR { + ADDRESS_SPACE_INDICATOR_GGTT = 0x0, + ADDRESS_SPACE_INDICATOR_PPGTT = 0x1, + } ADDRESS_SPACE_INDICATOR; + typedef enum tagSECOND_LEVEL_BATCH_BUFFER { + SECOND_LEVEL_BATCH_BUFFER_FIRST_LEVEL_BATCH = 0x0, + SECOND_LEVEL_BATCH_BUFFER_SECOND_LEVEL_BATCH = 0x1, + } SECOND_LEVEL_BATCH_BUFFER; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_BATCH_BUFFER_START = 0x31, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; + TheStructure.Common.AddressSpaceIndicator = ADDRESS_SPACE_INDICATOR_GGTT; + TheStructure.Common.SecondLevelBatchBuffer = SECOND_LEVEL_BATCH_BUFFER_FIRST_LEVEL_BATCH; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_BATCH_BUFFER_START; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_BATCH_BUFFER_START sInit(void) { + MI_BATCH_BUFFER_START state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 3); + return TheStructure.RawData[index]; + } + inline void setAddressSpaceIndicator(const ADDRESS_SPACE_INDICATOR value) { + TheStructure.Common.AddressSpaceIndicator = value; + } + inline ADDRESS_SPACE_INDICATOR getAddressSpaceIndicator(void) const { + return static_cast(TheStructure.Common.AddressSpaceIndicator); + } + inline void setResourceStreamerEnable(const bool value) { + TheStructure.Common.ResourceStreamerEnable = value; + } + inline bool getResourceStreamerEnable(void) const { + return (TheStructure.Common.ResourceStreamerEnable); + } + inline void setPredicationEnable(const uint32_t value) { + TheStructure.Common.PredicationEnable = value; + } + inline uint32_t getPredicationEnable(void) const { + return (TheStructure.Common.PredicationEnable); + } + inline void setPoshEnable(const uint32_t value) { + TheStructure.Common.PoshEnable = value; + } + inline uint32_t getPoshEnable(void) const { + return (TheStructure.Common.PoshEnable); + } + inline void setPoshStart(const uint32_t value) { + TheStructure.Common.PoshStart = value; + } + inline uint32_t getPoshStart(void) const { + return (TheStructure.Common.PoshStart); + } + inline void setSecondLevelBatchBuffer(const SECOND_LEVEL_BATCH_BUFFER value) { + TheStructure.Common.SecondLevelBatchBuffer = value; + } + inline SECOND_LEVEL_BATCH_BUFFER getSecondLevelBatchBuffer(void) const { + return static_cast(TheStructure.Common.SecondLevelBatchBuffer); + } + typedef enum tagBATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2 { + BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT = 0x2, + BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2_ALIGN_SIZE = 0x4, + } BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2; + inline void setBatchBufferStartAddressGraphicsaddress392(const uint64_t value) { + TheStructure.Common.BatchBufferStartAddress_Graphicsaddress39_2 = value >> BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT; + } + inline uint64_t getBatchBufferStartAddressGraphicsaddress392(void) const { + return (TheStructure.Common.BatchBufferStartAddress_Graphicsaddress39_2 << BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT); + } + inline void setBatchBufferStartAddressGraphicsaddress472(const uint64_t value) { + setBatchBufferStartAddressGraphicsaddress392(value); + } + inline uint64_t getBatchBufferStartAddressGraphicsaddress472(void) const { + return getBatchBufferStartAddressGraphicsaddress392(); + } + typedef enum tagBATCHBUFFERSTARTADDRESS_RESERVED { + BATCHBUFFERSTARTADDRESS_RESERVED_BIT_SHIFT = 0x2, + BATCHBUFFERSTARTADDRESS_RESERVED_ALIGN_SIZE = 0x4, + } BATCHBUFFERSTARTADDRESS_RESERVED; + inline void setBatchBufferStartAddressReserved(const uint64_t value) { + TheStructure.Common.BatchBufferStartAddress_Reserved = value >> BATCHBUFFERSTARTADDRESS_RESERVED_BIT_SHIFT; + } + inline uint64_t getBatchBufferStartAddressReserved(void) const { + return (TheStructure.Common.BatchBufferStartAddress_Reserved << BATCHBUFFERSTARTADDRESS_RESERVED_BIT_SHIFT); + } +} MI_BATCH_BUFFER_START; +STATIC_ASSERT(12 == sizeof(MI_BATCH_BUFFER_START)); + +typedef struct tagMEDIA_SURFACE_STATE { + union tagTheStructure { + struct tagCommon { + uint32_t Reserved_0 : BITFIELD_RANGE(0, 29); + uint32_t Rotation : BITFIELD_RANGE(30, 31); + uint32_t Cr_VCb_UPixelOffsetVDirection : BITFIELD_RANGE(0, 1); + uint32_t PictureStructure : BITFIELD_RANGE(2, 3); + uint32_t Width : BITFIELD_RANGE(4, 17); + uint32_t Height : BITFIELD_RANGE(18, 31); + uint32_t TileMode : BITFIELD_RANGE(0, 1); + uint32_t HalfPitchForChroma : BITFIELD_RANGE(2, 2); + uint32_t SurfacePitch : BITFIELD_RANGE(3, 20); + uint32_t AddressControl : BITFIELD_RANGE(21, 21); + uint32_t MemoryCompressionEnable : BITFIELD_RANGE(22, 22); + uint32_t MemoryCompressionMode : BITFIELD_RANGE(23, 23); + uint32_t Cr_VCb_UPixelOffsetVDirectionMsb : BITFIELD_RANGE(24, 24); + uint32_t Cr_VCb_UPixelOffsetUDirection : BITFIELD_RANGE(25, 25); + uint32_t InterleaveChroma : BITFIELD_RANGE(26, 26); + uint32_t SurfaceFormat : BITFIELD_RANGE(27, 31); + uint32_t YOffsetForU_Cb : BITFIELD_RANGE(0, 13); + uint32_t Reserved_110 : BITFIELD_RANGE(14, 15); + uint32_t XOffsetForU_Cb : BITFIELD_RANGE(16, 29); + uint32_t Reserved_126 : BITFIELD_RANGE(30, 31); + uint32_t Reserved_128; + uint32_t SurfaceMemoryObjectControlState_Reserved : BITFIELD_RANGE(0, 0); + uint32_t SurfaceMemoryObjectControlState_IndexToMocsTables : BITFIELD_RANGE(1, 6); + uint32_t Reserved_167 : BITFIELD_RANGE(7, 17); + uint32_t TiledResourceMode : BITFIELD_RANGE(18, 19); + uint32_t Depth : BITFIELD_RANGE(20, 23); + uint32_t Reserved_184 : BITFIELD_RANGE(24, 29); + uint32_t VerticalLineStrideOffset : BITFIELD_RANGE(30, 30); + uint32_t VerticalLineStride : BITFIELD_RANGE(31, 31); + uint32_t SurfaceBaseAddressLow; + uint32_t SurfaceBaseAddressHigh : BITFIELD_RANGE(0, 15); + uint32_t Reserved_240 : BITFIELD_RANGE(16, 31); + } Common; + struct tagSurfaceFormatIsNotOneOfPlanarFormats { + uint32_t Reserved_0; + uint32_t Reserved_32; + uint32_t Reserved_64; + uint32_t Reserved_96; + uint32_t Reserved_128; + uint32_t Reserved_160; + uint32_t Reserved_192; + uint32_t Reserved_224; + } SurfaceFormatIsNotOneOfPlanarFormats; + struct tagSurfaceFormatIsOneOfPlanarFormats { + uint32_t Reserved_0 : BITFIELD_RANGE(0, 15); + uint32_t YOffset : BITFIELD_RANGE(16, 19); + uint32_t XOffset : BITFIELD_RANGE(20, 26); + uint32_t Reserved_27 : BITFIELD_RANGE(27, 31); + uint32_t Reserved_32; + uint32_t Reserved_64; + uint32_t Reserved_96; + uint32_t Reserved_128; + uint32_t Reserved_160; + uint32_t Reserved_192; + uint32_t Reserved_224; + } SurfaceFormatIsOneOfPlanarFormats; + struct tag_SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0 { + uint32_t Reserved_0; + uint32_t Reserved_32; + uint32_t Reserved_64; + uint32_t Reserved_96; + uint32_t YOffsetForV_Cr : BITFIELD_RANGE(0, 14); + uint32_t Reserved_143 : BITFIELD_RANGE(15, 15); + uint32_t XOffsetForV_Cr : BITFIELD_RANGE(16, 29); + uint32_t Reserved_158 : BITFIELD_RANGE(30, 31); + uint32_t Reserved_160; + uint32_t Reserved_192; + uint32_t Reserved_224; + } _SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0; + uint32_t RawData[8]; + } TheStructure; + typedef enum tagROTATION { + ROTATION_NO_ROTATION_OR_0_DEGREE = 0x0, + ROTATION_90_DEGREE_ROTATION = 0x1, + ROTATION_180_DEGREE_ROTATION = 0x2, + ROTATION_270_DEGREE_ROTATION = 0x3, + } ROTATION; + typedef enum tagPICTURE_STRUCTURE { + PICTURE_STRUCTURE_FRAME_PICTURE = 0x0, + PICTURE_STRUCTURE_TOP_FIELD_PICTURE = 0x1, + PICTURE_STRUCTURE_BOTTOM_FIELD_PICTURE = 0x2, + PICTURE_STRUCTURE_INVALID_NOT_ALLOWED = 0x3, + } PICTURE_STRUCTURE; + typedef enum tagTILE_MODE { + TILE_MODE_TILEMODE_LINEAR = 0x0, + TILE_MODE_TILEMODE_XMAJOR = 0x2, + TILE_MODE_TILEMODE_YMAJOR = 0x3, + } TILE_MODE; + typedef enum tagADDRESS_CONTROL { + ADDRESS_CONTROL_CLAMP = 0x0, + ADDRESS_CONTROL_MIRROR = 0x1, + } ADDRESS_CONTROL; + typedef enum tagMEMORY_COMPRESSION_MODE { + MEMORY_COMPRESSION_MODE_HORIZONTAL_COMPRESSION_MODE = 0x0, + MEMORY_COMPRESSION_MODE_VERTICAL_COMPRESSION_MODE = 0x1, + } MEMORY_COMPRESSION_MODE; + typedef enum tagSURFACE_FORMAT { + SURFACE_FORMAT_YCRCB_NORMAL = 0x0, + SURFACE_FORMAT_YCRCB_SWAPUVY = 0x1, + SURFACE_FORMAT_YCRCB_SWAPUV = 0x2, + SURFACE_FORMAT_YCRCB_SWAPY = 0x3, + SURFACE_FORMAT_PLANAR_420_8 = 0x4, + SURFACE_FORMAT_Y8_UNORM_VA = 0x5, + SURFACE_FORMAT_Y16_SNORM = 0x6, + SURFACE_FORMAT_Y16_UNORM_VA = 0x7, + SURFACE_FORMAT_R10G10B10A2_UNORM = 0x8, + SURFACE_FORMAT_R8G8B8A8_UNORM = 0x9, + SURFACE_FORMAT_R8B8_UNORM_CRCB = 0xa, + SURFACE_FORMAT_R8_UNORM_CR_CB = 0xb, + SURFACE_FORMAT_Y8_UNORM = 0xc, + SURFACE_FORMAT_A8Y8U8V8_UNORM = 0xd, + SURFACE_FORMAT_B8G8R8A8_UNORM = 0xe, + SURFACE_FORMAT_R16G16B16A16 = 0xf, + SURFACE_FORMAT_Y1_UNORM = 0x10, + SURFACE_FORMAT_Y32_UNORM = 0x11, + SURFACE_FORMAT_PLANAR_422_8 = 0x12, + SURFACE_FORMAT_FM_STRBUF_Y1 = 0x13, + SURFACE_FORMAT_FM_STRBUF_Y8 = 0x14, + SURFACE_FORMAT_FM_STRBUF_Y16 = 0x15, + SURFACE_FORMAT_FM_STRBUF_Y32 = 0x16, + SURFACE_FORMAT_PLANAR_420_16 = 0x17, + SURFACE_FORMAT_R16B16_UNORM_CRCB = 0x18, + SURFACE_FORMAT_R16_UNORM_CR_CB = 0x19, + SURFACE_FORMAT_Y16_UNORM = 0x1a, + } SURFACE_FORMAT; + typedef enum tagSURFACE_MEMORY_OBJECT_CONTROL_STATE { + SURFACE_MEMORY_OBJECT_CONTROL_STATE_DEFAULTVAUEDESC = 0x0, + } SURFACE_MEMORY_OBJECT_CONTROL_STATE; + typedef enum tagTILED_RESOURCE_MODE { + TILED_RESOURCE_MODE_TRMODE_NONE = 0x0, + TILED_RESOURCE_MODE_TRMODE_TILEYF = 0x1, + TILED_RESOURCE_MODE_TRMODE_TILEYS = 0x2, + } TILED_RESOURCE_MODE; + typedef enum tagPATCH_CONSTANTS { + SURFACEBASEADDRESS_BYTEOFFSET = 0x18, + SURFACEBASEADDRESS_INDEX = 0x6, + SURFACEBASEADDRESSHIGH_BYTEOFFSET = 0x1c, + SURFACEBASEADDRESSHIGH_INDEX = 0x7, + } PATCH_CONSTANTS; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.Rotation = ROTATION_NO_ROTATION_OR_0_DEGREE; + TheStructure.Common.PictureStructure = PICTURE_STRUCTURE_FRAME_PICTURE; + TheStructure.Common.TileMode = TILE_MODE_TILEMODE_LINEAR; + TheStructure.Common.AddressControl = ADDRESS_CONTROL_CLAMP; + TheStructure.Common.MemoryCompressionMode = MEMORY_COMPRESSION_MODE_HORIZONTAL_COMPRESSION_MODE; + TheStructure.Common.SurfaceFormat = SURFACE_FORMAT_YCRCB_NORMAL; + TheStructure.Common.TiledResourceMode = TILED_RESOURCE_MODE_TRMODE_NONE; + } + static tagMEDIA_SURFACE_STATE sInit(void) { + MEDIA_SURFACE_STATE state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 8); + return TheStructure.RawData[index]; + } + inline void setRotation(const ROTATION value) { + TheStructure.Common.Rotation = value; + } + inline ROTATION getRotation(void) const { + return static_cast(TheStructure.Common.Rotation); + } + inline void setCrVCbUPixelOffsetVDirection(const uint32_t value) { + TheStructure.Common.Cr_VCb_UPixelOffsetVDirection = value; + } + inline uint32_t getCrVCbUPixelOffsetVDirection(void) const { + return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirection); + } + inline void setPictureStructure(const PICTURE_STRUCTURE value) { + TheStructure.Common.PictureStructure = value; + } + inline PICTURE_STRUCTURE getPictureStructure(void) const { + return static_cast(TheStructure.Common.PictureStructure); + } + inline void setWidth(const uint32_t value) { + TheStructure.Common.Width = value - 1; + } + inline uint32_t getWidth(void) const { + return (TheStructure.Common.Width + 1); + } + inline void setHeight(const uint32_t value) { + TheStructure.Common.Height = value - 1; + } + inline uint32_t getHeight(void) const { + return (TheStructure.Common.Height + 1); + } + inline void setTileMode(const TILE_MODE value) { + TheStructure.Common.TileMode = value; + } + inline TILE_MODE getTileMode(void) const { + return static_cast(TheStructure.Common.TileMode); + } + inline void setHalfPitchForChroma(const bool value) { + TheStructure.Common.HalfPitchForChroma = value; + } + inline bool getHalfPitchForChroma(void) const { + return (TheStructure.Common.HalfPitchForChroma); + } + inline void setSurfacePitch(const uint32_t value) { + TheStructure.Common.SurfacePitch = value - 1; + } + inline uint32_t getSurfacePitch(void) const { + return (TheStructure.Common.SurfacePitch + 1); + } + inline void setAddressControl(const ADDRESS_CONTROL value) { + TheStructure.Common.AddressControl = value; + } + inline ADDRESS_CONTROL getAddressControl(void) const { + return static_cast(TheStructure.Common.AddressControl); + } + inline void setMemoryCompressionEnable(const bool value) { + TheStructure.Common.MemoryCompressionEnable = value; + } + inline bool getMemoryCompressionEnable(void) const { + return (TheStructure.Common.MemoryCompressionEnable); + } + inline void setMemoryCompressionMode(const MEMORY_COMPRESSION_MODE value) { + TheStructure.Common.MemoryCompressionMode = value; + } + inline MEMORY_COMPRESSION_MODE getMemoryCompressionMode(void) const { + return static_cast(TheStructure.Common.MemoryCompressionMode); + } + inline void setCrVCbUPixelOffsetVDirectionMsb(const uint32_t value) { + TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb = value; + } + inline uint32_t getCrVCbUPixelOffsetVDirectionMsb(void) const { + return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb); + } + inline void setCrVCbUPixelOffsetUDirection(const uint32_t value) { + TheStructure.Common.Cr_VCb_UPixelOffsetUDirection = value; + } + inline uint32_t getCrVCbUPixelOffsetUDirection(void) const { + return (TheStructure.Common.Cr_VCb_UPixelOffsetUDirection); + } + inline void setInterleaveChroma(const bool value) { + TheStructure.Common.InterleaveChroma = value; + } + inline bool getInterleaveChroma(void) const { + return (TheStructure.Common.InterleaveChroma); + } + inline void setSurfaceFormat(const SURFACE_FORMAT value) { + TheStructure.Common.SurfaceFormat = value; + } + inline SURFACE_FORMAT getSurfaceFormat(void) const { + return static_cast(TheStructure.Common.SurfaceFormat); + } + inline void setYOffsetForUCb(const uint32_t value) { + TheStructure.Common.YOffsetForU_Cb = value; + } + inline uint32_t getYOffsetForUCb(void) const { + return (TheStructure.Common.YOffsetForU_Cb); + } + inline void setXOffsetForUCb(const uint32_t value) { + TheStructure.Common.XOffsetForU_Cb = value; + } + inline uint32_t getXOffsetForUCb(void) const { + return (TheStructure.Common.XOffsetForU_Cb); + } + inline void setSurfaceMemoryObjectControlStateReserved(const uint32_t value) { + TheStructure.Common.SurfaceMemoryObjectControlState_Reserved = value; + } + inline uint32_t getSurfaceMemoryObjectControlStateReserved(void) const { + return (TheStructure.Common.SurfaceMemoryObjectControlState_Reserved); + } + inline void setSurfaceMemoryObjectControlStateIndexToMocsTables(const uint32_t value) { + TheStructure.Common.SurfaceMemoryObjectControlState_IndexToMocsTables = value >> 1; + } + inline uint32_t getSurfaceMemoryObjectControlStateIndexToMocsTables(void) const { + return (TheStructure.Common.SurfaceMemoryObjectControlState_IndexToMocsTables << 1); + } + inline void setTiledResourceMode(const TILED_RESOURCE_MODE value) { + TheStructure.Common.TiledResourceMode = value; + } + inline TILED_RESOURCE_MODE getTiledResourceMode(void) const { + return static_cast(TheStructure.Common.TiledResourceMode); + } + inline void setDepth(const uint32_t value) { + TheStructure.Common.Depth = value; + } + inline uint32_t getDepth(void) const { + return (TheStructure.Common.Depth); + } + inline void setVerticalLineStrideOffset(const uint32_t value) { + TheStructure.Common.VerticalLineStrideOffset = value; + } + inline uint32_t getVerticalLineStrideOffset(void) const { + return (TheStructure.Common.VerticalLineStrideOffset); + } + inline void setVerticalLineStride(const uint32_t value) { + TheStructure.Common.VerticalLineStride = value; + } + inline uint32_t getVerticalLineStride(void) const { + return (TheStructure.Common.VerticalLineStride); + } + inline void setSurfaceBaseAddress(const uint64_t value) { + TheStructure.Common.SurfaceBaseAddressLow = static_cast(value & 0xffffffff); + TheStructure.Common.SurfaceBaseAddressHigh = (value >> 32) & 0xffffffff; + } + inline uint64_t getSurfaceBaseAddress(void) const { + return (TheStructure.Common.SurfaceBaseAddressLow | + static_cast(TheStructure.Common.SurfaceBaseAddressHigh) << 32); + } + inline void setSurfaceBaseAddressHigh(const uint32_t value) { + TheStructure.Common.SurfaceBaseAddressHigh = value; + } + inline uint32_t getSurfaceBaseAddressHigh(void) const { + return (TheStructure.Common.SurfaceBaseAddressHigh); + } + typedef enum tagYOFFSET { + YOFFSET_BIT_SHIFT = 0x2, + YOFFSET_ALIGN_SIZE = 0x4, + } YOFFSET; + inline void setYOffset(const uint32_t value) { + TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset = value >> YOFFSET_BIT_SHIFT; + } + inline uint32_t getYOffset(void) const { + return (TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset << YOFFSET_BIT_SHIFT); + } + typedef enum tagXOFFSET { + XOFFSET_BIT_SHIFT = 0x2, + XOFFSET_ALIGN_SIZE = 0x4, + } XOFFSET; + inline void setXOffset(const uint32_t value) { + TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset = value >> XOFFSET_BIT_SHIFT; + } + inline uint32_t getXOffset(void) const { + return (TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset << XOFFSET_BIT_SHIFT); + } + inline void setYOffsetForVCr(const uint32_t value) { + TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr = value; + } + inline uint32_t getYOffsetForVCr(void) const { + return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr); + } + inline void setXOffsetForVCr(const uint32_t value) { + TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr = value; + } + inline uint32_t getXOffsetForVCr(void) const { + return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr); + } +} MEDIA_SURFACE_STATE; +STATIC_ASSERT(32 == sizeof(MEDIA_SURFACE_STATE)); + +typedef struct tagMI_MATH { + union _DW0 { + struct _BitField { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved : BITFIELD_RANGE(8, 22); + uint32_t InstructionOpcode : BITFIELD_RANGE(23, 28); + uint32_t InstructionType : BITFIELD_RANGE(29, 31); + } BitField; + uint32_t Value; + } DW0; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_MATH = 0x1A, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; +} MI_MATH; +typedef struct tagMI_MATH_ALU_INST_INLINE { + union _DW0 { + struct _BitField { + uint32_t Operand2 : BITFIELD_RANGE(0, 9); + uint32_t Operand1 : BITFIELD_RANGE(10, 19); + uint32_t ALUOpcode : BITFIELD_RANGE(20, 31); + } BitField; + uint32_t Value; + } DW0; +} MI_MATH_ALU_INST_INLINE; +typedef struct tagMI_SEMAPHORE_WAIT { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 11); + uint32_t CompareOperation : BITFIELD_RANGE(12, 14); + uint32_t WaitMode : BITFIELD_RANGE(15, 15); + uint32_t RegisterPollMode : BITFIELD_RANGE(16, 16); + uint32_t Reserved_17 : BITFIELD_RANGE(17, 21); + uint32_t MemoryType : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint32_t SemaphoreDataDword; + uint64_t Reserved_64 : BITFIELD_RANGE(0, 1); + uint64_t SemaphoreAddress_Graphicsaddress : BITFIELD_RANGE(2, 63); + } Common; + uint32_t RawData[4]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x2, + } DWORD_LENGTH; + typedef enum tagCOMPARE_OPERATION { + COMPARE_OPERATION_SAD_GREATER_THAN_SDD = 0x0, + COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD = 0x1, + COMPARE_OPERATION_SAD_LESS_THAN_SDD = 0x2, + COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD = 0x3, + COMPARE_OPERATION_SAD_EQUAL_SDD = 0x4, + COMPARE_OPERATION_SAD_NOT_EQUAL_SDD = 0x5, + } COMPARE_OPERATION; + typedef enum tagWAIT_MODE { + WAIT_MODE_SIGNAL_MODE = 0x0, + WAIT_MODE_POLLING_MODE = 0x1, + } WAIT_MODE; + typedef enum tagREGISTER_POLL_MODE { + REGISTER_POLL_MODE_MEMORY_POLL = 0x0, + REGISTER_POLL_MODE_REGISTER_POLL = 0x1, + } REGISTER_POLL_MODE; + typedef enum tagMEMORY_TYPE { + MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS = 0x0, + MEMORY_TYPE_GLOBAL_GRAPHICS_ADDRESS = 0x1, + } MEMORY_TYPE; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT = 0x1c, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; + TheStructure.Common.CompareOperation = COMPARE_OPERATION_SAD_GREATER_THAN_SDD; + TheStructure.Common.WaitMode = WAIT_MODE_SIGNAL_MODE; + TheStructure.Common.RegisterPollMode = REGISTER_POLL_MODE_MEMORY_POLL; + TheStructure.Common.MemoryType = MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_SEMAPHORE_WAIT sInit(void) { + MI_SEMAPHORE_WAIT state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 4); + return TheStructure.RawData[index]; + } + inline void setCompareOperation(const COMPARE_OPERATION value) { + TheStructure.Common.CompareOperation = value; + } + inline COMPARE_OPERATION getCompareOperation(void) const { + return static_cast(TheStructure.Common.CompareOperation); + } + inline void setWaitMode(const WAIT_MODE value) { + TheStructure.Common.WaitMode = value; + } + inline WAIT_MODE getWaitMode(void) const { + return static_cast(TheStructure.Common.WaitMode); + } + inline void setRegisterPollMode(const REGISTER_POLL_MODE value) { + TheStructure.Common.RegisterPollMode = value; + } + inline REGISTER_POLL_MODE getRegisterPollMode(void) const { + return static_cast(TheStructure.Common.RegisterPollMode); + } + inline void setMemoryType(const MEMORY_TYPE value) { + TheStructure.Common.MemoryType = value; + } + inline MEMORY_TYPE getMemoryType(void) const { + return static_cast(TheStructure.Common.MemoryType); + } + inline void setSemaphoreDataDword(const uint32_t value) { + TheStructure.Common.SemaphoreDataDword = value; + } + inline uint32_t getSemaphoreDataDword(void) const { + return (TheStructure.Common.SemaphoreDataDword); + } + typedef enum tagSEMAPHOREADDRESS_GRAPHICSADDRESS { + SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT = 0x2, + SEMAPHOREADDRESS_GRAPHICSADDRESS_ALIGN_SIZE = 0x4, + } SEMAPHOREADDRESS_GRAPHICSADDRESS39_2; + inline void setSemaphoreGraphicsAddress(const uint64_t value) { + TheStructure.Common.SemaphoreAddress_Graphicsaddress = value >> SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT; + } + inline uint64_t getSemaphoreGraphicsAddress(void) const { + return (TheStructure.Common.SemaphoreAddress_Graphicsaddress << SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT); + } + typedef enum tagSEMAPHOREADDRESS_RESERVED { + SEMAPHOREADDRESS_RESERVED_BIT_SHIFT = 0x2, + SEMAPHOREADDRESS_RESERVED_ALIGN_SIZE = 0x4, + } SEMAPHOREADDRESS_RESERVED; +} MI_SEMAPHORE_WAIT; +STATIC_ASSERT(16 == sizeof(MI_SEMAPHORE_WAIT)); + +typedef struct tagMI_STORE_DATA_IMM { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 9); + uint32_t Reserved_10 : BITFIELD_RANGE(10, 20); + uint32_t StoreQword : BITFIELD_RANGE(21, 21); + uint32_t UseGlobalGtt : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint64_t CoreModeEnable : BITFIELD_RANGE(0, 0); + uint64_t Reserved_33 : BITFIELD_RANGE(1, 1); + uint64_t Address_Graphicsaddress39_2 : BITFIELD_RANGE(2, 39); + uint64_t Address_Reserved : BITFIELD_RANGE(40, 63); + uint32_t DataDword0; + uint32_t DataDword1; + } Common; + uint32_t RawData[5]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_STORE_DWORD = 0x2, + DWORD_LENGTH_STORE_QWORD = 0x3, + } DWORD_LENGTH; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_STORE_DATA_IMM = 0x20, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_STORE_DWORD; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_STORE_DATA_IMM; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_STORE_DATA_IMM sInit(void) { + MI_STORE_DATA_IMM state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 5); + return TheStructure.RawData[index]; + } + inline void setDwordLength(const DWORD_LENGTH value) { + TheStructure.Common.DwordLength = value; + } + inline DWORD_LENGTH getDwordLength(void) const { + return static_cast(TheStructure.Common.DwordLength); + } + inline void setStoreQword(const bool value) { + TheStructure.Common.StoreQword = value; + } + inline bool getStoreQword(void) const { + return (TheStructure.Common.StoreQword); + } + inline void setUseGlobalGtt(const bool value) { + TheStructure.Common.UseGlobalGtt = value; + } + inline bool getUseGlobalGtt(void) const { + return (TheStructure.Common.UseGlobalGtt); + } + inline void setCoreModeEnable(const uint64_t value) { + TheStructure.Common.CoreModeEnable = value; + } + inline uint64_t getCoreModeEnable(void) const { + return (TheStructure.Common.CoreModeEnable); + } + typedef enum tagADDRESS_GRAPHICSADDRESS39_2 { + ADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT = 0x2, + ADDRESS_GRAPHICSADDRESS39_2_ALIGN_SIZE = 0x4, + } ADDRESS_GRAPHICSADDRESS39_2; + inline void setAddress(const uint64_t value) { + TheStructure.Common.Address_Graphicsaddress39_2 = value >> ADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT; + } + inline uint64_t getAddress(void) const { + return (TheStructure.Common.Address_Graphicsaddress39_2 << ADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT); + } + typedef enum tagADDRESS_RESERVED { + ADDRESS_RESERVED_BIT_SHIFT = 0x2, + ADDRESS_RESERVED_ALIGN_SIZE = 0x4, + } ADDRESS_RESERVED; + inline void setAddressReserved(const uint64_t value) { + TheStructure.Common.Address_Reserved = value >> ADDRESS_RESERVED_BIT_SHIFT; + } + inline uint64_t getAddressReserved(void) const { + return (TheStructure.Common.Address_Reserved << ADDRESS_RESERVED_BIT_SHIFT); + } + inline void setDataDword0(const uint32_t value) { + TheStructure.Common.DataDword0 = value; + } + inline uint32_t getDataDword0(void) const { + return (TheStructure.Common.DataDword0); + } + inline void setDataDword1(const uint32_t value) { + TheStructure.Common.DataDword1 = value; + } + inline uint32_t getDataDword1(void) const { + return (TheStructure.Common.DataDword1); + } +} MI_STORE_DATA_IMM; +STATIC_ASSERT(20 == sizeof(MI_STORE_DATA_IMM)); + +typedef struct tagPWR_CLK_STATE_REGISTER { + typedef enum tagADDRESS { + REG_ADDRESS = 0x20C8 + } ADDRESS; + union tagTheStructure { + struct tagCommon { + uint32_t EUmin : BITFIELD_RANGE(0, 3); + uint32_t EUmax : BITFIELD_RANGE(4, 7); + uint32_t SScount : BITFIELD_RANGE(8, 10); + uint32_t SSCountEn : BITFIELD_RANGE(11, 11); + uint32_t SliceCountRequest : BITFIELD_RANGE(12, 17); + uint32_t EnableSliceCountRequest : BITFIELD_RANGE(18, 18); + uint32_t Reserved : BITFIELD_RANGE(19, 30); + uint32_t EnablePwrClockGating : BITFIELD_RANGE(31, 31); + } Common; + uint32_t RawData[1]; + } TheStructure; + inline void init(void) { + TheStructure.RawData[0] = 0; + TheStructure.Common.EnablePwrClockGating = 1; + TheStructure.Common.EUmin = 8; + TheStructure.Common.EUmax = 8; + } + static tagPWR_CLK_STATE_REGISTER sInit(void) { + PWR_CLK_STATE_REGISTER state; + state.init(); + return state; + } +} PWR_CLK_STATE_REGISTER; +STATIC_ASSERT(4 == sizeof(PWR_CLK_STATE_REGISTER)); + +typedef struct tagASYNC_SLICE_COUNT_SELECT_REGISTER { + typedef enum tagADDRESS { + REG_ADDRESS = 0xA204 + } ADDRESS; + union tagTheStructure { + struct tagCommon { + uint32_t AsyncSliceCount : BITFIELD_RANGE(0, 3); + uint32_t AsyncEuCount : BITFIELD_RANGE(4, 7); + uint32_t AsyncSubSliceCount : BITFIELD_RANGE(8, 10); + uint32_t Reserved : BITFIELD_RANGE(11, 31); + } Common; + uint32_t RawData[1]; + } TheStructure; + inline void init(void) { + TheStructure.RawData[0] = 0; + TheStructure.Common.AsyncSliceCount = 2; + TheStructure.Common.AsyncSubSliceCount = 4; + TheStructure.Common.AsyncEuCount = 8; + } + static tagASYNC_SLICE_COUNT_SELECT_REGISTER sInit(void) { + ASYNC_SLICE_COUNT_SELECT_REGISTER state; + state.init(); + return state; + } +} ASYNC_SLICE_COUNT_SELECT_REGISTER; +STATIC_ASSERT(4 == sizeof(ASYNC_SLICE_COUNT_SELECT_REGISTER)); + #pragma pack() diff --git a/core/generated/gen11/hw_cmds_generated_patched.inl b/core/generated/gen11/hw_cmds_generated_patched.inl deleted file mode 100644 index 1ec476664a..0000000000 --- a/core/generated/gen11/hw_cmds_generated_patched.inl +++ /dev/null @@ -1,774 +0,0 @@ -/* - * Copyright (C) 2018-2019 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#pragma pack(1) -typedef struct tagMI_BATCH_BUFFER_START { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t AddressSpaceIndicator : BITFIELD_RANGE(8, 8); - uint32_t Reserved_9 : BITFIELD_RANGE(9, 9); - uint32_t ResourceStreamerEnable : BITFIELD_RANGE(10, 10); - uint32_t Reserved_11 : BITFIELD_RANGE(11, 14); - uint32_t PredicationEnable : BITFIELD_RANGE(15, 15); - uint32_t Reserved_16 : BITFIELD_RANGE(16, 19); - uint32_t PoshEnable : BITFIELD_RANGE(20, 20); - uint32_t PoshStart : BITFIELD_RANGE(21, 21); - uint32_t SecondLevelBatchBuffer : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint64_t Reserved_32 : BITFIELD_RANGE(0, 1); - uint64_t BatchBufferStartAddress_Graphicsaddress39_2 : BITFIELD_RANGE(2, 47); - uint64_t BatchBufferStartAddress_Reserved : BITFIELD_RANGE(48, 63); - } Common; - uint32_t RawData[3]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x1, - } DWORD_LENGTH; - typedef enum tagADDRESS_SPACE_INDICATOR { - ADDRESS_SPACE_INDICATOR_GGTT = 0x0, - ADDRESS_SPACE_INDICATOR_PPGTT = 0x1, - } ADDRESS_SPACE_INDICATOR; - typedef enum tagSECOND_LEVEL_BATCH_BUFFER { - SECOND_LEVEL_BATCH_BUFFER_FIRST_LEVEL_BATCH = 0x0, - SECOND_LEVEL_BATCH_BUFFER_SECOND_LEVEL_BATCH = 0x1, - } SECOND_LEVEL_BATCH_BUFFER; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_BATCH_BUFFER_START = 0x31, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; - TheStructure.Common.AddressSpaceIndicator = ADDRESS_SPACE_INDICATOR_GGTT; - TheStructure.Common.SecondLevelBatchBuffer = SECOND_LEVEL_BATCH_BUFFER_FIRST_LEVEL_BATCH; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_BATCH_BUFFER_START; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_BATCH_BUFFER_START sInit(void) { - MI_BATCH_BUFFER_START state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 3); - return TheStructure.RawData[index]; - } - inline void setAddressSpaceIndicator(const ADDRESS_SPACE_INDICATOR value) { - TheStructure.Common.AddressSpaceIndicator = value; - } - inline ADDRESS_SPACE_INDICATOR getAddressSpaceIndicator(void) const { - return static_cast(TheStructure.Common.AddressSpaceIndicator); - } - inline void setResourceStreamerEnable(const bool value) { - TheStructure.Common.ResourceStreamerEnable = value; - } - inline bool getResourceStreamerEnable(void) const { - return (TheStructure.Common.ResourceStreamerEnable); - } - inline void setPredicationEnable(const uint32_t value) { - TheStructure.Common.PredicationEnable = value; - } - inline uint32_t getPredicationEnable(void) const { - return (TheStructure.Common.PredicationEnable); - } - inline void setPoshEnable(const uint32_t value) { - TheStructure.Common.PoshEnable = value; - } - inline uint32_t getPoshEnable(void) const { - return (TheStructure.Common.PoshEnable); - } - inline void setPoshStart(const uint32_t value) { - TheStructure.Common.PoshStart = value; - } - inline uint32_t getPoshStart(void) const { - return (TheStructure.Common.PoshStart); - } - inline void setSecondLevelBatchBuffer(const SECOND_LEVEL_BATCH_BUFFER value) { - TheStructure.Common.SecondLevelBatchBuffer = value; - } - inline SECOND_LEVEL_BATCH_BUFFER getSecondLevelBatchBuffer(void) const { - return static_cast(TheStructure.Common.SecondLevelBatchBuffer); - } - typedef enum tagBATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2 { - BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT = 0x2, - BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2_ALIGN_SIZE = 0x4, - } BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2; - inline void setBatchBufferStartAddressGraphicsaddress392(const uint64_t value) { - TheStructure.Common.BatchBufferStartAddress_Graphicsaddress39_2 = value >> BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT; - } - inline uint64_t getBatchBufferStartAddressGraphicsaddress392(void) const { - return (TheStructure.Common.BatchBufferStartAddress_Graphicsaddress39_2 << BATCHBUFFERSTARTADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT); - } - inline void setBatchBufferStartAddressGraphicsaddress472(const uint64_t value) { - setBatchBufferStartAddressGraphicsaddress392(value); - } - inline uint64_t getBatchBufferStartAddressGraphicsaddress472(void) const { - return getBatchBufferStartAddressGraphicsaddress392(); - } - typedef enum tagBATCHBUFFERSTARTADDRESS_RESERVED { - BATCHBUFFERSTARTADDRESS_RESERVED_BIT_SHIFT = 0x2, - BATCHBUFFERSTARTADDRESS_RESERVED_ALIGN_SIZE = 0x4, - } BATCHBUFFERSTARTADDRESS_RESERVED; - inline void setBatchBufferStartAddressReserved(const uint64_t value) { - TheStructure.Common.BatchBufferStartAddress_Reserved = value >> BATCHBUFFERSTARTADDRESS_RESERVED_BIT_SHIFT; - } - inline uint64_t getBatchBufferStartAddressReserved(void) const { - return (TheStructure.Common.BatchBufferStartAddress_Reserved << BATCHBUFFERSTARTADDRESS_RESERVED_BIT_SHIFT); - } -} MI_BATCH_BUFFER_START; -STATIC_ASSERT(12 == sizeof(MI_BATCH_BUFFER_START)); -typedef struct tagMEDIA_SURFACE_STATE { - union tagTheStructure { - struct tagCommon { - uint32_t Reserved_0 : BITFIELD_RANGE(0, 29); - uint32_t Rotation : BITFIELD_RANGE(30, 31); - uint32_t Cr_VCb_UPixelOffsetVDirection : BITFIELD_RANGE(0, 1); - uint32_t PictureStructure : BITFIELD_RANGE(2, 3); - uint32_t Width : BITFIELD_RANGE(4, 17); - uint32_t Height : BITFIELD_RANGE(18, 31); - uint32_t TileMode : BITFIELD_RANGE(0, 1); - uint32_t HalfPitchForChroma : BITFIELD_RANGE(2, 2); - uint32_t SurfacePitch : BITFIELD_RANGE(3, 20); - uint32_t AddressControl : BITFIELD_RANGE(21, 21); - uint32_t MemoryCompressionEnable : BITFIELD_RANGE(22, 22); - uint32_t MemoryCompressionMode : BITFIELD_RANGE(23, 23); - uint32_t Cr_VCb_UPixelOffsetVDirectionMsb : BITFIELD_RANGE(24, 24); - uint32_t Cr_VCb_UPixelOffsetUDirection : BITFIELD_RANGE(25, 25); - uint32_t InterleaveChroma : BITFIELD_RANGE(26, 26); - uint32_t SurfaceFormat : BITFIELD_RANGE(27, 31); - uint32_t YOffsetForU_Cb : BITFIELD_RANGE(0, 13); - uint32_t Reserved_110 : BITFIELD_RANGE(14, 15); - uint32_t XOffsetForU_Cb : BITFIELD_RANGE(16, 29); - uint32_t Reserved_126 : BITFIELD_RANGE(30, 31); - uint32_t Reserved_128; - uint32_t SurfaceMemoryObjectControlState_Reserved : BITFIELD_RANGE(0, 0); - uint32_t SurfaceMemoryObjectControlState_IndexToMocsTables : BITFIELD_RANGE(1, 6); - uint32_t Reserved_167 : BITFIELD_RANGE(7, 17); - uint32_t TiledResourceMode : BITFIELD_RANGE(18, 19); - uint32_t Depth : BITFIELD_RANGE(20, 23); - uint32_t Reserved_184 : BITFIELD_RANGE(24, 29); - uint32_t VerticalLineStrideOffset : BITFIELD_RANGE(30, 30); - uint32_t VerticalLineStride : BITFIELD_RANGE(31, 31); - uint32_t SurfaceBaseAddressLow; - uint32_t SurfaceBaseAddressHigh : BITFIELD_RANGE(0, 15); - uint32_t Reserved_240 : BITFIELD_RANGE(16, 31); - } Common; - struct tagSurfaceFormatIsNotOneOfPlanarFormats { - uint32_t Reserved_0; - uint32_t Reserved_32; - uint32_t Reserved_64; - uint32_t Reserved_96; - uint32_t Reserved_128; - uint32_t Reserved_160; - uint32_t Reserved_192; - uint32_t Reserved_224; - } SurfaceFormatIsNotOneOfPlanarFormats; - struct tagSurfaceFormatIsOneOfPlanarFormats { - uint32_t Reserved_0 : BITFIELD_RANGE(0, 15); - uint32_t YOffset : BITFIELD_RANGE(16, 19); - uint32_t XOffset : BITFIELD_RANGE(20, 26); - uint32_t Reserved_27 : BITFIELD_RANGE(27, 31); - uint32_t Reserved_32; - uint32_t Reserved_64; - uint32_t Reserved_96; - uint32_t Reserved_128; - uint32_t Reserved_160; - uint32_t Reserved_192; - uint32_t Reserved_224; - } SurfaceFormatIsOneOfPlanarFormats; - struct tag_SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0 { - uint32_t Reserved_0; - uint32_t Reserved_32; - uint32_t Reserved_64; - uint32_t Reserved_96; - uint32_t YOffsetForV_Cr : BITFIELD_RANGE(0, 14); - uint32_t Reserved_143 : BITFIELD_RANGE(15, 15); - uint32_t XOffsetForV_Cr : BITFIELD_RANGE(16, 29); - uint32_t Reserved_158 : BITFIELD_RANGE(30, 31); - uint32_t Reserved_160; - uint32_t Reserved_192; - uint32_t Reserved_224; - } _SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0; - uint32_t RawData[8]; - } TheStructure; - typedef enum tagROTATION { - ROTATION_NO_ROTATION_OR_0_DEGREE = 0x0, - ROTATION_90_DEGREE_ROTATION = 0x1, - ROTATION_180_DEGREE_ROTATION = 0x2, - ROTATION_270_DEGREE_ROTATION = 0x3, - } ROTATION; - typedef enum tagPICTURE_STRUCTURE { - PICTURE_STRUCTURE_FRAME_PICTURE = 0x0, - PICTURE_STRUCTURE_TOP_FIELD_PICTURE = 0x1, - PICTURE_STRUCTURE_BOTTOM_FIELD_PICTURE = 0x2, - PICTURE_STRUCTURE_INVALID_NOT_ALLOWED = 0x3, - } PICTURE_STRUCTURE; - typedef enum tagTILE_MODE { - TILE_MODE_TILEMODE_LINEAR = 0x0, - TILE_MODE_TILEMODE_XMAJOR = 0x2, - TILE_MODE_TILEMODE_YMAJOR = 0x3, - } TILE_MODE; - typedef enum tagADDRESS_CONTROL { - ADDRESS_CONTROL_CLAMP = 0x0, - ADDRESS_CONTROL_MIRROR = 0x1, - } ADDRESS_CONTROL; - typedef enum tagMEMORY_COMPRESSION_MODE { - MEMORY_COMPRESSION_MODE_HORIZONTAL_COMPRESSION_MODE = 0x0, - MEMORY_COMPRESSION_MODE_VERTICAL_COMPRESSION_MODE = 0x1, - } MEMORY_COMPRESSION_MODE; - typedef enum tagSURFACE_FORMAT { - SURFACE_FORMAT_YCRCB_NORMAL = 0x0, - SURFACE_FORMAT_YCRCB_SWAPUVY = 0x1, - SURFACE_FORMAT_YCRCB_SWAPUV = 0x2, - SURFACE_FORMAT_YCRCB_SWAPY = 0x3, - SURFACE_FORMAT_PLANAR_420_8 = 0x4, - SURFACE_FORMAT_Y8_UNORM_VA = 0x5, - SURFACE_FORMAT_Y16_SNORM = 0x6, - SURFACE_FORMAT_Y16_UNORM_VA = 0x7, - SURFACE_FORMAT_R10G10B10A2_UNORM = 0x8, - SURFACE_FORMAT_R8G8B8A8_UNORM = 0x9, - SURFACE_FORMAT_R8B8_UNORM_CRCB = 0xa, - SURFACE_FORMAT_R8_UNORM_CR_CB = 0xb, - SURFACE_FORMAT_Y8_UNORM = 0xc, - SURFACE_FORMAT_A8Y8U8V8_UNORM = 0xd, - SURFACE_FORMAT_B8G8R8A8_UNORM = 0xe, - SURFACE_FORMAT_R16G16B16A16 = 0xf, - SURFACE_FORMAT_Y1_UNORM = 0x10, - SURFACE_FORMAT_Y32_UNORM = 0x11, - SURFACE_FORMAT_PLANAR_422_8 = 0x12, - SURFACE_FORMAT_FM_STRBUF_Y1 = 0x13, - SURFACE_FORMAT_FM_STRBUF_Y8 = 0x14, - SURFACE_FORMAT_FM_STRBUF_Y16 = 0x15, - SURFACE_FORMAT_FM_STRBUF_Y32 = 0x16, - SURFACE_FORMAT_PLANAR_420_16 = 0x17, - SURFACE_FORMAT_R16B16_UNORM_CRCB = 0x18, - SURFACE_FORMAT_R16_UNORM_CR_CB = 0x19, - SURFACE_FORMAT_Y16_UNORM = 0x1a, - } SURFACE_FORMAT; - typedef enum tagSURFACE_MEMORY_OBJECT_CONTROL_STATE { - SURFACE_MEMORY_OBJECT_CONTROL_STATE_DEFAULTVAUEDESC = 0x0, - } SURFACE_MEMORY_OBJECT_CONTROL_STATE; - typedef enum tagTILED_RESOURCE_MODE { - TILED_RESOURCE_MODE_TRMODE_NONE = 0x0, - TILED_RESOURCE_MODE_TRMODE_TILEYF = 0x1, - TILED_RESOURCE_MODE_TRMODE_TILEYS = 0x2, - } TILED_RESOURCE_MODE; - typedef enum tagPATCH_CONSTANTS { - SURFACEBASEADDRESS_BYTEOFFSET = 0x18, - SURFACEBASEADDRESS_INDEX = 0x6, - SURFACEBASEADDRESSHIGH_BYTEOFFSET = 0x1c, - SURFACEBASEADDRESSHIGH_INDEX = 0x7, - } PATCH_CONSTANTS; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.Rotation = ROTATION_NO_ROTATION_OR_0_DEGREE; - TheStructure.Common.PictureStructure = PICTURE_STRUCTURE_FRAME_PICTURE; - TheStructure.Common.TileMode = TILE_MODE_TILEMODE_LINEAR; - TheStructure.Common.AddressControl = ADDRESS_CONTROL_CLAMP; - TheStructure.Common.MemoryCompressionMode = MEMORY_COMPRESSION_MODE_HORIZONTAL_COMPRESSION_MODE; - TheStructure.Common.SurfaceFormat = SURFACE_FORMAT_YCRCB_NORMAL; - TheStructure.Common.TiledResourceMode = TILED_RESOURCE_MODE_TRMODE_NONE; - } - static tagMEDIA_SURFACE_STATE sInit(void) { - MEDIA_SURFACE_STATE state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 8); - return TheStructure.RawData[index]; - } - inline void setRotation(const ROTATION value) { - TheStructure.Common.Rotation = value; - } - inline ROTATION getRotation(void) const { - return static_cast(TheStructure.Common.Rotation); - } - inline void setCrVCbUPixelOffsetVDirection(const uint32_t value) { - TheStructure.Common.Cr_VCb_UPixelOffsetVDirection = value; - } - inline uint32_t getCrVCbUPixelOffsetVDirection(void) const { - return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirection); - } - inline void setPictureStructure(const PICTURE_STRUCTURE value) { - TheStructure.Common.PictureStructure = value; - } - inline PICTURE_STRUCTURE getPictureStructure(void) const { - return static_cast(TheStructure.Common.PictureStructure); - } - inline void setWidth(const uint32_t value) { - TheStructure.Common.Width = value - 1; - } - inline uint32_t getWidth(void) const { - return (TheStructure.Common.Width + 1); - } - inline void setHeight(const uint32_t value) { - TheStructure.Common.Height = value - 1; - } - inline uint32_t getHeight(void) const { - return (TheStructure.Common.Height + 1); - } - inline void setTileMode(const TILE_MODE value) { - TheStructure.Common.TileMode = value; - } - inline TILE_MODE getTileMode(void) const { - return static_cast(TheStructure.Common.TileMode); - } - inline void setHalfPitchForChroma(const bool value) { - TheStructure.Common.HalfPitchForChroma = value; - } - inline bool getHalfPitchForChroma(void) const { - return (TheStructure.Common.HalfPitchForChroma); - } - inline void setSurfacePitch(const uint32_t value) { - TheStructure.Common.SurfacePitch = value - 1; - } - inline uint32_t getSurfacePitch(void) const { - return (TheStructure.Common.SurfacePitch + 1); - } - inline void setAddressControl(const ADDRESS_CONTROL value) { - TheStructure.Common.AddressControl = value; - } - inline ADDRESS_CONTROL getAddressControl(void) const { - return static_cast(TheStructure.Common.AddressControl); - } - inline void setMemoryCompressionEnable(const bool value) { - TheStructure.Common.MemoryCompressionEnable = value; - } - inline bool getMemoryCompressionEnable(void) const { - return (TheStructure.Common.MemoryCompressionEnable); - } - inline void setMemoryCompressionMode(const MEMORY_COMPRESSION_MODE value) { - TheStructure.Common.MemoryCompressionMode = value; - } - inline MEMORY_COMPRESSION_MODE getMemoryCompressionMode(void) const { - return static_cast(TheStructure.Common.MemoryCompressionMode); - } - inline void setCrVCbUPixelOffsetVDirectionMsb(const uint32_t value) { - TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb = value; - } - inline uint32_t getCrVCbUPixelOffsetVDirectionMsb(void) const { - return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb); - } - inline void setCrVCbUPixelOffsetUDirection(const uint32_t value) { - TheStructure.Common.Cr_VCb_UPixelOffsetUDirection = value; - } - inline uint32_t getCrVCbUPixelOffsetUDirection(void) const { - return (TheStructure.Common.Cr_VCb_UPixelOffsetUDirection); - } - inline void setInterleaveChroma(const bool value) { - TheStructure.Common.InterleaveChroma = value; - } - inline bool getInterleaveChroma(void) const { - return (TheStructure.Common.InterleaveChroma); - } - inline void setSurfaceFormat(const SURFACE_FORMAT value) { - TheStructure.Common.SurfaceFormat = value; - } - inline SURFACE_FORMAT getSurfaceFormat(void) const { - return static_cast(TheStructure.Common.SurfaceFormat); - } - inline void setYOffsetForUCb(const uint32_t value) { - TheStructure.Common.YOffsetForU_Cb = value; - } - inline uint32_t getYOffsetForUCb(void) const { - return (TheStructure.Common.YOffsetForU_Cb); - } - inline void setXOffsetForUCb(const uint32_t value) { - TheStructure.Common.XOffsetForU_Cb = value; - } - inline uint32_t getXOffsetForUCb(void) const { - return (TheStructure.Common.XOffsetForU_Cb); - } - inline void setSurfaceMemoryObjectControlStateReserved(const uint32_t value) { - TheStructure.Common.SurfaceMemoryObjectControlState_Reserved = value; - } - inline uint32_t getSurfaceMemoryObjectControlStateReserved(void) const { - return (TheStructure.Common.SurfaceMemoryObjectControlState_Reserved); - } - inline void setSurfaceMemoryObjectControlStateIndexToMocsTables(const uint32_t value) { - TheStructure.Common.SurfaceMemoryObjectControlState_IndexToMocsTables = value >> 1; - } - inline uint32_t getSurfaceMemoryObjectControlStateIndexToMocsTables(void) const { - return (TheStructure.Common.SurfaceMemoryObjectControlState_IndexToMocsTables << 1); - } - inline void setTiledResourceMode(const TILED_RESOURCE_MODE value) { - TheStructure.Common.TiledResourceMode = value; - } - inline TILED_RESOURCE_MODE getTiledResourceMode(void) const { - return static_cast(TheStructure.Common.TiledResourceMode); - } - inline void setDepth(const uint32_t value) { - TheStructure.Common.Depth = value; - } - inline uint32_t getDepth(void) const { - return (TheStructure.Common.Depth); - } - inline void setVerticalLineStrideOffset(const uint32_t value) { - TheStructure.Common.VerticalLineStrideOffset = value; - } - inline uint32_t getVerticalLineStrideOffset(void) const { - return (TheStructure.Common.VerticalLineStrideOffset); - } - inline void setVerticalLineStride(const uint32_t value) { - TheStructure.Common.VerticalLineStride = value; - } - inline uint32_t getVerticalLineStride(void) const { - return (TheStructure.Common.VerticalLineStride); - } - inline void setSurfaceBaseAddress(const uint64_t value) { - TheStructure.Common.SurfaceBaseAddressLow = static_cast(value & 0xffffffff); - TheStructure.Common.SurfaceBaseAddressHigh = (value >> 32) & 0xffffffff; - } - inline uint64_t getSurfaceBaseAddress(void) const { - return (TheStructure.Common.SurfaceBaseAddressLow | - static_cast(TheStructure.Common.SurfaceBaseAddressHigh) << 32); - } - inline void setSurfaceBaseAddressHigh(const uint32_t value) { - TheStructure.Common.SurfaceBaseAddressHigh = value; - } - inline uint32_t getSurfaceBaseAddressHigh(void) const { - return (TheStructure.Common.SurfaceBaseAddressHigh); - } - typedef enum tagYOFFSET { - YOFFSET_BIT_SHIFT = 0x2, - YOFFSET_ALIGN_SIZE = 0x4, - } YOFFSET; - inline void setYOffset(const uint32_t value) { - TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset = value >> YOFFSET_BIT_SHIFT; - } - inline uint32_t getYOffset(void) const { - return (TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset << YOFFSET_BIT_SHIFT); - } - typedef enum tagXOFFSET { - XOFFSET_BIT_SHIFT = 0x2, - XOFFSET_ALIGN_SIZE = 0x4, - } XOFFSET; - inline void setXOffset(const uint32_t value) { - TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset = value >> XOFFSET_BIT_SHIFT; - } - inline uint32_t getXOffset(void) const { - return (TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset << XOFFSET_BIT_SHIFT); - } - inline void setYOffsetForVCr(const uint32_t value) { - TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr = value; - } - inline uint32_t getYOffsetForVCr(void) const { - return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr); - } - inline void setXOffsetForVCr(const uint32_t value) { - TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr = value; - } - inline uint32_t getXOffsetForVCr(void) const { - return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr); - } -} MEDIA_SURFACE_STATE; -STATIC_ASSERT(32 == sizeof(MEDIA_SURFACE_STATE)); -typedef struct tagMI_MATH { - union _DW0 { - struct _BitField { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved : BITFIELD_RANGE(8, 22); - uint32_t InstructionOpcode : BITFIELD_RANGE(23, 28); - uint32_t InstructionType : BITFIELD_RANGE(29, 31); - } BitField; - uint32_t Value; - } DW0; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_MATH = 0x1A, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; -} MI_MATH; -typedef struct tagMI_MATH_ALU_INST_INLINE { - union _DW0 { - struct _BitField { - uint32_t Operand2 : BITFIELD_RANGE(0, 9); - uint32_t Operand1 : BITFIELD_RANGE(10, 19); - uint32_t ALUOpcode : BITFIELD_RANGE(20, 31); - } BitField; - uint32_t Value; - } DW0; -} MI_MATH_ALU_INST_INLINE; -typedef struct tagMI_SEMAPHORE_WAIT { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 11); - uint32_t CompareOperation : BITFIELD_RANGE(12, 14); - uint32_t WaitMode : BITFIELD_RANGE(15, 15); - uint32_t RegisterPollMode : BITFIELD_RANGE(16, 16); - uint32_t Reserved_17 : BITFIELD_RANGE(17, 21); - uint32_t MemoryType : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint32_t SemaphoreDataDword; - uint64_t Reserved_64 : BITFIELD_RANGE(0, 1); - uint64_t SemaphoreAddress_Graphicsaddress : BITFIELD_RANGE(2, 63); - } Common; - uint32_t RawData[4]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x2, - } DWORD_LENGTH; - typedef enum tagCOMPARE_OPERATION { - COMPARE_OPERATION_SAD_GREATER_THAN_SDD = 0x0, - COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD = 0x1, - COMPARE_OPERATION_SAD_LESS_THAN_SDD = 0x2, - COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD = 0x3, - COMPARE_OPERATION_SAD_EQUAL_SDD = 0x4, - COMPARE_OPERATION_SAD_NOT_EQUAL_SDD = 0x5, - } COMPARE_OPERATION; - typedef enum tagWAIT_MODE { - WAIT_MODE_SIGNAL_MODE = 0x0, - WAIT_MODE_POLLING_MODE = 0x1, - } WAIT_MODE; - typedef enum tagREGISTER_POLL_MODE { - REGISTER_POLL_MODE_MEMORY_POLL = 0x0, - REGISTER_POLL_MODE_REGISTER_POLL = 0x1, - } REGISTER_POLL_MODE; - typedef enum tagMEMORY_TYPE { - MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS = 0x0, - MEMORY_TYPE_GLOBAL_GRAPHICS_ADDRESS = 0x1, - } MEMORY_TYPE; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT = 0x1c, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; - TheStructure.Common.CompareOperation = COMPARE_OPERATION_SAD_GREATER_THAN_SDD; - TheStructure.Common.WaitMode = WAIT_MODE_SIGNAL_MODE; - TheStructure.Common.RegisterPollMode = REGISTER_POLL_MODE_MEMORY_POLL; - TheStructure.Common.MemoryType = MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_SEMAPHORE_WAIT sInit(void) { - MI_SEMAPHORE_WAIT state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 4); - return TheStructure.RawData[index]; - } - inline void setCompareOperation(const COMPARE_OPERATION value) { - TheStructure.Common.CompareOperation = value; - } - inline COMPARE_OPERATION getCompareOperation(void) const { - return static_cast(TheStructure.Common.CompareOperation); - } - inline void setWaitMode(const WAIT_MODE value) { - TheStructure.Common.WaitMode = value; - } - inline WAIT_MODE getWaitMode(void) const { - return static_cast(TheStructure.Common.WaitMode); - } - inline void setRegisterPollMode(const REGISTER_POLL_MODE value) { - TheStructure.Common.RegisterPollMode = value; - } - inline REGISTER_POLL_MODE getRegisterPollMode(void) const { - return static_cast(TheStructure.Common.RegisterPollMode); - } - inline void setMemoryType(const MEMORY_TYPE value) { - TheStructure.Common.MemoryType = value; - } - inline MEMORY_TYPE getMemoryType(void) const { - return static_cast(TheStructure.Common.MemoryType); - } - inline void setSemaphoreDataDword(const uint32_t value) { - TheStructure.Common.SemaphoreDataDword = value; - } - inline uint32_t getSemaphoreDataDword(void) const { - return (TheStructure.Common.SemaphoreDataDword); - } - typedef enum tagSEMAPHOREADDRESS_GRAPHICSADDRESS { - SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT = 0x2, - SEMAPHOREADDRESS_GRAPHICSADDRESS_ALIGN_SIZE = 0x4, - } SEMAPHOREADDRESS_GRAPHICSADDRESS39_2; - inline void setSemaphoreGraphicsAddress(const uint64_t value) { - TheStructure.Common.SemaphoreAddress_Graphicsaddress = value >> SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT; - } - inline uint64_t getSemaphoreGraphicsAddress(void) const { - return (TheStructure.Common.SemaphoreAddress_Graphicsaddress << SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT); - } - typedef enum tagSEMAPHOREADDRESS_RESERVED { - SEMAPHOREADDRESS_RESERVED_BIT_SHIFT = 0x2, - SEMAPHOREADDRESS_RESERVED_ALIGN_SIZE = 0x4, - } SEMAPHOREADDRESS_RESERVED; -} MI_SEMAPHORE_WAIT; -STATIC_ASSERT(16 == sizeof(MI_SEMAPHORE_WAIT)); - -typedef struct tagMI_STORE_DATA_IMM { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 9); - uint32_t Reserved_10 : BITFIELD_RANGE(10, 20); - uint32_t StoreQword : BITFIELD_RANGE(21, 21); - uint32_t UseGlobalGtt : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint64_t CoreModeEnable : BITFIELD_RANGE(0, 0); - uint64_t Reserved_33 : BITFIELD_RANGE(1, 1); - uint64_t Address_Graphicsaddress39_2 : BITFIELD_RANGE(2, 39); - uint64_t Address_Reserved : BITFIELD_RANGE(40, 63); - uint32_t DataDword0; - uint32_t DataDword1; - } Common; - uint32_t RawData[5]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_STORE_DWORD = 0x2, - DWORD_LENGTH_STORE_QWORD = 0x3, - } DWORD_LENGTH; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_STORE_DATA_IMM = 0x20, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_STORE_DWORD; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_STORE_DATA_IMM; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_STORE_DATA_IMM sInit(void) { - MI_STORE_DATA_IMM state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 5); - return TheStructure.RawData[index]; - } - inline void setDwordLength(const DWORD_LENGTH value) { - TheStructure.Common.DwordLength = value; - } - inline DWORD_LENGTH getDwordLength(void) const { - return static_cast(TheStructure.Common.DwordLength); - } - inline void setStoreQword(const bool value) { - TheStructure.Common.StoreQword = value; - } - inline bool getStoreQword(void) const { - return (TheStructure.Common.StoreQword); - } - inline void setUseGlobalGtt(const bool value) { - TheStructure.Common.UseGlobalGtt = value; - } - inline bool getUseGlobalGtt(void) const { - return (TheStructure.Common.UseGlobalGtt); - } - inline void setCoreModeEnable(const uint64_t value) { - TheStructure.Common.CoreModeEnable = value; - } - inline uint64_t getCoreModeEnable(void) const { - return (TheStructure.Common.CoreModeEnable); - } - typedef enum tagADDRESS_GRAPHICSADDRESS39_2 { - ADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT = 0x2, - ADDRESS_GRAPHICSADDRESS39_2_ALIGN_SIZE = 0x4, - } ADDRESS_GRAPHICSADDRESS39_2; - inline void setAddress(const uint64_t value) { - TheStructure.Common.Address_Graphicsaddress39_2 = value >> ADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT; - } - inline uint64_t getAddress(void) const { - return (TheStructure.Common.Address_Graphicsaddress39_2 << ADDRESS_GRAPHICSADDRESS39_2_BIT_SHIFT); - } - typedef enum tagADDRESS_RESERVED { - ADDRESS_RESERVED_BIT_SHIFT = 0x2, - ADDRESS_RESERVED_ALIGN_SIZE = 0x4, - } ADDRESS_RESERVED; - inline void setAddressReserved(const uint64_t value) { - TheStructure.Common.Address_Reserved = value >> ADDRESS_RESERVED_BIT_SHIFT; - } - inline uint64_t getAddressReserved(void) const { - return (TheStructure.Common.Address_Reserved << ADDRESS_RESERVED_BIT_SHIFT); - } - inline void setDataDword0(const uint32_t value) { - TheStructure.Common.DataDword0 = value; - } - inline uint32_t getDataDword0(void) const { - return (TheStructure.Common.DataDword0); - } - inline void setDataDword1(const uint32_t value) { - TheStructure.Common.DataDword1 = value; - } - inline uint32_t getDataDword1(void) const { - return (TheStructure.Common.DataDword1); - } -} MI_STORE_DATA_IMM; -STATIC_ASSERT(20 == sizeof(MI_STORE_DATA_IMM)); - -typedef struct tagPWR_CLK_STATE_REGISTER { - typedef enum tagADDRESS { - REG_ADDRESS = 0x20C8 - } ADDRESS; - union tagTheStructure { - struct tagCommon { - uint32_t EUmin : BITFIELD_RANGE(0, 3); - uint32_t EUmax : BITFIELD_RANGE(4, 7); - uint32_t SScount : BITFIELD_RANGE(8, 10); - uint32_t SSCountEn : BITFIELD_RANGE(11, 11); - uint32_t SliceCountRequest : BITFIELD_RANGE(12, 17); - uint32_t EnableSliceCountRequest : BITFIELD_RANGE(18, 18); - uint32_t Reserved : BITFIELD_RANGE(19, 30); - uint32_t EnablePwrClockGating : BITFIELD_RANGE(31, 31); - } Common; - uint32_t RawData[1]; - } TheStructure; - inline void init(void) { - TheStructure.RawData[0] = 0; - TheStructure.Common.EnablePwrClockGating = 1; - TheStructure.Common.EUmin = 8; - TheStructure.Common.EUmax = 8; - } - static tagPWR_CLK_STATE_REGISTER sInit(void) { - PWR_CLK_STATE_REGISTER state; - state.init(); - return state; - } -} PWR_CLK_STATE_REGISTER; -STATIC_ASSERT(4 == sizeof(PWR_CLK_STATE_REGISTER)); - -typedef struct tagASYNC_SLICE_COUNT_SELECT_REGISTER { - typedef enum tagADDRESS { - REG_ADDRESS = 0xA204 - } ADDRESS; - union tagTheStructure { - struct tagCommon { - uint32_t AsyncSliceCount : BITFIELD_RANGE(0, 3); - uint32_t AsyncEuCount : BITFIELD_RANGE(4, 7); - uint32_t AsyncSubSliceCount : BITFIELD_RANGE(8, 10); - uint32_t Reserved : BITFIELD_RANGE(11, 31); - } Common; - uint32_t RawData[1]; - } TheStructure; - inline void init(void) { - TheStructure.RawData[0] = 0; - TheStructure.Common.AsyncSliceCount = 2; - TheStructure.Common.AsyncSubSliceCount = 4; - TheStructure.Common.AsyncEuCount = 8; - } - static tagASYNC_SLICE_COUNT_SELECT_REGISTER sInit(void) { - ASYNC_SLICE_COUNT_SELECT_REGISTER state; - state.init(); - return state; - } -} ASYNC_SLICE_COUNT_SELECT_REGISTER; -STATIC_ASSERT(4 == sizeof(ASYNC_SLICE_COUNT_SELECT_REGISTER)); -#pragma pack() diff --git a/core/generated/gen12lp/hw_cmds_generated.inl b/core/generated/gen12lp/hw_cmds_generated_gen12lp.inl similarity index 81% rename from core/generated/gen12lp/hw_cmds_generated.inl rename to core/generated/gen12lp/hw_cmds_generated_gen12lp.inl index 33e3bfe991..4112f268c8 100644 --- a/core/generated/gen12lp/hw_cmds_generated.inl +++ b/core/generated/gen12lp/hw_cmds_generated_gen12lp.inl @@ -4204,4 +4204,1029 @@ typedef struct tagGRF { } TheStructure; } GRF; STATIC_ASSERT(32 == sizeof(GRF)); + +typedef struct tagMEDIA_SURFACE_STATE { + union tagTheStructure { + struct tagCommon { + // DWORD 0 + uint32_t Reserved_0 : BITFIELD_RANGE(0, 29); + uint32_t Rotation : BITFIELD_RANGE(30, 31); + // DWORD 1 + uint32_t Cr_VCb_UPixelOffsetVDirection : BITFIELD_RANGE(0, 1); + uint32_t PictureStructure : BITFIELD_RANGE(2, 3); + uint32_t Width : BITFIELD_RANGE(4, 17); + uint32_t Height : BITFIELD_RANGE(18, 31); + // DWORD 2 + uint32_t TileMode : BITFIELD_RANGE(0, 1); + uint32_t HalfPitchForChroma : BITFIELD_RANGE(2, 2); + uint32_t SurfacePitch : BITFIELD_RANGE(3, 20); + uint32_t AddressControl : BITFIELD_RANGE(21, 21); + uint32_t MemoryCompressionEnable : BITFIELD_RANGE(22, 22); + uint32_t MemoryCompressionType : BITFIELD_RANGE(23, 23); + uint32_t Cr_VCb_UPixelOffsetVDirectionMsb : BITFIELD_RANGE(24, 24); + uint32_t Cr_VCb_UPixelOffsetUDirection : BITFIELD_RANGE(25, 25); + uint32_t InterleaveChroma : BITFIELD_RANGE(26, 26); + uint32_t SurfaceFormat : BITFIELD_RANGE(27, 31); + // DWORD 3 + uint32_t YOffsetForU_Cb : BITFIELD_RANGE(0, 13); + uint32_t Reserved_110 : BITFIELD_RANGE(14, 15); + uint32_t XOffsetForU_Cb : BITFIELD_RANGE(16, 29); + uint32_t Reserved_126 : BITFIELD_RANGE(30, 31); + // DWORD 4 + uint32_t Reserved_128; + // DWORD 5 + uint32_t SurfaceMemoryObjectControlStateReserved_160 : BITFIELD_RANGE(0, 0); + uint32_t SurfaceMemoryObjectControlStateIndexToMocsTables : BITFIELD_RANGE(1, 6); + uint32_t Reserved_167 : BITFIELD_RANGE(7, 17); + uint32_t TiledResourceMode : BITFIELD_RANGE(18, 19); + uint32_t Reserved_180 : BITFIELD_RANGE(20, 29); + uint32_t VerticalLineStrideOffset : BITFIELD_RANGE(30, 30); + uint32_t VerticalLineStride : BITFIELD_RANGE(31, 31); + // DWORD 6 + uint32_t SurfaceBaseAddressLow; + // DWORD 7 + uint32_t SurfaceBaseAddressHigh : BITFIELD_RANGE(0, 15); + uint32_t Reserved_240 : BITFIELD_RANGE(16, 31); + } Common; + struct tagSurfaceFormatIsOneOfPlanarFormats { + // DWORD 0 + uint32_t Reserved_0 : BITFIELD_RANGE(0, 15); + uint32_t YOffset : BITFIELD_RANGE(16, 19); + uint32_t XOffset : BITFIELD_RANGE(20, 26); + uint32_t Reserved_27 : BITFIELD_RANGE(27, 31); + // DWORD 1 + uint32_t Reserved_32; + // DWORD 2 + uint32_t Reserved_64; + // DWORD 3 + uint32_t Reserved_96; + // DWORD 4 + uint32_t Reserved_128; + // DWORD 5 + uint32_t Reserved_160; + // DWORD 6 + uint32_t Reserved_192; + // DWORD 7 + uint32_t Reserved_224; + } SurfaceFormatIsOneOfPlanarFormats; + struct tag_SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0 { + // DWORD 0 + uint32_t Reserved_0; + // DWORD 1 + uint32_t Reserved_32; + // DWORD 2 + uint32_t Reserved_64; + // DWORD 3 + uint32_t Reserved_96; + // DWORD 4 + uint32_t YOffsetForV_Cr : BITFIELD_RANGE(0, 14); + uint32_t Reserved_143 : BITFIELD_RANGE(15, 15); + uint32_t XOffsetForV_Cr : BITFIELD_RANGE(16, 29); + uint32_t Reserved_158 : BITFIELD_RANGE(30, 31); + // DWORD 5 + uint32_t Reserved_160; + // DWORD 6 + uint32_t Reserved_192; + // DWORD 7 + uint32_t Reserved_224; + } _SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0; + uint32_t RawData[8]; + } TheStructure; + typedef enum tagROTATION { + ROTATION_NO_ROTATION_OR_0_DEGREE = 0x0, + ROTATION_90_DEGREE_ROTATION = 0x1, + ROTATION_180_DEGREE_ROTATION = 0x2, + ROTATION_270_DEGREE_ROTATION = 0x3, + } ROTATION; + typedef enum tagPICTURE_STRUCTURE { + PICTURE_STRUCTURE_FRAME_PICTURE = 0x0, + PICTURE_STRUCTURE_TOP_FIELD_PICTURE = 0x1, + PICTURE_STRUCTURE_BOTTOM_FIELD_PICTURE = 0x2, + PICTURE_STRUCTURE_INVALID_NOT_ALLOWED = 0x3, + } PICTURE_STRUCTURE; + typedef enum tagTILE_MODE { + TILE_MODE_TILEMODE_LINEAR = 0x0, + TILE_MODE_TILEMODE_XMAJOR = 0x2, + TILE_MODE_TILEMODE_YMAJOR = 0x3, + } TILE_MODE; + typedef enum tagADDRESS_CONTROL { + ADDRESS_CONTROL_CLAMP = 0x0, + ADDRESS_CONTROL_MIRROR = 0x1, + } ADDRESS_CONTROL; + typedef enum tagMEMORY_COMPRESSION_TYPE { + MEMORY_COMPRESSION_TYPE_MEDIA_COMPRESSION = 0x0, + MEMORY_COMPRESSION_TYPE_RENDER_COMPRESSION = 0x1, + } MEMORY_COMPRESSION_TYPE; + typedef enum tagSURFACE_FORMAT { + SURFACE_FORMAT_YCRCB_NORMAL = 0x0, + SURFACE_FORMAT_YCRCB_SWAPUVY = 0x1, + SURFACE_FORMAT_YCRCB_SWAPUV = 0x2, + SURFACE_FORMAT_YCRCB_SWAPY = 0x3, + SURFACE_FORMAT_PLANAR_420_8 = 0x4, + SURFACE_FORMAT_Y8_UNORM_VA = 0x5, + SURFACE_FORMAT_R10G10B10A2_UNORM = 0x8, + SURFACE_FORMAT_R8G8B8A8_UNORM = 0x9, + SURFACE_FORMAT_R8B8_UNORM_CRCB = 0xa, + SURFACE_FORMAT_R8_UNORM_CRCB = 0xb, + SURFACE_FORMAT_Y8_UNORM = 0xc, + SURFACE_FORMAT_A8Y8U8V8_UNORM = 0xd, + SURFACE_FORMAT_B8G8R8A8_UNORM = 0xe, + SURFACE_FORMAT_R16G16B16A16 = 0xf, + SURFACE_FORMAT_Y1_UNORM = 0x10, + SURFACE_FORMAT_PLANAR_422_8 = 0x12, + SURFACE_FORMAT_PLANAR_420_16 = 0x17, + SURFACE_FORMAT_R16B16_UNORM_CRCB = 0x18, + SURFACE_FORMAT_R16_UNORM_CRCB = 0x19, + SURFACE_FORMAT_Y16_UNORM = 0x1a, + } SURFACE_FORMAT; + typedef enum tagTILED_RESOURCE_MODE { + TILED_RESOURCE_MODE_TRMODE_NONE = 0x0, + TILED_RESOURCE_MODE_TRMODE_TILEYF = 0x1, + TILED_RESOURCE_MODE_TRMODE_TILEYS = 0x2, + } TILED_RESOURCE_MODE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.Rotation = ROTATION_NO_ROTATION_OR_0_DEGREE; + TheStructure.Common.PictureStructure = PICTURE_STRUCTURE_FRAME_PICTURE; + TheStructure.Common.TileMode = TILE_MODE_TILEMODE_LINEAR; + TheStructure.Common.AddressControl = ADDRESS_CONTROL_CLAMP; + TheStructure.Common.MemoryCompressionType = MEMORY_COMPRESSION_TYPE_MEDIA_COMPRESSION; + TheStructure.Common.SurfaceFormat = SURFACE_FORMAT_YCRCB_NORMAL; + TheStructure.Common.TiledResourceMode = TILED_RESOURCE_MODE_TRMODE_NONE; + } + static tagMEDIA_SURFACE_STATE sInit(void) { + MEDIA_SURFACE_STATE state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + UNRECOVERABLE_IF(index >= 8); + return TheStructure.RawData[index]; + } + inline void setRotation(const ROTATION value) { + TheStructure.Common.Rotation = value; + } + inline ROTATION getRotation(void) const { + return static_cast(TheStructure.Common.Rotation); + } + inline void setCrVCbUPixelOffsetVDirection(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x3); + TheStructure.Common.Cr_VCb_UPixelOffsetVDirection = value; + } + inline uint32_t getCrVCbUPixelOffsetVDirection(void) const { + return TheStructure.Common.Cr_VCb_UPixelOffsetVDirection; + } + inline void setPictureStructure(const PICTURE_STRUCTURE value) { + TheStructure.Common.PictureStructure = value; + } + inline PICTURE_STRUCTURE getPictureStructure(void) const { + return static_cast(TheStructure.Common.PictureStructure); + } + inline void setWidth(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x3fff); + TheStructure.Common.Width = value - 1; + } + inline uint32_t getWidth(void) const { + return TheStructure.Common.Width + 1; + } + inline void setHeight(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x3fff); + TheStructure.Common.Height = value - 1; + } + inline uint32_t getHeight(void) const { + return TheStructure.Common.Height + 1; + } + inline void setTileMode(const TILE_MODE value) { + TheStructure.Common.TileMode = value; + } + inline TILE_MODE getTileMode(void) const { + return static_cast(TheStructure.Common.TileMode); + } + inline void setHalfPitchForChroma(const bool value) { + TheStructure.Common.HalfPitchForChroma = value; + } + inline bool getHalfPitchForChroma(void) const { + return TheStructure.Common.HalfPitchForChroma; + } + inline void setSurfacePitch(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x3ffff); + TheStructure.Common.SurfacePitch = value - 1; + } + inline uint32_t getSurfacePitch(void) const { + return TheStructure.Common.SurfacePitch + 1; + } + inline void setAddressControl(const ADDRESS_CONTROL value) { + TheStructure.Common.AddressControl = value; + } + inline ADDRESS_CONTROL getAddressControl(void) const { + return static_cast(TheStructure.Common.AddressControl); + } + inline void setMemoryCompressionEnable(const bool value) { + TheStructure.Common.MemoryCompressionEnable = value; + } + inline bool getMemoryCompressionEnable(void) const { + return TheStructure.Common.MemoryCompressionEnable; + } + inline void setMemoryCompressionType(const MEMORY_COMPRESSION_TYPE value) { + TheStructure.Common.MemoryCompressionType = value; + } + inline MEMORY_COMPRESSION_TYPE getMemoryCompressionType(void) const { + return static_cast(TheStructure.Common.MemoryCompressionType); + } + inline void setCrVCbUPixelOffsetVDirectionMsb(const bool value) { + TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb = value; + } + inline bool getCrVCbUPixelOffsetVDirectionMsb(void) const { + return TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb; + } + inline void setCrVCbUPixelOffsetUDirection(const bool value) { + TheStructure.Common.Cr_VCb_UPixelOffsetUDirection = value; + } + inline bool getCrVCbUPixelOffsetUDirection(void) const { + return TheStructure.Common.Cr_VCb_UPixelOffsetUDirection; + } + inline void setInterleaveChroma(const bool value) { + TheStructure.Common.InterleaveChroma = value; + } + inline bool getInterleaveChroma(void) const { + return TheStructure.Common.InterleaveChroma; + } + inline void setSurfaceFormat(const SURFACE_FORMAT value) { + TheStructure.Common.SurfaceFormat = value; + } + inline SURFACE_FORMAT getSurfaceFormat(void) const { + return static_cast(TheStructure.Common.SurfaceFormat); + } + inline void setYOffsetForUCb(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x3fff); + TheStructure.Common.YOffsetForU_Cb = value; + } + inline uint32_t getYOffsetForUCb(void) const { + return TheStructure.Common.YOffsetForU_Cb; + } + inline void setXOffsetForUCb(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x3fff); + TheStructure.Common.XOffsetForU_Cb = value; + } + inline uint32_t getXOffsetForUCb(void) const { + return TheStructure.Common.XOffsetForU_Cb; + } + inline void setSurfaceMemoryObjectControlStateIndexToMocsTables(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x3f); + TheStructure.Common.SurfaceMemoryObjectControlStateIndexToMocsTables = value; + } + inline uint32_t getSurfaceMemoryObjectControlStateIndexToMocsTables(void) const { + return TheStructure.Common.SurfaceMemoryObjectControlStateIndexToMocsTables; + } + inline void setTiledResourceMode(const TILED_RESOURCE_MODE value) { + TheStructure.Common.TiledResourceMode = value; + } + inline TILED_RESOURCE_MODE getTiledResourceMode(void) const { + return static_cast(TheStructure.Common.TiledResourceMode); + } + inline void setVerticalLineStrideOffset(const bool value) { + TheStructure.Common.VerticalLineStrideOffset = value; + } + inline bool getVerticalLineStrideOffset(void) const { + return TheStructure.Common.VerticalLineStrideOffset; + } + inline void setVerticalLineStride(const bool value) { + TheStructure.Common.VerticalLineStride = value; + } + inline bool getVerticalLineStride(void) const { + return TheStructure.Common.VerticalLineStride; + } + inline void setSurfaceBaseAddress(const uint64_t value) { + TheStructure.Common.SurfaceBaseAddressLow = static_cast(value & 0xffffffff); + TheStructure.Common.SurfaceBaseAddressHigh = (value >> 32) & 0xffffffff; + } + inline uint64_t getSurfaceBaseAddress(void) const { + return (TheStructure.Common.SurfaceBaseAddressLow | + static_cast(TheStructure.Common.SurfaceBaseAddressHigh) << 32); + } + inline void setSurfaceBaseAddressHigh(const uint32_t value) { + UNRECOVERABLE_IF(value > 0xffff); + TheStructure.Common.SurfaceBaseAddressHigh = value; + } + inline uint32_t getSurfaceBaseAddressHigh(void) const { + return TheStructure.Common.SurfaceBaseAddressHigh; + } + inline void setYOffset(const uint32_t value) { + UNRECOVERABLE_IF(value > 0xf); + TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset = value; + } + inline uint32_t getYOffset(void) const { + return TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset; + } + inline void setXOffset(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x7f); + TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset = value; + } + inline uint32_t getXOffset(void) const { + return TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset; + } + inline void setYOffsetForVCr(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x7fff); + TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr = value; + } + inline uint32_t getYOffsetForVCr(void) const { + return TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr; + } + inline void setXOffsetForVCr(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x3fff); + TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr = value; + } + inline uint32_t getXOffsetForVCr(void) const { + return TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr; + } +} MEDIA_SURFACE_STATE; +STATIC_ASSERT(32 == sizeof(MEDIA_SURFACE_STATE)); + +typedef struct tagMI_MATH { + union _DW0 { + struct _BitField { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved : BITFIELD_RANGE(8, 22); + uint32_t InstructionOpcode : BITFIELD_RANGE(23, 28); + uint32_t InstructionType : BITFIELD_RANGE(29, 31); + } BitField; + uint32_t Value; + } DW0; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_MATH = 0x1A, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; +} MI_MATH; + +typedef struct tagMI_MATH_ALU_INST_INLINE { + union _DW0 { + struct _BitField { + uint32_t Operand2 : BITFIELD_RANGE(0, 9); + uint32_t Operand1 : BITFIELD_RANGE(10, 19); + uint32_t ALUOpcode : BITFIELD_RANGE(20, 31); + } BitField; + uint32_t Value; + } DW0; +} MI_MATH_ALU_INST_INLINE; + +typedef struct tagPIPE_CONTROL { + union tagTheStructure { + struct tagCommon { + // DWORD 0 + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 8); + uint32_t HdcPipelineFlush : BITFIELD_RANGE(9, 9); + uint32_t Reserved_10 : BITFIELD_RANGE(10, 15); + uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); + uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); + uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + // DWORD 1 + uint32_t DepthCacheFlushEnable : BITFIELD_RANGE(0, 0); + uint32_t StallAtPixelScoreboard : BITFIELD_RANGE(1, 1); + uint32_t StateCacheInvalidationEnable : BITFIELD_RANGE(2, 2); + uint32_t ConstantCacheInvalidationEnable : BITFIELD_RANGE(3, 3); + uint32_t VfCacheInvalidationEnable : BITFIELD_RANGE(4, 4); + uint32_t DcFlushEnable : BITFIELD_RANGE(5, 5); + uint32_t ProtectedMemoryApplicationId : BITFIELD_RANGE(6, 6); + uint32_t PipeControlFlushEnable : BITFIELD_RANGE(7, 7); + uint32_t NotifyEnable : BITFIELD_RANGE(8, 8); + uint32_t IndirectStatePointersDisable : BITFIELD_RANGE(9, 9); + uint32_t TextureCacheInvalidationEnable : BITFIELD_RANGE(10, 10); + uint32_t InstructionCacheInvalidateEnable : BITFIELD_RANGE(11, 11); + uint32_t RenderTargetCacheFlushEnable : BITFIELD_RANGE(12, 12); + uint32_t DepthStallEnable : BITFIELD_RANGE(13, 13); + uint32_t PostSyncOperation : BITFIELD_RANGE(14, 15); + uint32_t GenericMediaStateClear : BITFIELD_RANGE(16, 16); + uint32_t PsdSyncEnable : BITFIELD_RANGE(17, 17); + uint32_t TlbInvalidate : BITFIELD_RANGE(18, 18); + uint32_t GlobalSnapshotCountReset : BITFIELD_RANGE(19, 19); + uint32_t CommandStreamerStallEnable : BITFIELD_RANGE(20, 20); + uint32_t StoreDataIndex : BITFIELD_RANGE(21, 21); + uint32_t Reserved_54 : BITFIELD_RANGE(22, 22); + uint32_t LriPostSyncOperation : BITFIELD_RANGE(23, 23); + uint32_t DestinationAddressType : BITFIELD_RANGE(24, 24); + uint32_t AmfsFlushEnable : BITFIELD_RANGE(25, 25); + uint32_t FlushLlc : BITFIELD_RANGE(26, 26); + uint32_t ProtectedMemoryDisable : BITFIELD_RANGE(27, 27); + uint32_t TileCacheFlushEnable : BITFIELD_RANGE(28, 28); + uint32_t CommandCacheInvalidateEnable : BITFIELD_RANGE(29, 29); + uint32_t L3FabricFlush : BITFIELD_RANGE(30, 30); + uint32_t Reserved_63 : BITFIELD_RANGE(31, 31); + // DWORD 2 + uint32_t Reserved_64 : BITFIELD_RANGE(0, 1); + uint32_t Address : BITFIELD_RANGE(2, 31); + // DWORD 3 + uint32_t AddressHigh; + // DWORD 4-5 + uint64_t ImmediateData; + } Common; + uint32_t RawData[6]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_DWORD_COUNT_N = 0x4, + } DWORD_LENGTH; + typedef enum tag_3D_COMMAND_SUB_OPCODE { + _3D_COMMAND_SUB_OPCODE_PIPE_CONTROL = 0x0, + } _3D_COMMAND_SUB_OPCODE; + typedef enum tag_3D_COMMAND_OPCODE { + _3D_COMMAND_OPCODE_PIPE_CONTROL = 0x2, + } _3D_COMMAND_OPCODE; + typedef enum tagCOMMAND_SUBTYPE { + COMMAND_SUBTYPE_GFXPIPE_3D = 0x3, + } COMMAND_SUBTYPE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_GFXPIPE = 0x3, + } COMMAND_TYPE; + typedef enum tagPOST_SYNC_OPERATION { + POST_SYNC_OPERATION_NO_WRITE = 0x0, + POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA = 0x1, + POST_SYNC_OPERATION_WRITE_PS_DEPTH_COUNT = 0x2, + POST_SYNC_OPERATION_WRITE_TIMESTAMP = 0x3, + } POST_SYNC_OPERATION; + typedef enum tagGLOBAL_SNAPSHOT_COUNT_RESET { + GLOBAL_SNAPSHOT_COUNT_RESET_DONT_RESET = 0x0, + GLOBAL_SNAPSHOT_COUNT_RESET_RESET = 0x1, + } GLOBAL_SNAPSHOT_COUNT_RESET; + typedef enum tagLRI_POST_SYNC_OPERATION { + LRI_POST_SYNC_OPERATION_NO_LRI_OPERATION = 0x0, + LRI_POST_SYNC_OPERATION_MMIO_WRITE_IMMEDIATE_DATA = 0x1, + } LRI_POST_SYNC_OPERATION; + typedef enum tagDESTINATION_ADDRESS_TYPE { + DESTINATION_ADDRESS_TYPE_PPGTT = 0x0, + DESTINATION_ADDRESS_TYPE_GGTT = 0x1, + } DESTINATION_ADDRESS_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N; + TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_PIPE_CONTROL; + TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_PIPE_CONTROL; + TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_3D; + TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; + TheStructure.Common.PostSyncOperation = POST_SYNC_OPERATION_NO_WRITE; + TheStructure.Common.GlobalSnapshotCountReset = GLOBAL_SNAPSHOT_COUNT_RESET_DONT_RESET; + TheStructure.Common.LriPostSyncOperation = LRI_POST_SYNC_OPERATION_NO_LRI_OPERATION; + TheStructure.Common.DestinationAddressType = DESTINATION_ADDRESS_TYPE_PPGTT; + TheStructure.Common.CommandStreamerStallEnable = 1u; + } + static tagPIPE_CONTROL sInit(void) { + PIPE_CONTROL state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + UNRECOVERABLE_IF(index >= 6); + return TheStructure.RawData[index]; + } + inline void setHdcPipelineFlush(const bool value) { + TheStructure.Common.HdcPipelineFlush = value; + } + inline bool getHdcPipelineFlush(void) const { + return TheStructure.Common.HdcPipelineFlush; + } + inline void setDepthCacheFlushEnable(const bool value) { + TheStructure.Common.DepthCacheFlushEnable = value; + } + inline bool getDepthCacheFlushEnable(void) const { + return TheStructure.Common.DepthCacheFlushEnable; + } + inline void setStallAtPixelScoreboard(const bool value) { + TheStructure.Common.StallAtPixelScoreboard = value; + } + inline bool getStallAtPixelScoreboard(void) const { + return TheStructure.Common.StallAtPixelScoreboard; + } + inline void setStateCacheInvalidationEnable(const bool value) { + TheStructure.Common.StateCacheInvalidationEnable = value; + } + inline bool getStateCacheInvalidationEnable(void) const { + return TheStructure.Common.StateCacheInvalidationEnable; + } + inline void setConstantCacheInvalidationEnable(const bool value) { + TheStructure.Common.ConstantCacheInvalidationEnable = value; + } + inline bool getConstantCacheInvalidationEnable(void) const { + return TheStructure.Common.ConstantCacheInvalidationEnable; + } + inline void setVfCacheInvalidationEnable(const bool value) { + TheStructure.Common.VfCacheInvalidationEnable = value; + } + inline bool getVfCacheInvalidationEnable(void) const { + return TheStructure.Common.VfCacheInvalidationEnable; + } + inline void setDcFlushEnable(const bool value) { + TheStructure.Common.DcFlushEnable = value; + } + inline bool getDcFlushEnable(void) const { + return TheStructure.Common.DcFlushEnable; + } + inline void setProtectedMemoryApplicationId(const uint32_t value) { + TheStructure.Common.ProtectedMemoryApplicationId = value; + } + inline uint32_t getProtectedMemoryApplicationId(void) const { + return (TheStructure.Common.ProtectedMemoryApplicationId); + } + inline void setPipeControlFlushEnable(const bool value) { + TheStructure.Common.PipeControlFlushEnable = value; + } + inline bool getPipeControlFlushEnable(void) const { + return TheStructure.Common.PipeControlFlushEnable; + } + inline void setNotifyEnable(const bool value) { + TheStructure.Common.NotifyEnable = value; + } + inline bool getNotifyEnable(void) const { + return TheStructure.Common.NotifyEnable; + } + inline void setIndirectStatePointersDisable(const bool value) { + TheStructure.Common.IndirectStatePointersDisable = value; + } + inline bool getIndirectStatePointersDisable(void) const { + return TheStructure.Common.IndirectStatePointersDisable; + } + inline void setTextureCacheInvalidationEnable(const bool value) { + TheStructure.Common.TextureCacheInvalidationEnable = value; + } + inline bool getTextureCacheInvalidationEnable(void) const { + return TheStructure.Common.TextureCacheInvalidationEnable; + } + inline void setInstructionCacheInvalidateEnable(const bool value) { + TheStructure.Common.InstructionCacheInvalidateEnable = value; + } + inline bool getInstructionCacheInvalidateEnable(void) const { + return TheStructure.Common.InstructionCacheInvalidateEnable; + } + inline void setRenderTargetCacheFlushEnable(const bool value) { + TheStructure.Common.RenderTargetCacheFlushEnable = value; + } + inline bool getRenderTargetCacheFlushEnable(void) const { + return TheStructure.Common.RenderTargetCacheFlushEnable; + } + inline void setDepthStallEnable(const bool value) { + TheStructure.Common.DepthStallEnable = value; + } + inline bool getDepthStallEnable(void) const { + return TheStructure.Common.DepthStallEnable; + } + inline void setPostSyncOperation(const POST_SYNC_OPERATION value) { + TheStructure.Common.PostSyncOperation = value; + } + inline POST_SYNC_OPERATION getPostSyncOperation(void) const { + return static_cast(TheStructure.Common.PostSyncOperation); + } + inline void setGenericMediaStateClear(const bool value) { + TheStructure.Common.GenericMediaStateClear = value; + } + inline bool getGenericMediaStateClear(void) const { + return TheStructure.Common.GenericMediaStateClear; + } + inline void setPsdSyncEnable(const bool value) { + TheStructure.Common.PsdSyncEnable = value; + } + inline bool getPsdSyncEnable(void) const { + return TheStructure.Common.PsdSyncEnable; + } + inline void setTlbInvalidate(const bool value) { + TheStructure.Common.TlbInvalidate = value; + } + inline bool getTlbInvalidate(void) const { + return TheStructure.Common.TlbInvalidate; + } + inline void setGlobalSnapshotCountReset(const GLOBAL_SNAPSHOT_COUNT_RESET value) { + TheStructure.Common.GlobalSnapshotCountReset = value; + } + inline GLOBAL_SNAPSHOT_COUNT_RESET getGlobalSnapshotCountReset(void) const { + return static_cast(TheStructure.Common.GlobalSnapshotCountReset); + } + inline void setCommandStreamerStallEnable(const bool value) { + TheStructure.Common.CommandStreamerStallEnable = value; + } + inline bool getCommandStreamerStallEnable(void) const { + return TheStructure.Common.CommandStreamerStallEnable; + } + inline void setStoreDataIndex(const bool value) { + TheStructure.Common.StoreDataIndex = value; + } + inline bool getStoreDataIndex(void) const { + return TheStructure.Common.StoreDataIndex; + } + inline void setLriPostSyncOperation(const LRI_POST_SYNC_OPERATION value) { + TheStructure.Common.LriPostSyncOperation = value; + } + inline LRI_POST_SYNC_OPERATION getLriPostSyncOperation(void) const { + return static_cast(TheStructure.Common.LriPostSyncOperation); + } + inline void setDestinationAddressType(const DESTINATION_ADDRESS_TYPE value) { + TheStructure.Common.DestinationAddressType = value; + } + inline DESTINATION_ADDRESS_TYPE getDestinationAddressType(void) const { + return static_cast(TheStructure.Common.DestinationAddressType); + } + inline void setAmfsFlushEnable(const bool value) { + TheStructure.Common.AmfsFlushEnable = value; + } + inline bool getAmfsFlushEnable(void) const { + return TheStructure.Common.AmfsFlushEnable; + } + inline void setFlushLlc(const bool value) { + TheStructure.Common.FlushLlc = value; + } + inline bool getFlushLlc(void) const { + return TheStructure.Common.FlushLlc; + } + inline void setProtectedMemoryDisable(const uint32_t value) { + TheStructure.Common.ProtectedMemoryDisable = value; + } + inline uint32_t getProtectedMemoryDisable(void) const { + return (TheStructure.Common.ProtectedMemoryDisable); + } + inline void setTileCacheFlushEnable(const bool value) { + TheStructure.Common.TileCacheFlushEnable = value; + } + inline bool getTileCacheFlushEnable(void) const { + return TheStructure.Common.TileCacheFlushEnable; + } + inline void setCommandCacheInvalidateEnable(const bool value) { + TheStructure.Common.CommandCacheInvalidateEnable = value; + } + inline bool getCommandCacheInvalidateEnable(void) const { + return TheStructure.Common.CommandCacheInvalidateEnable; + } + inline void setL3FabricFlush(const bool value) { + TheStructure.Common.L3FabricFlush = value; + } + inline bool getL3FabricFlush(void) const { + return TheStructure.Common.L3FabricFlush; + } + typedef enum tagADDRESS { + ADDRESS_BIT_SHIFT = 0x2, + ADDRESS_ALIGN_SIZE = 0x4, + } ADDRESS; + inline void setAddress(const uint32_t value) { + UNRECOVERABLE_IF(value > 0xffffffff); + TheStructure.Common.Address = value >> ADDRESS_BIT_SHIFT; + } + inline uint32_t getAddress(void) const { + return TheStructure.Common.Address << ADDRESS_BIT_SHIFT; + } + inline void setAddressHigh(const uint32_t value) { + TheStructure.Common.AddressHigh = value; + } + inline uint32_t getAddressHigh(void) const { + return TheStructure.Common.AddressHigh; + } + inline void setImmediateData(const uint64_t value) { + TheStructure.Common.ImmediateData = value; + } + inline uint64_t getImmediateData(void) const { + return TheStructure.Common.ImmediateData; + } +} PIPE_CONTROL; +STATIC_ASSERT(24 == sizeof(PIPE_CONTROL)); + +typedef struct tagMI_SEMAPHORE_WAIT { + union tagTheStructure { + struct tagCommon { + // DWORD 0 + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 11); + uint32_t CompareOperation : BITFIELD_RANGE(12, 14); + uint32_t WaitMode : BITFIELD_RANGE(15, 15); + uint32_t RegisterPollMode : BITFIELD_RANGE(16, 16); + uint32_t Reserved_17 : BITFIELD_RANGE(17, 21); + uint32_t MemoryType : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + // DWORD 1 + uint32_t SemaphoreDataDword; + // DWORD 2-3 + uint64_t Reserved_64 : BITFIELD_RANGE(0, 1); + uint64_t SemaphoreAddress : BITFIELD_RANGE(2, 63); + // DWORD 4 + uint32_t Reserved_128 : BITFIELD_RANGE(0, 4); + uint32_t WaitTokenNumber : BITFIELD_RANGE(5, 9); + uint32_t Reserved_138 : BITFIELD_RANGE(10, 31); + } Common; + uint32_t RawData[5]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x3, + } DWORD_LENGTH; + typedef enum tagCOMPARE_OPERATION { + COMPARE_OPERATION_SAD_GREATER_THAN_SDD = 0x0, + COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD = 0x1, + COMPARE_OPERATION_SAD_LESS_THAN_SDD = 0x2, + COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD = 0x3, + COMPARE_OPERATION_SAD_EQUAL_SDD = 0x4, + COMPARE_OPERATION_SAD_NOT_EQUAL_SDD = 0x5, + } COMPARE_OPERATION; + typedef enum tagWAIT_MODE { + WAIT_MODE_SIGNAL_MODE = 0x0, + WAIT_MODE_POLLING_MODE = 0x1, + } WAIT_MODE; + typedef enum tagREGISTER_POLL_MODE { + REGISTER_POLL_MODE_MEMORY_POLL = 0x0, + REGISTER_POLL_MODE_REGISTER_POLL = 0x1, + } REGISTER_POLL_MODE; + typedef enum tagMEMORY_TYPE { + MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS = 0x0, + MEMORY_TYPE_GLOBAL_GRAPHICS_ADDRESS = 0x1, + } MEMORY_TYPE; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT = 0x1c, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; + TheStructure.Common.CompareOperation = COMPARE_OPERATION_SAD_GREATER_THAN_SDD; + TheStructure.Common.WaitMode = WAIT_MODE_SIGNAL_MODE; + TheStructure.Common.RegisterPollMode = REGISTER_POLL_MODE_REGISTER_POLL; + TheStructure.Common.MemoryType = MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_SEMAPHORE_WAIT sInit(void) { + MI_SEMAPHORE_WAIT state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + UNRECOVERABLE_IF(index >= 5); + return TheStructure.RawData[index]; + } + inline void setCompareOperation(const COMPARE_OPERATION value) { + TheStructure.Common.CompareOperation = value; + } + inline COMPARE_OPERATION getCompareOperation(void) const { + return static_cast(TheStructure.Common.CompareOperation); + } + inline void setWaitMode(const WAIT_MODE value) { + TheStructure.Common.WaitMode = value; + } + inline WAIT_MODE getWaitMode(void) const { + return static_cast(TheStructure.Common.WaitMode); + } + inline void setRegisterPollMode(const REGISTER_POLL_MODE value) { + TheStructure.Common.RegisterPollMode = value; + } + inline REGISTER_POLL_MODE getRegisterPollMode(void) const { + return static_cast(TheStructure.Common.RegisterPollMode); + } + inline void setMemoryType(const MEMORY_TYPE value) { + TheStructure.Common.MemoryType = value; + } + inline MEMORY_TYPE getMemoryType(void) const { + return static_cast(TheStructure.Common.MemoryType); + } + inline void setSemaphoreDataDword(const uint32_t value) { + TheStructure.Common.SemaphoreDataDword = value; + } + inline uint32_t getSemaphoreDataDword(void) const { + return TheStructure.Common.SemaphoreDataDword; + } + typedef enum tagSEMAPHOREADDRESS { + SEMAPHOREADDRESS_BIT_SHIFT = 0x2, + SEMAPHOREADDRESS_ALIGN_SIZE = 0x4, + } SEMAPHOREADDRESS; + inline void setSemaphoreGraphicsAddress(const uint64_t value) { + TheStructure.Common.SemaphoreAddress = value >> SEMAPHOREADDRESS_BIT_SHIFT; + } + inline uint64_t getSemaphoreGraphicsAddress(void) const { + return TheStructure.Common.SemaphoreAddress << SEMAPHOREADDRESS_BIT_SHIFT; + } + inline void setWaitTokenNumber(const uint32_t value) { + UNRECOVERABLE_IF(value > 0x1f); + TheStructure.Common.WaitTokenNumber = value; + } + inline uint32_t getWaitTokenNumber(void) const { + return TheStructure.Common.WaitTokenNumber; + } +} MI_SEMAPHORE_WAIT; +STATIC_ASSERT(20 == sizeof(MI_SEMAPHORE_WAIT)); + +typedef struct tagMI_STORE_DATA_IMM { + union tagTheStructure { + struct tagCommon { + // DWORD 0 + uint32_t DwordLength : BITFIELD_RANGE(0, 9); + uint32_t Reserved_10 : BITFIELD_RANGE(10, 20); + uint32_t StoreQword : BITFIELD_RANGE(21, 21); + uint32_t UseGlobalGtt : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + // DWORD 1-2 + uint64_t CoreModeEnable : BITFIELD_RANGE(0, 0); + uint64_t Reserved_33 : BITFIELD_RANGE(1, 1); + uint64_t Address : BITFIELD_RANGE(2, 63); + // DWORD 3 + uint32_t DataDword0; + // DWORD 4 + uint32_t DataDword1; + } Common; + uint32_t RawData[5]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_STORE_DWORD = 0x2, + DWORD_LENGTH_STORE_QWORD = 0x3, + } DWORD_LENGTH; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_STORE_DATA_IMM = 0x20, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_STORE_DWORD; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_STORE_DATA_IMM; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_STORE_DATA_IMM sInit(void) { + MI_STORE_DATA_IMM state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + UNRECOVERABLE_IF(index >= 5); + return TheStructure.RawData[index]; + } + inline void setDwordLength(const DWORD_LENGTH value) { + TheStructure.Common.DwordLength = value; + } + inline DWORD_LENGTH getDwordLength(void) const { + return static_cast(TheStructure.Common.DwordLength); + } + inline void setStoreQword(const bool value) { + TheStructure.Common.StoreQword = value; + } + inline bool getStoreQword(void) const { + return TheStructure.Common.StoreQword; + } + inline void setUseGlobalGtt(const bool value) { + TheStructure.Common.UseGlobalGtt = value; + } + inline bool getUseGlobalGtt(void) const { + return TheStructure.Common.UseGlobalGtt; + } + inline void setCoreModeEnable(const bool value) { + TheStructure.Common.CoreModeEnable = value; + } + inline bool getCoreModeEnable(void) const { + return TheStructure.Common.CoreModeEnable; + } + typedef enum tagADDRESS { + ADDRESS_BIT_SHIFT = 0x2, + ADDRESS_ALIGN_SIZE = 0x4, + } ADDRESS; + inline void setAddress(const uint64_t value) { + UNRECOVERABLE_IF(value > 0x3fffffffffffffffL); + TheStructure.Common.Address = value >> ADDRESS_BIT_SHIFT; + } + inline uint64_t getAddress(void) const { + return TheStructure.Common.Address << ADDRESS_BIT_SHIFT; + } + inline void setDataDword0(const uint32_t value) { + TheStructure.Common.DataDword0 = value; + } + inline uint32_t getDataDword0(void) const { + return TheStructure.Common.DataDword0; + } + inline void setDataDword1(const uint32_t value) { + TheStructure.Common.DataDword1 = value; + } + inline uint32_t getDataDword1(void) const { + return TheStructure.Common.DataDword1; + } +} MI_STORE_DATA_IMM; +STATIC_ASSERT(20 == sizeof(MI_STORE_DATA_IMM)); + +typedef struct tagSTATE_SIP { + union tagTheStructure { + struct tagCommon { + // DWORD 0 + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 15); + uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); + uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); + uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + // DWORD 1-2 + uint64_t Reserved_32 : BITFIELD_RANGE(0, 3); + uint64_t SystemInstructionPointer : BITFIELD_RANGE(4, 63); + } Common; + uint32_t RawData[3]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_DWORD_COUNT_N = 0x1, + } DWORD_LENGTH; + typedef enum tag_3D_COMMAND_SUB_OPCODE { + _3D_COMMAND_SUB_OPCODE_STATE_SIP = 0x2, + } _3D_COMMAND_SUB_OPCODE; + typedef enum tag_3D_COMMAND_OPCODE { + _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1, + } _3D_COMMAND_OPCODE; + typedef enum tagCOMMAND_SUBTYPE { + COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0, + } COMMAND_SUBTYPE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_GFXPIPE = 0x3, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N; + TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_STATE_SIP; + TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED; + TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON; + TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; + } + static tagSTATE_SIP sInit(void) { + STATE_SIP state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + UNRECOVERABLE_IF(index >= 3); + return TheStructure.RawData[index]; + } + typedef enum tagSYSTEMINSTRUCTIONPOINTER { + SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT = 0x4, + SYSTEMINSTRUCTIONPOINTER_ALIGN_SIZE = 0x10, + } SYSTEMINSTRUCTIONPOINTER; + inline void setSystemInstructionPointer(const uint64_t value) { + UNRECOVERABLE_IF(value > 0xffffffffffffffffL); + TheStructure.Common.SystemInstructionPointer = value >> SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT; + } + inline uint64_t getSystemInstructionPointer(void) const { + return (uint64_t)TheStructure.Common.SystemInstructionPointer << SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT; + } +} STATE_SIP; +STATIC_ASSERT(12 == sizeof(STATE_SIP)); + +typedef struct tagGPGPU_CSR_BASE_ADDRESS { + union tagTheStructure { + struct tagCommon { + // DWORD 0 + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 15); + uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); + uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); + uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + // DWORD 1-2 + uint64_t Reserved_32 : BITFIELD_RANGE(0, 11); + uint64_t GpgpuCsrBaseAddress : BITFIELD_RANGE(12, 63); + } Common; + uint32_t RawData[3]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_LENGTH_1 = 0x1, + } DWORD_LENGTH; + typedef enum tag_3D_COMMAND_SUB_OPCODE { + _3D_COMMAND_SUB_OPCODE_GPGPU_CSR_BASE_ADDRESS = 0x4, + } _3D_COMMAND_SUB_OPCODE; + typedef enum tag_3D_COMMAND_OPCODE { + _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1, + } _3D_COMMAND_OPCODE; + typedef enum tagCOMMAND_SUBTYPE { + COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0, + } COMMAND_SUBTYPE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_GFXPIPE = 0x3, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_LENGTH_1; + TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_GPGPU_CSR_BASE_ADDRESS; + TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED; + TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON; + TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; + } + static tagGPGPU_CSR_BASE_ADDRESS sInit(void) { + GPGPU_CSR_BASE_ADDRESS state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + UNRECOVERABLE_IF(index >= 3); + return TheStructure.RawData[index]; + } + typedef enum tagGPGPUCSRBASEADDRESS { + GPGPUCSRBASEADDRESS_BIT_SHIFT = 0xc, + GPGPUCSRBASEADDRESS_ALIGN_SIZE = 0x1000, + } GPGPUCSRBASEADDRESS; + inline void setGpgpuCsrBaseAddress(const uint64_t value) { + UNRECOVERABLE_IF(value > 0xffffffffffffffffL); + TheStructure.Common.GpgpuCsrBaseAddress = value >> GPGPUCSRBASEADDRESS_BIT_SHIFT; + } + inline uint64_t getGpgpuCsrBaseAddress(void) const { + return (uint64_t)TheStructure.Common.GpgpuCsrBaseAddress << GPGPUCSRBASEADDRESS_BIT_SHIFT; + } +} GPGPU_CSR_BASE_ADDRESS; +STATIC_ASSERT(12 == sizeof(GPGPU_CSR_BASE_ADDRESS)); + #pragma pack() diff --git a/core/generated/gen12lp/hw_cmds_generated_patched.inl b/core/generated/gen12lp/hw_cmds_generated_patched.inl deleted file mode 100644 index 54b0cd7f74..0000000000 --- a/core/generated/gen12lp/hw_cmds_generated_patched.inl +++ /dev/null @@ -1,1033 +0,0 @@ -/* - * Copyright (C) 2019 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#pragma pack(1) -typedef struct tagMEDIA_SURFACE_STATE { - union tagTheStructure { - struct tagCommon { - // DWORD 0 - uint32_t Reserved_0 : BITFIELD_RANGE(0, 29); - uint32_t Rotation : BITFIELD_RANGE(30, 31); - // DWORD 1 - uint32_t Cr_VCb_UPixelOffsetVDirection : BITFIELD_RANGE(0, 1); - uint32_t PictureStructure : BITFIELD_RANGE(2, 3); - uint32_t Width : BITFIELD_RANGE(4, 17); - uint32_t Height : BITFIELD_RANGE(18, 31); - // DWORD 2 - uint32_t TileMode : BITFIELD_RANGE(0, 1); - uint32_t HalfPitchForChroma : BITFIELD_RANGE(2, 2); - uint32_t SurfacePitch : BITFIELD_RANGE(3, 20); - uint32_t AddressControl : BITFIELD_RANGE(21, 21); - uint32_t MemoryCompressionEnable : BITFIELD_RANGE(22, 22); - uint32_t MemoryCompressionType : BITFIELD_RANGE(23, 23); - uint32_t Cr_VCb_UPixelOffsetVDirectionMsb : BITFIELD_RANGE(24, 24); - uint32_t Cr_VCb_UPixelOffsetUDirection : BITFIELD_RANGE(25, 25); - uint32_t InterleaveChroma : BITFIELD_RANGE(26, 26); - uint32_t SurfaceFormat : BITFIELD_RANGE(27, 31); - // DWORD 3 - uint32_t YOffsetForU_Cb : BITFIELD_RANGE(0, 13); - uint32_t Reserved_110 : BITFIELD_RANGE(14, 15); - uint32_t XOffsetForU_Cb : BITFIELD_RANGE(16, 29); - uint32_t Reserved_126 : BITFIELD_RANGE(30, 31); - // DWORD 4 - uint32_t Reserved_128; - // DWORD 5 - uint32_t SurfaceMemoryObjectControlStateReserved_160 : BITFIELD_RANGE(0, 0); - uint32_t SurfaceMemoryObjectControlStateIndexToMocsTables : BITFIELD_RANGE(1, 6); - uint32_t Reserved_167 : BITFIELD_RANGE(7, 17); - uint32_t TiledResourceMode : BITFIELD_RANGE(18, 19); - uint32_t Reserved_180 : BITFIELD_RANGE(20, 29); - uint32_t VerticalLineStrideOffset : BITFIELD_RANGE(30, 30); - uint32_t VerticalLineStride : BITFIELD_RANGE(31, 31); - // DWORD 6 - uint32_t SurfaceBaseAddressLow; - // DWORD 7 - uint32_t SurfaceBaseAddressHigh : BITFIELD_RANGE(0, 15); - uint32_t Reserved_240 : BITFIELD_RANGE(16, 31); - } Common; - struct tagSurfaceFormatIsOneOfPlanarFormats { - // DWORD 0 - uint32_t Reserved_0 : BITFIELD_RANGE(0, 15); - uint32_t YOffset : BITFIELD_RANGE(16, 19); - uint32_t XOffset : BITFIELD_RANGE(20, 26); - uint32_t Reserved_27 : BITFIELD_RANGE(27, 31); - // DWORD 1 - uint32_t Reserved_32; - // DWORD 2 - uint32_t Reserved_64; - // DWORD 3 - uint32_t Reserved_96; - // DWORD 4 - uint32_t Reserved_128; - // DWORD 5 - uint32_t Reserved_160; - // DWORD 6 - uint32_t Reserved_192; - // DWORD 7 - uint32_t Reserved_224; - } SurfaceFormatIsOneOfPlanarFormats; - struct tag_SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0 { - // DWORD 0 - uint32_t Reserved_0; - // DWORD 1 - uint32_t Reserved_32; - // DWORD 2 - uint32_t Reserved_64; - // DWORD 3 - uint32_t Reserved_96; - // DWORD 4 - uint32_t YOffsetForV_Cr : BITFIELD_RANGE(0, 14); - uint32_t Reserved_143 : BITFIELD_RANGE(15, 15); - uint32_t XOffsetForV_Cr : BITFIELD_RANGE(16, 29); - uint32_t Reserved_158 : BITFIELD_RANGE(30, 31); - // DWORD 5 - uint32_t Reserved_160; - // DWORD 6 - uint32_t Reserved_192; - // DWORD 7 - uint32_t Reserved_224; - } _SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0; - uint32_t RawData[8]; - } TheStructure; - typedef enum tagROTATION { - ROTATION_NO_ROTATION_OR_0_DEGREE = 0x0, - ROTATION_90_DEGREE_ROTATION = 0x1, - ROTATION_180_DEGREE_ROTATION = 0x2, - ROTATION_270_DEGREE_ROTATION = 0x3, - } ROTATION; - typedef enum tagPICTURE_STRUCTURE { - PICTURE_STRUCTURE_FRAME_PICTURE = 0x0, - PICTURE_STRUCTURE_TOP_FIELD_PICTURE = 0x1, - PICTURE_STRUCTURE_BOTTOM_FIELD_PICTURE = 0x2, - PICTURE_STRUCTURE_INVALID_NOT_ALLOWED = 0x3, - } PICTURE_STRUCTURE; - typedef enum tagTILE_MODE { - TILE_MODE_TILEMODE_LINEAR = 0x0, - TILE_MODE_TILEMODE_XMAJOR = 0x2, - TILE_MODE_TILEMODE_YMAJOR = 0x3, - } TILE_MODE; - typedef enum tagADDRESS_CONTROL { - ADDRESS_CONTROL_CLAMP = 0x0, - ADDRESS_CONTROL_MIRROR = 0x1, - } ADDRESS_CONTROL; - typedef enum tagMEMORY_COMPRESSION_TYPE { - MEMORY_COMPRESSION_TYPE_MEDIA_COMPRESSION = 0x0, - MEMORY_COMPRESSION_TYPE_RENDER_COMPRESSION = 0x1, - } MEMORY_COMPRESSION_TYPE; - typedef enum tagSURFACE_FORMAT { - SURFACE_FORMAT_YCRCB_NORMAL = 0x0, - SURFACE_FORMAT_YCRCB_SWAPUVY = 0x1, - SURFACE_FORMAT_YCRCB_SWAPUV = 0x2, - SURFACE_FORMAT_YCRCB_SWAPY = 0x3, - SURFACE_FORMAT_PLANAR_420_8 = 0x4, - SURFACE_FORMAT_Y8_UNORM_VA = 0x5, - SURFACE_FORMAT_R10G10B10A2_UNORM = 0x8, - SURFACE_FORMAT_R8G8B8A8_UNORM = 0x9, - SURFACE_FORMAT_R8B8_UNORM_CRCB = 0xa, - SURFACE_FORMAT_R8_UNORM_CRCB = 0xb, - SURFACE_FORMAT_Y8_UNORM = 0xc, - SURFACE_FORMAT_A8Y8U8V8_UNORM = 0xd, - SURFACE_FORMAT_B8G8R8A8_UNORM = 0xe, - SURFACE_FORMAT_R16G16B16A16 = 0xf, - SURFACE_FORMAT_Y1_UNORM = 0x10, - SURFACE_FORMAT_PLANAR_422_8 = 0x12, - SURFACE_FORMAT_PLANAR_420_16 = 0x17, - SURFACE_FORMAT_R16B16_UNORM_CRCB = 0x18, - SURFACE_FORMAT_R16_UNORM_CRCB = 0x19, - SURFACE_FORMAT_Y16_UNORM = 0x1a, - } SURFACE_FORMAT; - typedef enum tagTILED_RESOURCE_MODE { - TILED_RESOURCE_MODE_TRMODE_NONE = 0x0, - TILED_RESOURCE_MODE_TRMODE_TILEYF = 0x1, - TILED_RESOURCE_MODE_TRMODE_TILEYS = 0x2, - } TILED_RESOURCE_MODE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.Rotation = ROTATION_NO_ROTATION_OR_0_DEGREE; - TheStructure.Common.PictureStructure = PICTURE_STRUCTURE_FRAME_PICTURE; - TheStructure.Common.TileMode = TILE_MODE_TILEMODE_LINEAR; - TheStructure.Common.AddressControl = ADDRESS_CONTROL_CLAMP; - TheStructure.Common.MemoryCompressionType = MEMORY_COMPRESSION_TYPE_MEDIA_COMPRESSION; - TheStructure.Common.SurfaceFormat = SURFACE_FORMAT_YCRCB_NORMAL; - TheStructure.Common.TiledResourceMode = TILED_RESOURCE_MODE_TRMODE_NONE; - } - static tagMEDIA_SURFACE_STATE sInit(void) { - MEDIA_SURFACE_STATE state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - UNRECOVERABLE_IF(index >= 8); - return TheStructure.RawData[index]; - } - inline void setRotation(const ROTATION value) { - TheStructure.Common.Rotation = value; - } - inline ROTATION getRotation(void) const { - return static_cast(TheStructure.Common.Rotation); - } - inline void setCrVCbUPixelOffsetVDirection(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x3); - TheStructure.Common.Cr_VCb_UPixelOffsetVDirection = value; - } - inline uint32_t getCrVCbUPixelOffsetVDirection(void) const { - return TheStructure.Common.Cr_VCb_UPixelOffsetVDirection; - } - inline void setPictureStructure(const PICTURE_STRUCTURE value) { - TheStructure.Common.PictureStructure = value; - } - inline PICTURE_STRUCTURE getPictureStructure(void) const { - return static_cast(TheStructure.Common.PictureStructure); - } - inline void setWidth(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x3fff); - TheStructure.Common.Width = value - 1; - } - inline uint32_t getWidth(void) const { - return TheStructure.Common.Width + 1; - } - inline void setHeight(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x3fff); - TheStructure.Common.Height = value - 1; - } - inline uint32_t getHeight(void) const { - return TheStructure.Common.Height + 1; - } - inline void setTileMode(const TILE_MODE value) { - TheStructure.Common.TileMode = value; - } - inline TILE_MODE getTileMode(void) const { - return static_cast(TheStructure.Common.TileMode); - } - inline void setHalfPitchForChroma(const bool value) { - TheStructure.Common.HalfPitchForChroma = value; - } - inline bool getHalfPitchForChroma(void) const { - return TheStructure.Common.HalfPitchForChroma; - } - inline void setSurfacePitch(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x3ffff); - TheStructure.Common.SurfacePitch = value - 1; - } - inline uint32_t getSurfacePitch(void) const { - return TheStructure.Common.SurfacePitch + 1; - } - inline void setAddressControl(const ADDRESS_CONTROL value) { - TheStructure.Common.AddressControl = value; - } - inline ADDRESS_CONTROL getAddressControl(void) const { - return static_cast(TheStructure.Common.AddressControl); - } - inline void setMemoryCompressionEnable(const bool value) { - TheStructure.Common.MemoryCompressionEnable = value; - } - inline bool getMemoryCompressionEnable(void) const { - return TheStructure.Common.MemoryCompressionEnable; - } - inline void setMemoryCompressionType(const MEMORY_COMPRESSION_TYPE value) { - TheStructure.Common.MemoryCompressionType = value; - } - inline MEMORY_COMPRESSION_TYPE getMemoryCompressionType(void) const { - return static_cast(TheStructure.Common.MemoryCompressionType); - } - inline void setCrVCbUPixelOffsetVDirectionMsb(const bool value) { - TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb = value; - } - inline bool getCrVCbUPixelOffsetVDirectionMsb(void) const { - return TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb; - } - inline void setCrVCbUPixelOffsetUDirection(const bool value) { - TheStructure.Common.Cr_VCb_UPixelOffsetUDirection = value; - } - inline bool getCrVCbUPixelOffsetUDirection(void) const { - return TheStructure.Common.Cr_VCb_UPixelOffsetUDirection; - } - inline void setInterleaveChroma(const bool value) { - TheStructure.Common.InterleaveChroma = value; - } - inline bool getInterleaveChroma(void) const { - return TheStructure.Common.InterleaveChroma; - } - inline void setSurfaceFormat(const SURFACE_FORMAT value) { - TheStructure.Common.SurfaceFormat = value; - } - inline SURFACE_FORMAT getSurfaceFormat(void) const { - return static_cast(TheStructure.Common.SurfaceFormat); - } - inline void setYOffsetForUCb(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x3fff); - TheStructure.Common.YOffsetForU_Cb = value; - } - inline uint32_t getYOffsetForUCb(void) const { - return TheStructure.Common.YOffsetForU_Cb; - } - inline void setXOffsetForUCb(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x3fff); - TheStructure.Common.XOffsetForU_Cb = value; - } - inline uint32_t getXOffsetForUCb(void) const { - return TheStructure.Common.XOffsetForU_Cb; - } - inline void setSurfaceMemoryObjectControlStateIndexToMocsTables(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x3f); - TheStructure.Common.SurfaceMemoryObjectControlStateIndexToMocsTables = value; - } - inline uint32_t getSurfaceMemoryObjectControlStateIndexToMocsTables(void) const { - return TheStructure.Common.SurfaceMemoryObjectControlStateIndexToMocsTables; - } - inline void setTiledResourceMode(const TILED_RESOURCE_MODE value) { - TheStructure.Common.TiledResourceMode = value; - } - inline TILED_RESOURCE_MODE getTiledResourceMode(void) const { - return static_cast(TheStructure.Common.TiledResourceMode); - } - inline void setVerticalLineStrideOffset(const bool value) { - TheStructure.Common.VerticalLineStrideOffset = value; - } - inline bool getVerticalLineStrideOffset(void) const { - return TheStructure.Common.VerticalLineStrideOffset; - } - inline void setVerticalLineStride(const bool value) { - TheStructure.Common.VerticalLineStride = value; - } - inline bool getVerticalLineStride(void) const { - return TheStructure.Common.VerticalLineStride; - } - inline void setSurfaceBaseAddress(const uint64_t value) { - TheStructure.Common.SurfaceBaseAddressLow = static_cast(value & 0xffffffff); - TheStructure.Common.SurfaceBaseAddressHigh = (value >> 32) & 0xffffffff; - } - inline uint64_t getSurfaceBaseAddress(void) const { - return (TheStructure.Common.SurfaceBaseAddressLow | - static_cast(TheStructure.Common.SurfaceBaseAddressHigh) << 32); - } - inline void setSurfaceBaseAddressHigh(const uint32_t value) { - UNRECOVERABLE_IF(value > 0xffff); - TheStructure.Common.SurfaceBaseAddressHigh = value; - } - inline uint32_t getSurfaceBaseAddressHigh(void) const { - return TheStructure.Common.SurfaceBaseAddressHigh; - } - inline void setYOffset(const uint32_t value) { - UNRECOVERABLE_IF(value > 0xf); - TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset = value; - } - inline uint32_t getYOffset(void) const { - return TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset; - } - inline void setXOffset(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x7f); - TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset = value; - } - inline uint32_t getXOffset(void) const { - return TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset; - } - inline void setYOffsetForVCr(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x7fff); - TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr = value; - } - inline uint32_t getYOffsetForVCr(void) const { - return TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr; - } - inline void setXOffsetForVCr(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x3fff); - TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr = value; - } - inline uint32_t getXOffsetForVCr(void) const { - return TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr; - } -} MEDIA_SURFACE_STATE; -STATIC_ASSERT(32 == sizeof(MEDIA_SURFACE_STATE)); - -typedef struct tagMI_MATH { - union _DW0 { - struct _BitField { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved : BITFIELD_RANGE(8, 22); - uint32_t InstructionOpcode : BITFIELD_RANGE(23, 28); - uint32_t InstructionType : BITFIELD_RANGE(29, 31); - } BitField; - uint32_t Value; - } DW0; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_MATH = 0x1A, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; -} MI_MATH; - -typedef struct tagMI_MATH_ALU_INST_INLINE { - union _DW0 { - struct _BitField { - uint32_t Operand2 : BITFIELD_RANGE(0, 9); - uint32_t Operand1 : BITFIELD_RANGE(10, 19); - uint32_t ALUOpcode : BITFIELD_RANGE(20, 31); - } BitField; - uint32_t Value; - } DW0; -} MI_MATH_ALU_INST_INLINE; - -typedef struct tagPIPE_CONTROL { - union tagTheStructure { - struct tagCommon { - // DWORD 0 - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 8); - uint32_t HdcPipelineFlush : BITFIELD_RANGE(9, 9); - uint32_t Reserved_10 : BITFIELD_RANGE(10, 15); - uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); - uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); - uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - // DWORD 1 - uint32_t DepthCacheFlushEnable : BITFIELD_RANGE(0, 0); - uint32_t StallAtPixelScoreboard : BITFIELD_RANGE(1, 1); - uint32_t StateCacheInvalidationEnable : BITFIELD_RANGE(2, 2); - uint32_t ConstantCacheInvalidationEnable : BITFIELD_RANGE(3, 3); - uint32_t VfCacheInvalidationEnable : BITFIELD_RANGE(4, 4); - uint32_t DcFlushEnable : BITFIELD_RANGE(5, 5); - uint32_t ProtectedMemoryApplicationId : BITFIELD_RANGE(6, 6); - uint32_t PipeControlFlushEnable : BITFIELD_RANGE(7, 7); - uint32_t NotifyEnable : BITFIELD_RANGE(8, 8); - uint32_t IndirectStatePointersDisable : BITFIELD_RANGE(9, 9); - uint32_t TextureCacheInvalidationEnable : BITFIELD_RANGE(10, 10); - uint32_t InstructionCacheInvalidateEnable : BITFIELD_RANGE(11, 11); - uint32_t RenderTargetCacheFlushEnable : BITFIELD_RANGE(12, 12); - uint32_t DepthStallEnable : BITFIELD_RANGE(13, 13); - uint32_t PostSyncOperation : BITFIELD_RANGE(14, 15); - uint32_t GenericMediaStateClear : BITFIELD_RANGE(16, 16); - uint32_t PsdSyncEnable : BITFIELD_RANGE(17, 17); - uint32_t TlbInvalidate : BITFIELD_RANGE(18, 18); - uint32_t GlobalSnapshotCountReset : BITFIELD_RANGE(19, 19); - uint32_t CommandStreamerStallEnable : BITFIELD_RANGE(20, 20); - uint32_t StoreDataIndex : BITFIELD_RANGE(21, 21); - uint32_t Reserved_54 : BITFIELD_RANGE(22, 22); - uint32_t LriPostSyncOperation : BITFIELD_RANGE(23, 23); - uint32_t DestinationAddressType : BITFIELD_RANGE(24, 24); - uint32_t AmfsFlushEnable : BITFIELD_RANGE(25, 25); - uint32_t FlushLlc : BITFIELD_RANGE(26, 26); - uint32_t ProtectedMemoryDisable : BITFIELD_RANGE(27, 27); - uint32_t TileCacheFlushEnable : BITFIELD_RANGE(28, 28); - uint32_t CommandCacheInvalidateEnable : BITFIELD_RANGE(29, 29); - uint32_t L3FabricFlush : BITFIELD_RANGE(30, 30); - uint32_t Reserved_63 : BITFIELD_RANGE(31, 31); - // DWORD 2 - uint32_t Reserved_64 : BITFIELD_RANGE(0, 1); - uint32_t Address : BITFIELD_RANGE(2, 31); - // DWORD 3 - uint32_t AddressHigh; - // DWORD 4-5 - uint64_t ImmediateData; - } Common; - uint32_t RawData[6]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_DWORD_COUNT_N = 0x4, - } DWORD_LENGTH; - typedef enum tag_3D_COMMAND_SUB_OPCODE { - _3D_COMMAND_SUB_OPCODE_PIPE_CONTROL = 0x0, - } _3D_COMMAND_SUB_OPCODE; - typedef enum tag_3D_COMMAND_OPCODE { - _3D_COMMAND_OPCODE_PIPE_CONTROL = 0x2, - } _3D_COMMAND_OPCODE; - typedef enum tagCOMMAND_SUBTYPE { - COMMAND_SUBTYPE_GFXPIPE_3D = 0x3, - } COMMAND_SUBTYPE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_GFXPIPE = 0x3, - } COMMAND_TYPE; - typedef enum tagPOST_SYNC_OPERATION { - POST_SYNC_OPERATION_NO_WRITE = 0x0, - POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA = 0x1, - POST_SYNC_OPERATION_WRITE_PS_DEPTH_COUNT = 0x2, - POST_SYNC_OPERATION_WRITE_TIMESTAMP = 0x3, - } POST_SYNC_OPERATION; - typedef enum tagGLOBAL_SNAPSHOT_COUNT_RESET { - GLOBAL_SNAPSHOT_COUNT_RESET_DONT_RESET = 0x0, - GLOBAL_SNAPSHOT_COUNT_RESET_RESET = 0x1, - } GLOBAL_SNAPSHOT_COUNT_RESET; - typedef enum tagLRI_POST_SYNC_OPERATION { - LRI_POST_SYNC_OPERATION_NO_LRI_OPERATION = 0x0, - LRI_POST_SYNC_OPERATION_MMIO_WRITE_IMMEDIATE_DATA = 0x1, - } LRI_POST_SYNC_OPERATION; - typedef enum tagDESTINATION_ADDRESS_TYPE { - DESTINATION_ADDRESS_TYPE_PPGTT = 0x0, - DESTINATION_ADDRESS_TYPE_GGTT = 0x1, - } DESTINATION_ADDRESS_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N; - TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_PIPE_CONTROL; - TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_PIPE_CONTROL; - TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_3D; - TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; - TheStructure.Common.PostSyncOperation = POST_SYNC_OPERATION_NO_WRITE; - TheStructure.Common.GlobalSnapshotCountReset = GLOBAL_SNAPSHOT_COUNT_RESET_DONT_RESET; - TheStructure.Common.LriPostSyncOperation = LRI_POST_SYNC_OPERATION_NO_LRI_OPERATION; - TheStructure.Common.DestinationAddressType = DESTINATION_ADDRESS_TYPE_PPGTT; - TheStructure.Common.CommandStreamerStallEnable = 1u; - } - static tagPIPE_CONTROL sInit(void) { - PIPE_CONTROL state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - UNRECOVERABLE_IF(index >= 6); - return TheStructure.RawData[index]; - } - inline void setHdcPipelineFlush(const bool value) { - TheStructure.Common.HdcPipelineFlush = value; - } - inline bool getHdcPipelineFlush(void) const { - return TheStructure.Common.HdcPipelineFlush; - } - inline void setDepthCacheFlushEnable(const bool value) { - TheStructure.Common.DepthCacheFlushEnable = value; - } - inline bool getDepthCacheFlushEnable(void) const { - return TheStructure.Common.DepthCacheFlushEnable; - } - inline void setStallAtPixelScoreboard(const bool value) { - TheStructure.Common.StallAtPixelScoreboard = value; - } - inline bool getStallAtPixelScoreboard(void) const { - return TheStructure.Common.StallAtPixelScoreboard; - } - inline void setStateCacheInvalidationEnable(const bool value) { - TheStructure.Common.StateCacheInvalidationEnable = value; - } - inline bool getStateCacheInvalidationEnable(void) const { - return TheStructure.Common.StateCacheInvalidationEnable; - } - inline void setConstantCacheInvalidationEnable(const bool value) { - TheStructure.Common.ConstantCacheInvalidationEnable = value; - } - inline bool getConstantCacheInvalidationEnable(void) const { - return TheStructure.Common.ConstantCacheInvalidationEnable; - } - inline void setVfCacheInvalidationEnable(const bool value) { - TheStructure.Common.VfCacheInvalidationEnable = value; - } - inline bool getVfCacheInvalidationEnable(void) const { - return TheStructure.Common.VfCacheInvalidationEnable; - } - inline void setDcFlushEnable(const bool value) { - TheStructure.Common.DcFlushEnable = value; - } - inline bool getDcFlushEnable(void) const { - return TheStructure.Common.DcFlushEnable; - } - inline void setProtectedMemoryApplicationId(const uint32_t value) { - TheStructure.Common.ProtectedMemoryApplicationId = value; - } - inline uint32_t getProtectedMemoryApplicationId(void) const { - return (TheStructure.Common.ProtectedMemoryApplicationId); - } - inline void setPipeControlFlushEnable(const bool value) { - TheStructure.Common.PipeControlFlushEnable = value; - } - inline bool getPipeControlFlushEnable(void) const { - return TheStructure.Common.PipeControlFlushEnable; - } - inline void setNotifyEnable(const bool value) { - TheStructure.Common.NotifyEnable = value; - } - inline bool getNotifyEnable(void) const { - return TheStructure.Common.NotifyEnable; - } - inline void setIndirectStatePointersDisable(const bool value) { - TheStructure.Common.IndirectStatePointersDisable = value; - } - inline bool getIndirectStatePointersDisable(void) const { - return TheStructure.Common.IndirectStatePointersDisable; - } - inline void setTextureCacheInvalidationEnable(const bool value) { - TheStructure.Common.TextureCacheInvalidationEnable = value; - } - inline bool getTextureCacheInvalidationEnable(void) const { - return TheStructure.Common.TextureCacheInvalidationEnable; - } - inline void setInstructionCacheInvalidateEnable(const bool value) { - TheStructure.Common.InstructionCacheInvalidateEnable = value; - } - inline bool getInstructionCacheInvalidateEnable(void) const { - return TheStructure.Common.InstructionCacheInvalidateEnable; - } - inline void setRenderTargetCacheFlushEnable(const bool value) { - TheStructure.Common.RenderTargetCacheFlushEnable = value; - } - inline bool getRenderTargetCacheFlushEnable(void) const { - return TheStructure.Common.RenderTargetCacheFlushEnable; - } - inline void setDepthStallEnable(const bool value) { - TheStructure.Common.DepthStallEnable = value; - } - inline bool getDepthStallEnable(void) const { - return TheStructure.Common.DepthStallEnable; - } - inline void setPostSyncOperation(const POST_SYNC_OPERATION value) { - TheStructure.Common.PostSyncOperation = value; - } - inline POST_SYNC_OPERATION getPostSyncOperation(void) const { - return static_cast(TheStructure.Common.PostSyncOperation); - } - inline void setGenericMediaStateClear(const bool value) { - TheStructure.Common.GenericMediaStateClear = value; - } - inline bool getGenericMediaStateClear(void) const { - return TheStructure.Common.GenericMediaStateClear; - } - inline void setPsdSyncEnable(const bool value) { - TheStructure.Common.PsdSyncEnable = value; - } - inline bool getPsdSyncEnable(void) const { - return TheStructure.Common.PsdSyncEnable; - } - inline void setTlbInvalidate(const bool value) { - TheStructure.Common.TlbInvalidate = value; - } - inline bool getTlbInvalidate(void) const { - return TheStructure.Common.TlbInvalidate; - } - inline void setGlobalSnapshotCountReset(const GLOBAL_SNAPSHOT_COUNT_RESET value) { - TheStructure.Common.GlobalSnapshotCountReset = value; - } - inline GLOBAL_SNAPSHOT_COUNT_RESET getGlobalSnapshotCountReset(void) const { - return static_cast(TheStructure.Common.GlobalSnapshotCountReset); - } - inline void setCommandStreamerStallEnable(const bool value) { - TheStructure.Common.CommandStreamerStallEnable = value; - } - inline bool getCommandStreamerStallEnable(void) const { - return TheStructure.Common.CommandStreamerStallEnable; - } - inline void setStoreDataIndex(const bool value) { - TheStructure.Common.StoreDataIndex = value; - } - inline bool getStoreDataIndex(void) const { - return TheStructure.Common.StoreDataIndex; - } - inline void setLriPostSyncOperation(const LRI_POST_SYNC_OPERATION value) { - TheStructure.Common.LriPostSyncOperation = value; - } - inline LRI_POST_SYNC_OPERATION getLriPostSyncOperation(void) const { - return static_cast(TheStructure.Common.LriPostSyncOperation); - } - inline void setDestinationAddressType(const DESTINATION_ADDRESS_TYPE value) { - TheStructure.Common.DestinationAddressType = value; - } - inline DESTINATION_ADDRESS_TYPE getDestinationAddressType(void) const { - return static_cast(TheStructure.Common.DestinationAddressType); - } - inline void setAmfsFlushEnable(const bool value) { - TheStructure.Common.AmfsFlushEnable = value; - } - inline bool getAmfsFlushEnable(void) const { - return TheStructure.Common.AmfsFlushEnable; - } - inline void setFlushLlc(const bool value) { - TheStructure.Common.FlushLlc = value; - } - inline bool getFlushLlc(void) const { - return TheStructure.Common.FlushLlc; - } - inline void setProtectedMemoryDisable(const uint32_t value) { - TheStructure.Common.ProtectedMemoryDisable = value; - } - inline uint32_t getProtectedMemoryDisable(void) const { - return (TheStructure.Common.ProtectedMemoryDisable); - } - inline void setTileCacheFlushEnable(const bool value) { - TheStructure.Common.TileCacheFlushEnable = value; - } - inline bool getTileCacheFlushEnable(void) const { - return TheStructure.Common.TileCacheFlushEnable; - } - inline void setCommandCacheInvalidateEnable(const bool value) { - TheStructure.Common.CommandCacheInvalidateEnable = value; - } - inline bool getCommandCacheInvalidateEnable(void) const { - return TheStructure.Common.CommandCacheInvalidateEnable; - } - inline void setL3FabricFlush(const bool value) { - TheStructure.Common.L3FabricFlush = value; - } - inline bool getL3FabricFlush(void) const { - return TheStructure.Common.L3FabricFlush; - } - typedef enum tagADDRESS { - ADDRESS_BIT_SHIFT = 0x2, - ADDRESS_ALIGN_SIZE = 0x4, - } ADDRESS; - inline void setAddress(const uint32_t value) { - UNRECOVERABLE_IF(value > 0xffffffff); - TheStructure.Common.Address = value >> ADDRESS_BIT_SHIFT; - } - inline uint32_t getAddress(void) const { - return TheStructure.Common.Address << ADDRESS_BIT_SHIFT; - } - inline void setAddressHigh(const uint32_t value) { - TheStructure.Common.AddressHigh = value; - } - inline uint32_t getAddressHigh(void) const { - return TheStructure.Common.AddressHigh; - } - inline void setImmediateData(const uint64_t value) { - TheStructure.Common.ImmediateData = value; - } - inline uint64_t getImmediateData(void) const { - return TheStructure.Common.ImmediateData; - } -} PIPE_CONTROL; -STATIC_ASSERT(24 == sizeof(PIPE_CONTROL)); - -typedef struct tagMI_SEMAPHORE_WAIT { - union tagTheStructure { - struct tagCommon { - // DWORD 0 - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 11); - uint32_t CompareOperation : BITFIELD_RANGE(12, 14); - uint32_t WaitMode : BITFIELD_RANGE(15, 15); - uint32_t RegisterPollMode : BITFIELD_RANGE(16, 16); - uint32_t Reserved_17 : BITFIELD_RANGE(17, 21); - uint32_t MemoryType : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - // DWORD 1 - uint32_t SemaphoreDataDword; - // DWORD 2-3 - uint64_t Reserved_64 : BITFIELD_RANGE(0, 1); - uint64_t SemaphoreAddress : BITFIELD_RANGE(2, 63); - // DWORD 4 - uint32_t Reserved_128 : BITFIELD_RANGE(0, 4); - uint32_t WaitTokenNumber : BITFIELD_RANGE(5, 9); - uint32_t Reserved_138 : BITFIELD_RANGE(10, 31); - } Common; - uint32_t RawData[5]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x3, - } DWORD_LENGTH; - typedef enum tagCOMPARE_OPERATION { - COMPARE_OPERATION_SAD_GREATER_THAN_SDD = 0x0, - COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD = 0x1, - COMPARE_OPERATION_SAD_LESS_THAN_SDD = 0x2, - COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD = 0x3, - COMPARE_OPERATION_SAD_EQUAL_SDD = 0x4, - COMPARE_OPERATION_SAD_NOT_EQUAL_SDD = 0x5, - } COMPARE_OPERATION; - typedef enum tagWAIT_MODE { - WAIT_MODE_SIGNAL_MODE = 0x0, - WAIT_MODE_POLLING_MODE = 0x1, - } WAIT_MODE; - typedef enum tagREGISTER_POLL_MODE { - REGISTER_POLL_MODE_MEMORY_POLL = 0x0, - REGISTER_POLL_MODE_REGISTER_POLL = 0x1, - } REGISTER_POLL_MODE; - typedef enum tagMEMORY_TYPE { - MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS = 0x0, - MEMORY_TYPE_GLOBAL_GRAPHICS_ADDRESS = 0x1, - } MEMORY_TYPE; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT = 0x1c, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; - TheStructure.Common.CompareOperation = COMPARE_OPERATION_SAD_GREATER_THAN_SDD; - TheStructure.Common.WaitMode = WAIT_MODE_SIGNAL_MODE; - TheStructure.Common.RegisterPollMode = REGISTER_POLL_MODE_REGISTER_POLL; - TheStructure.Common.MemoryType = MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_SEMAPHORE_WAIT sInit(void) { - MI_SEMAPHORE_WAIT state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - UNRECOVERABLE_IF(index >= 5); - return TheStructure.RawData[index]; - } - inline void setCompareOperation(const COMPARE_OPERATION value) { - TheStructure.Common.CompareOperation = value; - } - inline COMPARE_OPERATION getCompareOperation(void) const { - return static_cast(TheStructure.Common.CompareOperation); - } - inline void setWaitMode(const WAIT_MODE value) { - TheStructure.Common.WaitMode = value; - } - inline WAIT_MODE getWaitMode(void) const { - return static_cast(TheStructure.Common.WaitMode); - } - inline void setRegisterPollMode(const REGISTER_POLL_MODE value) { - TheStructure.Common.RegisterPollMode = value; - } - inline REGISTER_POLL_MODE getRegisterPollMode(void) const { - return static_cast(TheStructure.Common.RegisterPollMode); - } - inline void setMemoryType(const MEMORY_TYPE value) { - TheStructure.Common.MemoryType = value; - } - inline MEMORY_TYPE getMemoryType(void) const { - return static_cast(TheStructure.Common.MemoryType); - } - inline void setSemaphoreDataDword(const uint32_t value) { - TheStructure.Common.SemaphoreDataDword = value; - } - inline uint32_t getSemaphoreDataDword(void) const { - return TheStructure.Common.SemaphoreDataDword; - } - typedef enum tagSEMAPHOREADDRESS { - SEMAPHOREADDRESS_BIT_SHIFT = 0x2, - SEMAPHOREADDRESS_ALIGN_SIZE = 0x4, - } SEMAPHOREADDRESS; - inline void setSemaphoreGraphicsAddress(const uint64_t value) { - TheStructure.Common.SemaphoreAddress = value >> SEMAPHOREADDRESS_BIT_SHIFT; - } - inline uint64_t getSemaphoreGraphicsAddress(void) const { - return TheStructure.Common.SemaphoreAddress << SEMAPHOREADDRESS_BIT_SHIFT; - } - inline void setWaitTokenNumber(const uint32_t value) { - UNRECOVERABLE_IF(value > 0x1f); - TheStructure.Common.WaitTokenNumber = value; - } - inline uint32_t getWaitTokenNumber(void) const { - return TheStructure.Common.WaitTokenNumber; - } -} MI_SEMAPHORE_WAIT; -STATIC_ASSERT(20 == sizeof(MI_SEMAPHORE_WAIT)); - -typedef struct tagMI_STORE_DATA_IMM { - union tagTheStructure { - struct tagCommon { - // DWORD 0 - uint32_t DwordLength : BITFIELD_RANGE(0, 9); - uint32_t Reserved_10 : BITFIELD_RANGE(10, 20); - uint32_t StoreQword : BITFIELD_RANGE(21, 21); - uint32_t UseGlobalGtt : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - // DWORD 1-2 - uint64_t CoreModeEnable : BITFIELD_RANGE(0, 0); - uint64_t Reserved_33 : BITFIELD_RANGE(1, 1); - uint64_t Address : BITFIELD_RANGE(2, 63); - // DWORD 3 - uint32_t DataDword0; - // DWORD 4 - uint32_t DataDword1; - } Common; - uint32_t RawData[5]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_STORE_DWORD = 0x2, - DWORD_LENGTH_STORE_QWORD = 0x3, - } DWORD_LENGTH; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_STORE_DATA_IMM = 0x20, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_STORE_DWORD; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_STORE_DATA_IMM; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_STORE_DATA_IMM sInit(void) { - MI_STORE_DATA_IMM state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - UNRECOVERABLE_IF(index >= 5); - return TheStructure.RawData[index]; - } - inline void setDwordLength(const DWORD_LENGTH value) { - TheStructure.Common.DwordLength = value; - } - inline DWORD_LENGTH getDwordLength(void) const { - return static_cast(TheStructure.Common.DwordLength); - } - inline void setStoreQword(const bool value) { - TheStructure.Common.StoreQword = value; - } - inline bool getStoreQword(void) const { - return TheStructure.Common.StoreQword; - } - inline void setUseGlobalGtt(const bool value) { - TheStructure.Common.UseGlobalGtt = value; - } - inline bool getUseGlobalGtt(void) const { - return TheStructure.Common.UseGlobalGtt; - } - inline void setCoreModeEnable(const bool value) { - TheStructure.Common.CoreModeEnable = value; - } - inline bool getCoreModeEnable(void) const { - return TheStructure.Common.CoreModeEnable; - } - typedef enum tagADDRESS { - ADDRESS_BIT_SHIFT = 0x2, - ADDRESS_ALIGN_SIZE = 0x4, - } ADDRESS; - inline void setAddress(const uint64_t value) { - UNRECOVERABLE_IF(value > 0x3fffffffffffffffL); - TheStructure.Common.Address = value >> ADDRESS_BIT_SHIFT; - } - inline uint64_t getAddress(void) const { - return TheStructure.Common.Address << ADDRESS_BIT_SHIFT; - } - inline void setDataDword0(const uint32_t value) { - TheStructure.Common.DataDword0 = value; - } - inline uint32_t getDataDword0(void) const { - return TheStructure.Common.DataDword0; - } - inline void setDataDword1(const uint32_t value) { - TheStructure.Common.DataDword1 = value; - } - inline uint32_t getDataDword1(void) const { - return TheStructure.Common.DataDword1; - } -} MI_STORE_DATA_IMM; -STATIC_ASSERT(20 == sizeof(MI_STORE_DATA_IMM)); - -typedef struct tagSTATE_SIP { - union tagTheStructure { - struct tagCommon { - // DWORD 0 - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 15); - uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); - uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); - uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - // DWORD 1-2 - uint64_t Reserved_32 : BITFIELD_RANGE(0, 3); - uint64_t SystemInstructionPointer : BITFIELD_RANGE(4, 63); - } Common; - uint32_t RawData[3]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_DWORD_COUNT_N = 0x1, - } DWORD_LENGTH; - typedef enum tag_3D_COMMAND_SUB_OPCODE { - _3D_COMMAND_SUB_OPCODE_STATE_SIP = 0x2, - } _3D_COMMAND_SUB_OPCODE; - typedef enum tag_3D_COMMAND_OPCODE { - _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1, - } _3D_COMMAND_OPCODE; - typedef enum tagCOMMAND_SUBTYPE { - COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0, - } COMMAND_SUBTYPE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_GFXPIPE = 0x3, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N; - TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_STATE_SIP; - TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED; - TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON; - TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; - } - static tagSTATE_SIP sInit(void) { - STATE_SIP state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - UNRECOVERABLE_IF(index >= 3); - return TheStructure.RawData[index]; - } - typedef enum tagSYSTEMINSTRUCTIONPOINTER { - SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT = 0x4, - SYSTEMINSTRUCTIONPOINTER_ALIGN_SIZE = 0x10, - } SYSTEMINSTRUCTIONPOINTER; - inline void setSystemInstructionPointer(const uint64_t value) { - UNRECOVERABLE_IF(value > 0xffffffffffffffffL); - TheStructure.Common.SystemInstructionPointer = value >> SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT; - } - inline uint64_t getSystemInstructionPointer(void) const { - return (uint64_t)TheStructure.Common.SystemInstructionPointer << SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT; - } -} STATE_SIP; -STATIC_ASSERT(12 == sizeof(STATE_SIP)); - -typedef struct tagGPGPU_CSR_BASE_ADDRESS { - union tagTheStructure { - struct tagCommon { - // DWORD 0 - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 15); - uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); - uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); - uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - // DWORD 1-2 - uint64_t Reserved_32 : BITFIELD_RANGE(0, 11); - uint64_t GpgpuCsrBaseAddress : BITFIELD_RANGE(12, 63); - } Common; - uint32_t RawData[3]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_LENGTH_1 = 0x1, - } DWORD_LENGTH; - typedef enum tag_3D_COMMAND_SUB_OPCODE { - _3D_COMMAND_SUB_OPCODE_GPGPU_CSR_BASE_ADDRESS = 0x4, - } _3D_COMMAND_SUB_OPCODE; - typedef enum tag_3D_COMMAND_OPCODE { - _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1, - } _3D_COMMAND_OPCODE; - typedef enum tagCOMMAND_SUBTYPE { - COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0, - } COMMAND_SUBTYPE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_GFXPIPE = 0x3, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_LENGTH_1; - TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_GPGPU_CSR_BASE_ADDRESS; - TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED; - TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON; - TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; - } - static tagGPGPU_CSR_BASE_ADDRESS sInit(void) { - GPGPU_CSR_BASE_ADDRESS state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - UNRECOVERABLE_IF(index >= 3); - return TheStructure.RawData[index]; - } - typedef enum tagGPGPUCSRBASEADDRESS { - GPGPUCSRBASEADDRESS_BIT_SHIFT = 0xc, - GPGPUCSRBASEADDRESS_ALIGN_SIZE = 0x1000, - } GPGPUCSRBASEADDRESS; - inline void setGpgpuCsrBaseAddress(const uint64_t value) { - UNRECOVERABLE_IF(value > 0xffffffffffffffffL); - TheStructure.Common.GpgpuCsrBaseAddress = value >> GPGPUCSRBASEADDRESS_BIT_SHIFT; - } - inline uint64_t getGpgpuCsrBaseAddress(void) const { - return (uint64_t)TheStructure.Common.GpgpuCsrBaseAddress << GPGPUCSRBASEADDRESS_BIT_SHIFT; - } -} GPGPU_CSR_BASE_ADDRESS; -STATIC_ASSERT(12 == sizeof(GPGPU_CSR_BASE_ADDRESS)); - -#pragma pack() diff --git a/core/generated/gen8/hw_cmds_generated.inl b/core/generated/gen8/hw_cmds_generated_gen8.inl similarity index 87% rename from core/generated/gen8/hw_cmds_generated.inl rename to core/generated/gen8/hw_cmds_generated_gen8.inl index 26ff54f83b..6221d44d2d 100644 --- a/core/generated/gen8/hw_cmds_generated.inl +++ b/core/generated/gen8/hw_cmds_generated_gen8.inl @@ -47,6 +47,7 @@ typedef struct tagBINDING_TABLE_STATE { } } BINDING_TABLE_STATE; STATIC_ASSERT(4 == sizeof(BINDING_TABLE_STATE)); + typedef struct tagGPGPU_WALKER { union tagTheStructure { struct tagCommon { @@ -235,6 +236,7 @@ typedef struct tagGPGPU_WALKER { } } GPGPU_WALKER; STATIC_ASSERT(60 == sizeof(GPGPU_WALKER)); + typedef struct tagINTERFACE_DESCRIPTOR_DATA { union tagTheStructure { struct tagCommon { @@ -476,6 +478,7 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA { } } INTERFACE_DESCRIPTOR_DATA; STATIC_ASSERT(32 == sizeof(INTERFACE_DESCRIPTOR_DATA)); + typedef struct tagMEDIA_INTERFACE_DESCRIPTOR_LOAD { union tagTheStructure { struct tagCommon { @@ -541,6 +544,7 @@ typedef struct tagMEDIA_INTERFACE_DESCRIPTOR_LOAD { } } MEDIA_INTERFACE_DESCRIPTOR_LOAD; STATIC_ASSERT(16 == sizeof(MEDIA_INTERFACE_DESCRIPTOR_LOAD)); + typedef struct tagMEDIA_STATE_FLUSH { union tagTheStructure { struct tagCommon { @@ -608,6 +612,7 @@ typedef struct tagMEDIA_STATE_FLUSH { } } MEDIA_STATE_FLUSH; STATIC_ASSERT(8 == sizeof(MEDIA_STATE_FLUSH)); + typedef struct tagMEDIA_VFE_STATE { union tagTheStructure { struct tagCommon { @@ -899,6 +904,7 @@ typedef struct tagMEDIA_VFE_STATE { } } MEDIA_VFE_STATE; STATIC_ASSERT(36 == sizeof(MEDIA_VFE_STATE)); + typedef struct tagMI_ARB_CHECK { union tagTheStructure { struct tagCommon { @@ -942,6 +948,7 @@ typedef struct tagMI_ARB_CHECK { } } MI_ARB_CHECK; STATIC_ASSERT(4 == sizeof(MI_ARB_CHECK)); + typedef struct tagMI_ATOMIC { union tagTheStructure { struct tagCommon { @@ -1134,6 +1141,7 @@ typedef struct tagMI_ATOMIC { } } MI_ATOMIC; STATIC_ASSERT(44 == sizeof(MI_ATOMIC)); + typedef struct tagMI_BATCH_BUFFER_END { union tagTheStructure { struct tagCommon { @@ -1165,6 +1173,7 @@ typedef struct tagMI_BATCH_BUFFER_END { } } MI_BATCH_BUFFER_END; STATIC_ASSERT(4 == sizeof(MI_BATCH_BUFFER_END)); + typedef struct tagMI_BATCH_BUFFER_START { union tagTheStructure { struct tagCommon { @@ -1264,6 +1273,7 @@ typedef struct tagMI_BATCH_BUFFER_START { } } MI_BATCH_BUFFER_START; STATIC_ASSERT(12 == sizeof(MI_BATCH_BUFFER_START)); + typedef struct tagMI_LOAD_REGISTER_IMM { union tagTheStructure { struct tagCommon { @@ -1327,6 +1337,7 @@ typedef struct tagMI_LOAD_REGISTER_IMM { } } MI_LOAD_REGISTER_IMM; STATIC_ASSERT(12 == sizeof(MI_LOAD_REGISTER_IMM)); + typedef struct tagMI_LOAD_REGISTER_MEM { union tagTheStructure { struct tagCommon { @@ -1406,6 +1417,7 @@ typedef struct tagMI_LOAD_REGISTER_MEM { } } MI_LOAD_REGISTER_MEM; STATIC_ASSERT(16 == sizeof(MI_LOAD_REGISTER_MEM)); + typedef struct tagMI_LOAD_REGISTER_REG { union tagTheStructure { struct tagCommon { @@ -1468,6 +1480,7 @@ typedef struct tagMI_LOAD_REGISTER_REG { } } MI_LOAD_REGISTER_REG; STATIC_ASSERT(12 == sizeof(MI_LOAD_REGISTER_REG)); + typedef struct tagMI_NOOP { union tagTheStructure { struct tagCommon { @@ -1592,6 +1605,7 @@ typedef struct tagMI_STORE_REGISTER_MEM { } } MI_STORE_REGISTER_MEM; STATIC_ASSERT(16 == sizeof(MI_STORE_REGISTER_MEM)); + typedef struct tagPIPELINE_SELECT { union tagTheStructure { struct tagCommon { @@ -1651,6 +1665,7 @@ typedef struct tagPIPELINE_SELECT { } } PIPELINE_SELECT; STATIC_ASSERT(4 == sizeof(PIPELINE_SELECT)); + typedef struct tagPIPE_CONTROL { union tagTheStructure { struct tagCommon { @@ -1916,6 +1931,7 @@ typedef struct tagPIPE_CONTROL { } } PIPE_CONTROL; STATIC_ASSERT(24 == sizeof(PIPE_CONTROL)); + typedef struct tagRENDER_SURFACE_STATE { union tagTheStructure { struct tagCommon { @@ -2888,6 +2904,7 @@ typedef struct tagRENDER_SURFACE_STATE { } } RENDER_SURFACE_STATE; STATIC_ASSERT(64 == sizeof(RENDER_SURFACE_STATE)); + typedef struct tagSAMPLER_STATE { union tagTheStructure { struct tagCommon { @@ -3219,6 +3236,7 @@ typedef struct tagSAMPLER_STATE { } } SAMPLER_STATE; STATIC_ASSERT(16 == sizeof(SAMPLER_STATE)); + typedef struct tagSTATE_BASE_ADDRESS { union tagTheStructure { struct tagCommon { @@ -3643,6 +3661,7 @@ typedef struct tagSTATE_BASE_ADDRESS { } } STATE_BASE_ADDRESS; STATIC_ASSERT(64 == sizeof(STATE_BASE_ADDRESS)); + typedef struct tagMI_REPORT_PERF_COUNT { union tagTheStructure { struct tagCommon { @@ -3717,6 +3736,7 @@ typedef struct tagMI_REPORT_PERF_COUNT { } } MI_REPORT_PERF_COUNT; STATIC_ASSERT(16 == sizeof(MI_REPORT_PERF_COUNT)); + struct MI_USER_INTERRUPT { union tagTheStructure { struct tagCommon { @@ -3859,6 +3879,7 @@ typedef struct tagMI_FLUSH_DW { } } MI_FLUSH_DW; STATIC_ASSERT(20 == sizeof(MI_FLUSH_DW)); + typedef struct tagXY_SRC_COPY_BLT { union tagTheStructure { struct tagCommon { @@ -4078,4 +4099,613 @@ typedef struct tagGRF { } TheStructure; } GRF; STATIC_ASSERT(32 == sizeof(GRF)); + +typedef struct tagMEDIA_SURFACE_STATE { + union tagTheStructure { + struct tagCommon { + uint32_t Reserved_0; + uint32_t Cr_VCb_UPixelOffsetVDirection : BITFIELD_RANGE(0, 1); + uint32_t PictureStructure : BITFIELD_RANGE(2, 3); + uint32_t Width : BITFIELD_RANGE(4, 17); + uint32_t Height : BITFIELD_RANGE(18, 31); + uint32_t TileMode : BITFIELD_RANGE(0, 1); + uint32_t HalfPitchForChroma : BITFIELD_RANGE(2, 2); + uint32_t SurfacePitch : BITFIELD_RANGE(3, 20); + uint32_t AddressControl : BITFIELD_RANGE(21, 21); + uint32_t Reserved_86 : BITFIELD_RANGE(22, 25); + uint32_t InterleaveChroma : BITFIELD_RANGE(26, 26); + uint32_t SurfaceFormat : BITFIELD_RANGE(27, 31); + uint32_t YOffsetForU_Cb : BITFIELD_RANGE(0, 13); + uint32_t Reserved_110 : BITFIELD_RANGE(14, 15); + uint32_t XOffsetForU_Cb : BITFIELD_RANGE(16, 29); + uint32_t Reserved_126 : BITFIELD_RANGE(30, 31); + uint32_t Reserved_128; + uint32_t SurfaceMemoryObjectControlState_AgeForQuadlru : BITFIELD_RANGE(0, 1); + uint32_t SurfaceMemoryObjectControlState_Reserved : BITFIELD_RANGE(2, 2); + uint32_t SurfaceMemoryObjectControlState_TargetCache : BITFIELD_RANGE(3, 4); + uint32_t SurfaceMemoryObjectControlState_MemoryTypeLlcEllcCacheabilityControl : BITFIELD_RANGE(5, 6); + uint32_t Reserved_167 : BITFIELD_RANGE(7, 29); + uint32_t VerticalLineStrideOffset : BITFIELD_RANGE(30, 30); + uint32_t VerticalLineStride : BITFIELD_RANGE(31, 31); + uint32_t SurfaceBaseAddressLow; + uint32_t SurfaceBaseAddressHigh : BITFIELD_RANGE(0, 15); + uint32_t Reserved_240 : BITFIELD_RANGE(16, 31); + } Common; + struct tag_SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0 { + uint32_t Reserved_0; + uint32_t Reserved_32; + uint32_t Reserved_64; + uint32_t Reserved_96; + uint32_t YOffsetForV_Cr : BITFIELD_RANGE(0, 14); + uint32_t Reserved_143 : BITFIELD_RANGE(15, 15); + uint32_t XOffsetForV_Cr : BITFIELD_RANGE(16, 29); + uint32_t Reserved_158 : BITFIELD_RANGE(30, 31); + uint32_t Reserved_160; + uint32_t Reserved_192; + uint32_t Reserved_224; + } _SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0; + uint32_t RawData[8]; + } TheStructure; + typedef enum tagPICTURE_STRUCTURE { + PICTURE_STRUCTURE_FRAME_PICTURE = 0x0, + PICTURE_STRUCTURE_TOP_FIELD_PICTURE = 0x1, + PICTURE_STRUCTURE_BOTTOM_FIELD_PICTURE = 0x2, + PICTURE_STRUCTURE_INVALID_NOT_ALLOWED = 0x3, + } PICTURE_STRUCTURE; + typedef enum tagTILE_MODE { + TILE_MODE_TILEMODE_LINEAR = 0x0, + TILE_MODE_TILEMODE_XMAJOR = 0x2, + TILE_MODE_TILEMODE_YMAJOR = 0x3, + } TILE_MODE; + typedef enum tagADDRESS_CONTROL { + ADDRESS_CONTROL_CLAMP = 0x0, + ADDRESS_CONTROL_MIRROR = 0x1, + } ADDRESS_CONTROL; + typedef enum tagSURFACE_FORMAT { + SURFACE_FORMAT_YCRCB_NORMAL = 0x0, + SURFACE_FORMAT_YCRCB_SWAPUVY = 0x1, + SURFACE_FORMAT_YCRCB_SWAPUV = 0x2, + SURFACE_FORMAT_YCRCB_SWAPY = 0x3, + SURFACE_FORMAT_PLANAR_420_8 = 0x4, + SURFACE_FORMAT_Y8_UNORM_VA = 0x5, + SURFACE_FORMAT_Y16_SNORM = 0x6, + SURFACE_FORMAT_Y16_UNORM_VA = 0x7, + SURFACE_FORMAT_R10G10B10A2_UNORM = 0x8, + SURFACE_FORMAT_R8G8B8A8_UNORM = 0x9, + SURFACE_FORMAT_R8B8_UNORM_CRCB = 0xa, + SURFACE_FORMAT_R8_UNORM_CR_CB = 0xb, + SURFACE_FORMAT_Y8_UNORM = 0xc, + SURFACE_FORMAT_A8Y8U8V8_UNORM = 0xd, + SURFACE_FORMAT_B8G8R8A8_UNORM = 0xe, + SURFACE_FORMAT_R16G16B16A16 = 0xf, + SURFACE_FORMAT_Y1_UNORM = 0x10, + SURFACE_FORMAT_Y32_UNORM = 0x11, + } SURFACE_FORMAT; + typedef enum tagSURFACE_MEMORY_OBJECT_CONTROL_STATE { + SURFACE_MEMORY_OBJECT_CONTROL_STATE_DEFAULTVAUEDESC = 0x0, + } SURFACE_MEMORY_OBJECT_CONTROL_STATE; + typedef enum tagPATCH_CONSTANTS { + SURFACEBASEADDRESS_BYTEOFFSET = 0x18, + SURFACEBASEADDRESS_INDEX = 0x6, + SURFACEBASEADDRESSHIGH_BYTEOFFSET = 0x1c, + SURFACEBASEADDRESSHIGH_INDEX = 0x7, + } PATCH_CONSTANTS; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.PictureStructure = PICTURE_STRUCTURE_FRAME_PICTURE; + TheStructure.Common.TileMode = TILE_MODE_TILEMODE_LINEAR; + TheStructure.Common.AddressControl = ADDRESS_CONTROL_CLAMP; + TheStructure.Common.SurfaceFormat = SURFACE_FORMAT_YCRCB_NORMAL; + } + static tagMEDIA_SURFACE_STATE sInit(void) { + MEDIA_SURFACE_STATE state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 8); + return TheStructure.RawData[index]; + } + inline void setCrVCbUPixelOffsetVDirection(const uint32_t value) { + TheStructure.Common.Cr_VCb_UPixelOffsetVDirection = value; + } + inline uint32_t getCrVCbUPixelOffsetVDirection(void) const { + return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirection); + } + inline void setPictureStructure(const PICTURE_STRUCTURE value) { + TheStructure.Common.PictureStructure = value; + } + inline PICTURE_STRUCTURE getPictureStructure(void) const { + return static_cast(TheStructure.Common.PictureStructure); + } + inline void setWidth(const uint32_t value) { + TheStructure.Common.Width = value - 1; + } + inline uint32_t getWidth(void) const { + return (TheStructure.Common.Width + 1); + } + inline void setHeight(const uint32_t value) { + TheStructure.Common.Height = value - 1; + } + inline uint32_t getHeight(void) const { + return (TheStructure.Common.Height + 1); + } + inline void setTileMode(const TILE_MODE value) { + TheStructure.Common.TileMode = value; + } + inline TILE_MODE getTileMode(void) const { + return static_cast(TheStructure.Common.TileMode); + } + inline void setHalfPitchForChroma(const bool value) { + TheStructure.Common.HalfPitchForChroma = value; + } + inline bool getHalfPitchForChroma(void) const { + return (TheStructure.Common.HalfPitchForChroma); + } + inline void setSurfacePitch(const uint32_t value) { + TheStructure.Common.SurfacePitch = value - 1; + } + inline uint32_t getSurfacePitch(void) const { + return (TheStructure.Common.SurfacePitch + 1); + } + inline void setAddressControl(const ADDRESS_CONTROL value) { + TheStructure.Common.AddressControl = value; + } + inline ADDRESS_CONTROL getAddressControl(void) const { + return static_cast(TheStructure.Common.AddressControl); + } + inline void setInterleaveChroma(const bool value) { + TheStructure.Common.InterleaveChroma = value; + } + inline bool getInterleaveChroma(void) const { + return (TheStructure.Common.InterleaveChroma); + } + inline void setSurfaceFormat(const SURFACE_FORMAT value) { + TheStructure.Common.SurfaceFormat = value; + } + inline SURFACE_FORMAT getSurfaceFormat(void) const { + return static_cast(TheStructure.Common.SurfaceFormat); + } + inline void setYOffsetForUCb(const uint32_t value) { + TheStructure.Common.YOffsetForU_Cb = value; + } + inline uint32_t getYOffsetForUCb(void) const { + return (TheStructure.Common.YOffsetForU_Cb); + } + inline void setXOffsetForUCb(const uint32_t value) { + TheStructure.Common.XOffsetForU_Cb = value; + } + inline uint32_t getXOffsetForUCb(void) const { + return (TheStructure.Common.XOffsetForU_Cb); + } + inline void setSurfaceMemoryObjectControlStateAgeForQuadlru(const uint32_t value) { + TheStructure.Common.SurfaceMemoryObjectControlState_AgeForQuadlru = value; + } + inline uint32_t getSurfaceMemoryObjectControlStateAgeForQuadlru(void) const { + return (TheStructure.Common.SurfaceMemoryObjectControlState_AgeForQuadlru); + } + inline void setSurfaceMemoryObjectControlStateReserved(const uint32_t value) { + TheStructure.Common.SurfaceMemoryObjectControlState_Reserved = value; + } + inline uint32_t getSurfaceMemoryObjectControlStateReserved(void) const { + return (TheStructure.Common.SurfaceMemoryObjectControlState_Reserved); + } + inline void setSurfaceMemoryObjectControlStateTargetCache(const uint32_t value) { + TheStructure.Common.SurfaceMemoryObjectControlState_TargetCache = value; + } + inline uint32_t getSurfaceMemoryObjectControlStateTargetCache(void) const { + return (TheStructure.Common.SurfaceMemoryObjectControlState_TargetCache); + } + inline void setSurfaceMemoryObjectControlStateMemoryTypeLlcEllcCacheabilityControl(const uint32_t value) { + TheStructure.Common.SurfaceMemoryObjectControlState_MemoryTypeLlcEllcCacheabilityControl = value; + } + inline uint32_t getSurfaceMemoryObjectControlStateMemoryTypeLlcEllcCacheabilityControl(void) const { + return (TheStructure.Common.SurfaceMemoryObjectControlState_MemoryTypeLlcEllcCacheabilityControl); + } + inline void setVerticalLineStrideOffset(const uint32_t value) { + TheStructure.Common.VerticalLineStrideOffset = value; + } + inline uint32_t getVerticalLineStrideOffset(void) const { + return (TheStructure.Common.VerticalLineStrideOffset); + } + inline void setVerticalLineStride(const uint32_t value) { + TheStructure.Common.VerticalLineStride = value; + } + inline uint32_t getVerticalLineStride(void) const { + return (TheStructure.Common.VerticalLineStride); + } + inline void setSurfaceBaseAddress(const uint64_t value) { + TheStructure.Common.SurfaceBaseAddressLow = static_cast(value); + TheStructure.Common.SurfaceBaseAddressHigh = value >> 32; + } + inline uint64_t getSurfaceBaseAddress(void) const { + return (TheStructure.Common.SurfaceBaseAddressLow | + static_cast(TheStructure.Common.SurfaceBaseAddressHigh) << 32); + } + inline void setSurfaceBaseAddressHigh(const uint32_t value) { + TheStructure.Common.SurfaceBaseAddressHigh = value; + } + inline uint32_t getSurfaceBaseAddressHigh(void) const { + return (TheStructure.Common.SurfaceBaseAddressHigh); + } + inline void setYOffsetForVCr(const uint32_t value) { + TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr = value; + } + inline uint32_t getYOffsetForVCr(void) const { + return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr); + } + inline void setXOffsetForVCr(const uint32_t value) { + TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr = value; + } + inline uint32_t getXOffsetForVCr(void) const { + return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr); + } +} MEDIA_SURFACE_STATE; +STATIC_ASSERT(32 == sizeof(MEDIA_SURFACE_STATE)); + +typedef struct tagMI_MATH { + union _DW0 { + struct _BitField { + uint32_t DwordLength : BITFIELD_RANGE(0, 5); + uint32_t Reserved : BITFIELD_RANGE(6, 22); + uint32_t InstructionOpcode : BITFIELD_RANGE(23, 28); + uint32_t InstructionType : BITFIELD_RANGE(29, 31); + } BitField; + uint32_t Value; + } DW0; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_MATH = 0x1A, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; +} MI_MATH; +typedef struct tagMI_MATH_ALU_INST_INLINE { + union _DW0 { + struct _BitField { + uint32_t Operand2 : BITFIELD_RANGE(0, 9); + uint32_t Operand1 : BITFIELD_RANGE(10, 19); + uint32_t ALUOpcode : BITFIELD_RANGE(20, 31); + } BitField; + uint32_t Value; + } DW0; +} MI_MATH_ALU_INST_INLINE; +typedef struct tagMI_SEMAPHORE_WAIT { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 11); + uint32_t CompareOperation : BITFIELD_RANGE(12, 14); + uint32_t WaitMode : BITFIELD_RANGE(15, 15); + uint32_t Reserved_16 : BITFIELD_RANGE(16, 21); + uint32_t MemoryType : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint32_t SemaphoreDataDword; + uint64_t Reserved_64 : BITFIELD_RANGE(0, 1); + uint64_t SemaphoreAddress_Graphicsaddress : BITFIELD_RANGE(2, 47); + uint64_t SemaphoreAddress_Reserved : BITFIELD_RANGE(48, 63); + } Common; + uint32_t RawData[4]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x2, + } DWORD_LENGTH; + typedef enum tagCOMPARE_OPERATION { + COMPARE_OPERATION_SAD_GREATER_THAN_SDD = 0x0, + COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD = 0x1, + COMPARE_OPERATION_SAD_LESS_THAN_SDD = 0x2, + COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD = 0x3, + COMPARE_OPERATION_SAD_EQUAL_SDD = 0x4, + COMPARE_OPERATION_SAD_NOT_EQUAL_SDD = 0x5, + } COMPARE_OPERATION; + typedef enum tagWAIT_MODE { + WAIT_MODE_SIGNAL_MODE = 0x0, + WAIT_MODE_POLLING_MODE = 0x1, + } WAIT_MODE; + typedef enum tagMEMORY_TYPE { + MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS = 0x0, + MEMORY_TYPE_GLOBAL_GRAPHICS_ADDRESS = 0x1, + } MEMORY_TYPE; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT = 0x1c, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; + TheStructure.Common.CompareOperation = COMPARE_OPERATION_SAD_GREATER_THAN_SDD; + TheStructure.Common.WaitMode = WAIT_MODE_SIGNAL_MODE; + TheStructure.Common.MemoryType = MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_SEMAPHORE_WAIT sInit(void) { + MI_SEMAPHORE_WAIT state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 4); + return TheStructure.RawData[index]; + } + inline void setCompareOperation(const COMPARE_OPERATION value) { + TheStructure.Common.CompareOperation = value; + } + inline COMPARE_OPERATION getCompareOperation(void) const { + return static_cast(TheStructure.Common.CompareOperation); + } + inline void setWaitMode(const WAIT_MODE value) { + TheStructure.Common.WaitMode = value; + } + inline WAIT_MODE getWaitMode(void) const { + return static_cast(TheStructure.Common.WaitMode); + } + inline void setMemoryType(const MEMORY_TYPE value) { + TheStructure.Common.MemoryType = value; + } + inline MEMORY_TYPE getMemoryType(void) const { + return static_cast(TheStructure.Common.MemoryType); + } + inline void setSemaphoreDataDword(const uint32_t value) { + TheStructure.Common.SemaphoreDataDword = value; + } + inline uint32_t getSemaphoreDataDword(void) const { + return (TheStructure.Common.SemaphoreDataDword); + } + typedef enum tagSEMAPHOREADDRESS_GRAPHICSADDRESS { + SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT = 0x2, + SEMAPHOREADDRESS_GRAPHICSADDRESS_ALIGN_SIZE = 0x4, + } SEMAPHOREADDRESS_GRAPHICSADDRESS; + inline void setSemaphoreGraphicsAddress(const uint64_t value) { + TheStructure.Common.SemaphoreAddress_Graphicsaddress = value >> SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT; + } + inline uint64_t getSemaphoreGraphicsAddress(void) const { + return (TheStructure.Common.SemaphoreAddress_Graphicsaddress << SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT); + } + typedef enum tagSEMAPHOREADDRESS_RESERVED { + SEMAPHOREADDRESS_RESERVED_BIT_SHIFT = 0x2, + SEMAPHOREADDRESS_RESERVED_ALIGN_SIZE = 0x4, + } SEMAPHOREADDRESS_RESERVED; + inline void setSemaphoreAddressReserved(const uint64_t value) { + TheStructure.Common.SemaphoreAddress_Reserved = value >> SEMAPHOREADDRESS_RESERVED_BIT_SHIFT; + } + inline uint64_t getSemaphoreAddressReserved(void) const { + return (TheStructure.Common.SemaphoreAddress_Reserved << SEMAPHOREADDRESS_RESERVED_BIT_SHIFT); + } +} MI_SEMAPHORE_WAIT; +STATIC_ASSERT(16 == sizeof(MI_SEMAPHORE_WAIT)); + +typedef struct tagMI_STORE_DATA_IMM { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 9); + uint32_t Reserved_10 : BITFIELD_RANGE(10, 20); + uint32_t StoreQword : BITFIELD_RANGE(21, 21); + uint32_t UseGlobalGtt : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint32_t Reserved_32 : BITFIELD_RANGE(0, 1); + uint32_t Address : BITFIELD_RANGE(2, 31); + uint32_t AddressHigh : BITFIELD_RANGE(0, 15); + uint32_t Reserved_80 : BITFIELD_RANGE(16, 31); + uint32_t DataDword0; + uint32_t DataDword1; + } Common; + uint32_t RawData[5]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x0, + } DWORD_LENGTH; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_STORE_DATA_IMM = 0x20, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + typedef enum tagPATCH_CONSTANTS { + ADDRESS_BYTEOFFSET = 0x4, + ADDRESS_INDEX = 0x1, + ADDRESSHIGH_BYTEOFFSET = 0x8, + ADDRESSHIGH_INDEX = 0x2, + } PATCH_CONSTANTS; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_STORE_DATA_IMM; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_STORE_DATA_IMM sInit(void) { + MI_STORE_DATA_IMM state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 5); + return TheStructure.RawData[index]; + } + inline void setDwordLength(const DWORD_LENGTH value) { + TheStructure.Common.DwordLength = value; + } + inline DWORD_LENGTH getDwordLength(void) const { + return static_cast(TheStructure.Common.DwordLength); + } + inline void setStoreQword(const bool value) { + TheStructure.Common.StoreQword = value; + } + inline bool getStoreQword(void) const { + return TheStructure.Common.StoreQword; + } + inline void setUseGlobalGtt(const uint32_t value) { + TheStructure.Common.UseGlobalGtt = value; + } + inline uint32_t getUseGlobalGtt(void) const { + return (TheStructure.Common.UseGlobalGtt); + } + typedef enum tagADDRESS { + ADDRESS_BIT_SHIFT = 0x2, + ADDRESS_ALIGN_SIZE = 0x4, + } ADDRESS; + inline void setAddress(const uint64_t value) { + setAddressLow(static_cast(value & 0x0000FFFFFFFFULL)); + setAddressHigh(static_cast(value >> 32)); + } + inline uint64_t getAddress(void) const { + return (static_cast(getAddressHigh()) << 32) | static_cast(getAddressLow()); + } + inline void setAddressLow(const uint32_t value) { + TheStructure.Common.Address = value >> ADDRESS_BIT_SHIFT; + } + inline uint32_t getAddressLow(void) const { + return (TheStructure.Common.Address << ADDRESS_BIT_SHIFT); + } + inline void setAddressHigh(const uint32_t value) { + TheStructure.Common.AddressHigh = value; + } + inline uint32_t getAddressHigh(void) const { + return (TheStructure.Common.AddressHigh); + } + inline void setDataDword0(const uint32_t value) { + TheStructure.Common.DataDword0 = value; + } + inline uint32_t getDataDword0(void) const { + return (TheStructure.Common.DataDword0); + } + inline void setDataDword1(const uint32_t value) { + TheStructure.Common.DataDword1 = value; + } + inline uint32_t getDataDword1(void) const { + return (TheStructure.Common.DataDword1); + } +} MI_STORE_DATA_IMM; +STATIC_ASSERT(20 == sizeof(MI_STORE_DATA_IMM)); + +typedef struct tagSTATE_SIP { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 15); + uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); + uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); + uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint64_t Reserved_32 : BITFIELD_RANGE(0, 3); + uint64_t SystemInstructionPointer : BITFIELD_RANGE(4, 63); + } Common; + uint32_t RawData[3]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_DWORD_COUNT_N = 0x1, + } DWORD_LENGTH; + typedef enum tag_3D_COMMAND_SUB_OPCODE { + _3D_COMMAND_SUB_OPCODE_STATE_SIP = 0x2, + } _3D_COMMAND_SUB_OPCODE; + typedef enum tag_3D_COMMAND_OPCODE { + _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1, + } _3D_COMMAND_OPCODE; + typedef enum tagCOMMAND_SUBTYPE { + COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0, + } COMMAND_SUBTYPE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_GFXPIPE = 0x3, + } COMMAND_TYPE; + typedef enum tagPATCH_CONSTANTS { + SYSTEMINSTRUCTIONPOINTER_BYTEOFFSET = 0x4, + SYSTEMINSTRUCTIONPOINTER_INDEX = 0x1, + } PATCH_CONSTANTS; + void init() { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N; + TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_STATE_SIP; + TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED; + TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON; + TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; + } + static tagSTATE_SIP sInit() { + STATE_SIP state; + state.init(); + return state; + } + inline uint32_t &getRawData(uint32_t const index) { + DEBUG_BREAK_IF(index >= 3); + return TheStructure.RawData[index]; + } + typedef enum tagSYSTEMINSTRUCTIONPOINTER { + SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT = 0x4, + SYSTEMINSTRUCTIONPOINTER_ALIGN_SIZE = 0x10, + } SYSTEMINSTRUCTIONPOINTER; + inline uint64_t getSystemInstructionPointer() const { + return (uint64_t)TheStructure.Common.SystemInstructionPointer << SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT; + } + inline void setSystemInstructionPointer(uint64_t value) { + TheStructure.Common.SystemInstructionPointer = value >> SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT; + } +} STATE_SIP; +STATIC_ASSERT(12 == sizeof(STATE_SIP)); + +typedef struct tagGPGPU_CSR_BASE_ADDRESS { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 15); + uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); + uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); + uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint64_t Reserved_32 : BITFIELD_RANGE(0, 11); + uint64_t GpgpuCsrBaseAddress : BITFIELD_RANGE(12, 63); + } Common; + uint32_t RawData[3]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_UNNAMED_1 = 0x1, + } DWORD_LENGTH; + typedef enum tag_3D_COMMAND_SUB_OPCODE { + _3D_COMMAND_SUB_OPCODE_GPGPU_CSR_BASE_ADDRESS = 0x4, + } _3D_COMMAND_SUB_OPCODE; + typedef enum tag_3D_COMMAND_OPCODE { + _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1, + } _3D_COMMAND_OPCODE; + typedef enum tagCOMMAND_SUBTYPE { + COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0, + } COMMAND_SUBTYPE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_GFXPIPE = 0x3, + } COMMAND_TYPE; + typedef enum tagPATCH_CONSTANTS { + GPGPUCSRBASEADDRESS_BYTEOFFSET = 0x4, + GPGPUCSRBASEADDRESS_INDEX = 0x1, + } PATCH_CONSTANTS; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_UNNAMED_1; + TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_GPGPU_CSR_BASE_ADDRESS; + TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED; + TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON; + TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; + } + static tagGPGPU_CSR_BASE_ADDRESS sInit(void) { + GPGPU_CSR_BASE_ADDRESS state; + state.init(); + return state; + } + inline uint32_t &getRawData(uint32_t const index) { + DEBUG_BREAK_IF(index >= 3); + return TheStructure.RawData[index]; + } + typedef enum tagGPGPUCSRBASEADDRESS { + GPGPUCSRBASEADDRESS_BIT_SHIFT = 0xC, + GPGPUCSRBASEADDRESS_ALIGN_SIZE = 0x1000, + } GPGPUCSRBASEADDRESS; + inline uint64_t getGpgpuCsrBaseAddress() const { + return (uint64_t)TheStructure.Common.GpgpuCsrBaseAddress << GPGPUCSRBASEADDRESS_BIT_SHIFT; + } + inline void setGpgpuCsrBaseAddress(uint64_t value) { + TheStructure.Common.GpgpuCsrBaseAddress = value >> GPGPUCSRBASEADDRESS_BIT_SHIFT; + } +} GPGPU_CSR_BASE_ADDRESS; +STATIC_ASSERT(12 == sizeof(GPGPU_CSR_BASE_ADDRESS)); + #pragma pack() diff --git a/core/generated/gen8/hw_cmds_generated_patched.inl b/core/generated/gen8/hw_cmds_generated_patched.inl deleted file mode 100644 index 7d5e909d92..0000000000 --- a/core/generated/gen8/hw_cmds_generated_patched.inl +++ /dev/null @@ -1,614 +0,0 @@ -/* - * Copyright (C) 2018-2019 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#pragma pack(1) -typedef struct tagMEDIA_SURFACE_STATE { - union tagTheStructure { - struct tagCommon { - uint32_t Reserved_0; - uint32_t Cr_VCb_UPixelOffsetVDirection : BITFIELD_RANGE(0, 1); - uint32_t PictureStructure : BITFIELD_RANGE(2, 3); - uint32_t Width : BITFIELD_RANGE(4, 17); - uint32_t Height : BITFIELD_RANGE(18, 31); - uint32_t TileMode : BITFIELD_RANGE(0, 1); - uint32_t HalfPitchForChroma : BITFIELD_RANGE(2, 2); - uint32_t SurfacePitch : BITFIELD_RANGE(3, 20); - uint32_t AddressControl : BITFIELD_RANGE(21, 21); - uint32_t Reserved_86 : BITFIELD_RANGE(22, 25); - uint32_t InterleaveChroma : BITFIELD_RANGE(26, 26); - uint32_t SurfaceFormat : BITFIELD_RANGE(27, 31); - uint32_t YOffsetForU_Cb : BITFIELD_RANGE(0, 13); - uint32_t Reserved_110 : BITFIELD_RANGE(14, 15); - uint32_t XOffsetForU_Cb : BITFIELD_RANGE(16, 29); - uint32_t Reserved_126 : BITFIELD_RANGE(30, 31); - uint32_t Reserved_128; - uint32_t SurfaceMemoryObjectControlState_AgeForQuadlru : BITFIELD_RANGE(0, 1); - uint32_t SurfaceMemoryObjectControlState_Reserved : BITFIELD_RANGE(2, 2); - uint32_t SurfaceMemoryObjectControlState_TargetCache : BITFIELD_RANGE(3, 4); - uint32_t SurfaceMemoryObjectControlState_MemoryTypeLlcEllcCacheabilityControl : BITFIELD_RANGE(5, 6); - uint32_t Reserved_167 : BITFIELD_RANGE(7, 29); - uint32_t VerticalLineStrideOffset : BITFIELD_RANGE(30, 30); - uint32_t VerticalLineStride : BITFIELD_RANGE(31, 31); - uint32_t SurfaceBaseAddressLow; - uint32_t SurfaceBaseAddressHigh : BITFIELD_RANGE(0, 15); - uint32_t Reserved_240 : BITFIELD_RANGE(16, 31); - } Common; - struct tag_SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0 { - uint32_t Reserved_0; - uint32_t Reserved_32; - uint32_t Reserved_64; - uint32_t Reserved_96; - uint32_t YOffsetForV_Cr : BITFIELD_RANGE(0, 14); - uint32_t Reserved_143 : BITFIELD_RANGE(15, 15); - uint32_t XOffsetForV_Cr : BITFIELD_RANGE(16, 29); - uint32_t Reserved_158 : BITFIELD_RANGE(30, 31); - uint32_t Reserved_160; - uint32_t Reserved_192; - uint32_t Reserved_224; - } _SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0; - uint32_t RawData[8]; - } TheStructure; - typedef enum tagPICTURE_STRUCTURE { - PICTURE_STRUCTURE_FRAME_PICTURE = 0x0, - PICTURE_STRUCTURE_TOP_FIELD_PICTURE = 0x1, - PICTURE_STRUCTURE_BOTTOM_FIELD_PICTURE = 0x2, - PICTURE_STRUCTURE_INVALID_NOT_ALLOWED = 0x3, - } PICTURE_STRUCTURE; - typedef enum tagTILE_MODE { - TILE_MODE_TILEMODE_LINEAR = 0x0, - TILE_MODE_TILEMODE_XMAJOR = 0x2, - TILE_MODE_TILEMODE_YMAJOR = 0x3, - } TILE_MODE; - typedef enum tagADDRESS_CONTROL { - ADDRESS_CONTROL_CLAMP = 0x0, - ADDRESS_CONTROL_MIRROR = 0x1, - } ADDRESS_CONTROL; - typedef enum tagSURFACE_FORMAT { - SURFACE_FORMAT_YCRCB_NORMAL = 0x0, - SURFACE_FORMAT_YCRCB_SWAPUVY = 0x1, - SURFACE_FORMAT_YCRCB_SWAPUV = 0x2, - SURFACE_FORMAT_YCRCB_SWAPY = 0x3, - SURFACE_FORMAT_PLANAR_420_8 = 0x4, - SURFACE_FORMAT_Y8_UNORM_VA = 0x5, - SURFACE_FORMAT_Y16_SNORM = 0x6, - SURFACE_FORMAT_Y16_UNORM_VA = 0x7, - SURFACE_FORMAT_R10G10B10A2_UNORM = 0x8, - SURFACE_FORMAT_R8G8B8A8_UNORM = 0x9, - SURFACE_FORMAT_R8B8_UNORM_CRCB = 0xa, - SURFACE_FORMAT_R8_UNORM_CR_CB = 0xb, - SURFACE_FORMAT_Y8_UNORM = 0xc, - SURFACE_FORMAT_A8Y8U8V8_UNORM = 0xd, - SURFACE_FORMAT_B8G8R8A8_UNORM = 0xe, - SURFACE_FORMAT_R16G16B16A16 = 0xf, - SURFACE_FORMAT_Y1_UNORM = 0x10, - SURFACE_FORMAT_Y32_UNORM = 0x11, - } SURFACE_FORMAT; - typedef enum tagSURFACE_MEMORY_OBJECT_CONTROL_STATE { - SURFACE_MEMORY_OBJECT_CONTROL_STATE_DEFAULTVAUEDESC = 0x0, - } SURFACE_MEMORY_OBJECT_CONTROL_STATE; - typedef enum tagPATCH_CONSTANTS { - SURFACEBASEADDRESS_BYTEOFFSET = 0x18, - SURFACEBASEADDRESS_INDEX = 0x6, - SURFACEBASEADDRESSHIGH_BYTEOFFSET = 0x1c, - SURFACEBASEADDRESSHIGH_INDEX = 0x7, - } PATCH_CONSTANTS; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.PictureStructure = PICTURE_STRUCTURE_FRAME_PICTURE; - TheStructure.Common.TileMode = TILE_MODE_TILEMODE_LINEAR; - TheStructure.Common.AddressControl = ADDRESS_CONTROL_CLAMP; - TheStructure.Common.SurfaceFormat = SURFACE_FORMAT_YCRCB_NORMAL; - } - static tagMEDIA_SURFACE_STATE sInit(void) { - MEDIA_SURFACE_STATE state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 8); - return TheStructure.RawData[index]; - } - inline void setCrVCbUPixelOffsetVDirection(const uint32_t value) { - TheStructure.Common.Cr_VCb_UPixelOffsetVDirection = value; - } - inline uint32_t getCrVCbUPixelOffsetVDirection(void) const { - return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirection); - } - inline void setPictureStructure(const PICTURE_STRUCTURE value) { - TheStructure.Common.PictureStructure = value; - } - inline PICTURE_STRUCTURE getPictureStructure(void) const { - return static_cast(TheStructure.Common.PictureStructure); - } - inline void setWidth(const uint32_t value) { - TheStructure.Common.Width = value - 1; - } - inline uint32_t getWidth(void) const { - return (TheStructure.Common.Width + 1); - } - inline void setHeight(const uint32_t value) { - TheStructure.Common.Height = value - 1; - } - inline uint32_t getHeight(void) const { - return (TheStructure.Common.Height + 1); - } - inline void setTileMode(const TILE_MODE value) { - TheStructure.Common.TileMode = value; - } - inline TILE_MODE getTileMode(void) const { - return static_cast(TheStructure.Common.TileMode); - } - inline void setHalfPitchForChroma(const bool value) { - TheStructure.Common.HalfPitchForChroma = value; - } - inline bool getHalfPitchForChroma(void) const { - return (TheStructure.Common.HalfPitchForChroma); - } - inline void setSurfacePitch(const uint32_t value) { - TheStructure.Common.SurfacePitch = value - 1; - } - inline uint32_t getSurfacePitch(void) const { - return (TheStructure.Common.SurfacePitch + 1); - } - inline void setAddressControl(const ADDRESS_CONTROL value) { - TheStructure.Common.AddressControl = value; - } - inline ADDRESS_CONTROL getAddressControl(void) const { - return static_cast(TheStructure.Common.AddressControl); - } - inline void setInterleaveChroma(const bool value) { - TheStructure.Common.InterleaveChroma = value; - } - inline bool getInterleaveChroma(void) const { - return (TheStructure.Common.InterleaveChroma); - } - inline void setSurfaceFormat(const SURFACE_FORMAT value) { - TheStructure.Common.SurfaceFormat = value; - } - inline SURFACE_FORMAT getSurfaceFormat(void) const { - return static_cast(TheStructure.Common.SurfaceFormat); - } - inline void setYOffsetForUCb(const uint32_t value) { - TheStructure.Common.YOffsetForU_Cb = value; - } - inline uint32_t getYOffsetForUCb(void) const { - return (TheStructure.Common.YOffsetForU_Cb); - } - inline void setXOffsetForUCb(const uint32_t value) { - TheStructure.Common.XOffsetForU_Cb = value; - } - inline uint32_t getXOffsetForUCb(void) const { - return (TheStructure.Common.XOffsetForU_Cb); - } - inline void setSurfaceMemoryObjectControlStateAgeForQuadlru(const uint32_t value) { - TheStructure.Common.SurfaceMemoryObjectControlState_AgeForQuadlru = value; - } - inline uint32_t getSurfaceMemoryObjectControlStateAgeForQuadlru(void) const { - return (TheStructure.Common.SurfaceMemoryObjectControlState_AgeForQuadlru); - } - inline void setSurfaceMemoryObjectControlStateReserved(const uint32_t value) { - TheStructure.Common.SurfaceMemoryObjectControlState_Reserved = value; - } - inline uint32_t getSurfaceMemoryObjectControlStateReserved(void) const { - return (TheStructure.Common.SurfaceMemoryObjectControlState_Reserved); - } - inline void setSurfaceMemoryObjectControlStateTargetCache(const uint32_t value) { - TheStructure.Common.SurfaceMemoryObjectControlState_TargetCache = value; - } - inline uint32_t getSurfaceMemoryObjectControlStateTargetCache(void) const { - return (TheStructure.Common.SurfaceMemoryObjectControlState_TargetCache); - } - inline void setSurfaceMemoryObjectControlStateMemoryTypeLlcEllcCacheabilityControl(const uint32_t value) { - TheStructure.Common.SurfaceMemoryObjectControlState_MemoryTypeLlcEllcCacheabilityControl = value; - } - inline uint32_t getSurfaceMemoryObjectControlStateMemoryTypeLlcEllcCacheabilityControl(void) const { - return (TheStructure.Common.SurfaceMemoryObjectControlState_MemoryTypeLlcEllcCacheabilityControl); - } - inline void setVerticalLineStrideOffset(const uint32_t value) { - TheStructure.Common.VerticalLineStrideOffset = value; - } - inline uint32_t getVerticalLineStrideOffset(void) const { - return (TheStructure.Common.VerticalLineStrideOffset); - } - inline void setVerticalLineStride(const uint32_t value) { - TheStructure.Common.VerticalLineStride = value; - } - inline uint32_t getVerticalLineStride(void) const { - return (TheStructure.Common.VerticalLineStride); - } - inline void setSurfaceBaseAddress(const uint64_t value) { - TheStructure.Common.SurfaceBaseAddressLow = static_cast(value); - TheStructure.Common.SurfaceBaseAddressHigh = value >> 32; - } - inline uint64_t getSurfaceBaseAddress(void) const { - return (TheStructure.Common.SurfaceBaseAddressLow | - static_cast(TheStructure.Common.SurfaceBaseAddressHigh) << 32); - } - inline void setSurfaceBaseAddressHigh(const uint32_t value) { - TheStructure.Common.SurfaceBaseAddressHigh = value; - } - inline uint32_t getSurfaceBaseAddressHigh(void) const { - return (TheStructure.Common.SurfaceBaseAddressHigh); - } - inline void setYOffsetForVCr(const uint32_t value) { - TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr = value; - } - inline uint32_t getYOffsetForVCr(void) const { - return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr); - } - inline void setXOffsetForVCr(const uint32_t value) { - TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr = value; - } - inline uint32_t getXOffsetForVCr(void) const { - return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr); - } -} MEDIA_SURFACE_STATE; -STATIC_ASSERT(32 == sizeof(MEDIA_SURFACE_STATE)); -typedef struct tagMI_MATH { - union _DW0 { - struct _BitField { - uint32_t DwordLength : BITFIELD_RANGE(0, 5); - uint32_t Reserved : BITFIELD_RANGE(6, 22); - uint32_t InstructionOpcode : BITFIELD_RANGE(23, 28); - uint32_t InstructionType : BITFIELD_RANGE(29, 31); - } BitField; - uint32_t Value; - } DW0; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_MATH = 0x1A, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; -} MI_MATH; -typedef struct tagMI_MATH_ALU_INST_INLINE { - union _DW0 { - struct _BitField { - uint32_t Operand2 : BITFIELD_RANGE(0, 9); - uint32_t Operand1 : BITFIELD_RANGE(10, 19); - uint32_t ALUOpcode : BITFIELD_RANGE(20, 31); - } BitField; - uint32_t Value; - } DW0; -} MI_MATH_ALU_INST_INLINE; -typedef struct tagMI_SEMAPHORE_WAIT { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 11); - uint32_t CompareOperation : BITFIELD_RANGE(12, 14); - uint32_t WaitMode : BITFIELD_RANGE(15, 15); - uint32_t Reserved_16 : BITFIELD_RANGE(16, 21); - uint32_t MemoryType : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint32_t SemaphoreDataDword; - uint64_t Reserved_64 : BITFIELD_RANGE(0, 1); - uint64_t SemaphoreAddress_Graphicsaddress : BITFIELD_RANGE(2, 47); - uint64_t SemaphoreAddress_Reserved : BITFIELD_RANGE(48, 63); - } Common; - uint32_t RawData[4]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x2, - } DWORD_LENGTH; - typedef enum tagCOMPARE_OPERATION { - COMPARE_OPERATION_SAD_GREATER_THAN_SDD = 0x0, - COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD = 0x1, - COMPARE_OPERATION_SAD_LESS_THAN_SDD = 0x2, - COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD = 0x3, - COMPARE_OPERATION_SAD_EQUAL_SDD = 0x4, - COMPARE_OPERATION_SAD_NOT_EQUAL_SDD = 0x5, - } COMPARE_OPERATION; - typedef enum tagWAIT_MODE { - WAIT_MODE_SIGNAL_MODE = 0x0, - WAIT_MODE_POLLING_MODE = 0x1, - } WAIT_MODE; - typedef enum tagMEMORY_TYPE { - MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS = 0x0, - MEMORY_TYPE_GLOBAL_GRAPHICS_ADDRESS = 0x1, - } MEMORY_TYPE; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT = 0x1c, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; - TheStructure.Common.CompareOperation = COMPARE_OPERATION_SAD_GREATER_THAN_SDD; - TheStructure.Common.WaitMode = WAIT_MODE_SIGNAL_MODE; - TheStructure.Common.MemoryType = MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_SEMAPHORE_WAIT sInit(void) { - MI_SEMAPHORE_WAIT state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 4); - return TheStructure.RawData[index]; - } - inline void setCompareOperation(const COMPARE_OPERATION value) { - TheStructure.Common.CompareOperation = value; - } - inline COMPARE_OPERATION getCompareOperation(void) const { - return static_cast(TheStructure.Common.CompareOperation); - } - inline void setWaitMode(const WAIT_MODE value) { - TheStructure.Common.WaitMode = value; - } - inline WAIT_MODE getWaitMode(void) const { - return static_cast(TheStructure.Common.WaitMode); - } - inline void setMemoryType(const MEMORY_TYPE value) { - TheStructure.Common.MemoryType = value; - } - inline MEMORY_TYPE getMemoryType(void) const { - return static_cast(TheStructure.Common.MemoryType); - } - inline void setSemaphoreDataDword(const uint32_t value) { - TheStructure.Common.SemaphoreDataDword = value; - } - inline uint32_t getSemaphoreDataDword(void) const { - return (TheStructure.Common.SemaphoreDataDword); - } - typedef enum tagSEMAPHOREADDRESS_GRAPHICSADDRESS { - SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT = 0x2, - SEMAPHOREADDRESS_GRAPHICSADDRESS_ALIGN_SIZE = 0x4, - } SEMAPHOREADDRESS_GRAPHICSADDRESS; - inline void setSemaphoreGraphicsAddress(const uint64_t value) { - TheStructure.Common.SemaphoreAddress_Graphicsaddress = value >> SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT; - } - inline uint64_t getSemaphoreGraphicsAddress(void) const { - return (TheStructure.Common.SemaphoreAddress_Graphicsaddress << SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT); - } - typedef enum tagSEMAPHOREADDRESS_RESERVED { - SEMAPHOREADDRESS_RESERVED_BIT_SHIFT = 0x2, - SEMAPHOREADDRESS_RESERVED_ALIGN_SIZE = 0x4, - } SEMAPHOREADDRESS_RESERVED; - inline void setSemaphoreAddressReserved(const uint64_t value) { - TheStructure.Common.SemaphoreAddress_Reserved = value >> SEMAPHOREADDRESS_RESERVED_BIT_SHIFT; - } - inline uint64_t getSemaphoreAddressReserved(void) const { - return (TheStructure.Common.SemaphoreAddress_Reserved << SEMAPHOREADDRESS_RESERVED_BIT_SHIFT); - } -} MI_SEMAPHORE_WAIT; -STATIC_ASSERT(16 == sizeof(MI_SEMAPHORE_WAIT)); - -typedef struct tagMI_STORE_DATA_IMM { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 9); - uint32_t Reserved_10 : BITFIELD_RANGE(10, 20); - uint32_t StoreQword : BITFIELD_RANGE(21, 21); - uint32_t UseGlobalGtt : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint32_t Reserved_32 : BITFIELD_RANGE(0, 1); - uint32_t Address : BITFIELD_RANGE(2, 31); - uint32_t AddressHigh : BITFIELD_RANGE(0, 15); - uint32_t Reserved_80 : BITFIELD_RANGE(16, 31); - uint32_t DataDword0; - uint32_t DataDword1; - } Common; - uint32_t RawData[5]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x0, - } DWORD_LENGTH; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_STORE_DATA_IMM = 0x20, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - typedef enum tagPATCH_CONSTANTS { - ADDRESS_BYTEOFFSET = 0x4, - ADDRESS_INDEX = 0x1, - ADDRESSHIGH_BYTEOFFSET = 0x8, - ADDRESSHIGH_INDEX = 0x2, - } PATCH_CONSTANTS; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_STORE_DATA_IMM; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_STORE_DATA_IMM sInit(void) { - MI_STORE_DATA_IMM state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 5); - return TheStructure.RawData[index]; - } - inline void setDwordLength(const DWORD_LENGTH value) { - TheStructure.Common.DwordLength = value; - } - inline DWORD_LENGTH getDwordLength(void) const { - return static_cast(TheStructure.Common.DwordLength); - } - inline void setStoreQword(const bool value) { - TheStructure.Common.StoreQword = value; - } - inline bool getStoreQword(void) const { - return TheStructure.Common.StoreQword; - } - inline void setUseGlobalGtt(const uint32_t value) { - TheStructure.Common.UseGlobalGtt = value; - } - inline uint32_t getUseGlobalGtt(void) const { - return (TheStructure.Common.UseGlobalGtt); - } - typedef enum tagADDRESS { - ADDRESS_BIT_SHIFT = 0x2, - ADDRESS_ALIGN_SIZE = 0x4, - } ADDRESS; - inline void setAddress(const uint64_t value) { - setAddressLow(static_cast(value & 0x0000FFFFFFFFULL)); - setAddressHigh(static_cast(value >> 32)); - } - inline uint64_t getAddress(void) const { - return (static_cast(getAddressHigh()) << 32) | static_cast(getAddressLow()); - } - inline void setAddressLow(const uint32_t value) { - TheStructure.Common.Address = value >> ADDRESS_BIT_SHIFT; - } - inline uint32_t getAddressLow(void) const { - return (TheStructure.Common.Address << ADDRESS_BIT_SHIFT); - } - inline void setAddressHigh(const uint32_t value) { - TheStructure.Common.AddressHigh = value; - } - inline uint32_t getAddressHigh(void) const { - return (TheStructure.Common.AddressHigh); - } - inline void setDataDword0(const uint32_t value) { - TheStructure.Common.DataDword0 = value; - } - inline uint32_t getDataDword0(void) const { - return (TheStructure.Common.DataDword0); - } - inline void setDataDword1(const uint32_t value) { - TheStructure.Common.DataDword1 = value; - } - inline uint32_t getDataDword1(void) const { - return (TheStructure.Common.DataDword1); - } -} MI_STORE_DATA_IMM; -STATIC_ASSERT(20 == sizeof(MI_STORE_DATA_IMM)); - -typedef struct tagSTATE_SIP { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 15); - uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); - uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); - uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint64_t Reserved_32 : BITFIELD_RANGE(0, 3); - uint64_t SystemInstructionPointer : BITFIELD_RANGE(4, 63); - } Common; - uint32_t RawData[3]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_DWORD_COUNT_N = 0x1, - } DWORD_LENGTH; - typedef enum tag_3D_COMMAND_SUB_OPCODE { - _3D_COMMAND_SUB_OPCODE_STATE_SIP = 0x2, - } _3D_COMMAND_SUB_OPCODE; - typedef enum tag_3D_COMMAND_OPCODE { - _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1, - } _3D_COMMAND_OPCODE; - typedef enum tagCOMMAND_SUBTYPE { - COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0, - } COMMAND_SUBTYPE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_GFXPIPE = 0x3, - } COMMAND_TYPE; - typedef enum tagPATCH_CONSTANTS { - SYSTEMINSTRUCTIONPOINTER_BYTEOFFSET = 0x4, - SYSTEMINSTRUCTIONPOINTER_INDEX = 0x1, - } PATCH_CONSTANTS; - void init() { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N; - TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_STATE_SIP; - TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED; - TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON; - TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; - } - static tagSTATE_SIP sInit() { - STATE_SIP state; - state.init(); - return state; - } - inline uint32_t &getRawData(uint32_t const index) { - DEBUG_BREAK_IF(index >= 3); - return TheStructure.RawData[index]; - } - typedef enum tagSYSTEMINSTRUCTIONPOINTER { - SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT = 0x4, - SYSTEMINSTRUCTIONPOINTER_ALIGN_SIZE = 0x10, - } SYSTEMINSTRUCTIONPOINTER; - inline uint64_t getSystemInstructionPointer() const { - return (uint64_t)TheStructure.Common.SystemInstructionPointer << SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT; - } - inline void setSystemInstructionPointer(uint64_t value) { - TheStructure.Common.SystemInstructionPointer = value >> SYSTEMINSTRUCTIONPOINTER_BIT_SHIFT; - } -} STATE_SIP; -STATIC_ASSERT(12 == sizeof(STATE_SIP)); -typedef struct tagGPGPU_CSR_BASE_ADDRESS { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 15); - uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23); - uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26); - uint32_t CommandSubtype : BITFIELD_RANGE(27, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint64_t Reserved_32 : BITFIELD_RANGE(0, 11); - uint64_t GpgpuCsrBaseAddress : BITFIELD_RANGE(12, 63); - } Common; - uint32_t RawData[3]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_UNNAMED_1 = 0x1, - } DWORD_LENGTH; - typedef enum tag_3D_COMMAND_SUB_OPCODE { - _3D_COMMAND_SUB_OPCODE_GPGPU_CSR_BASE_ADDRESS = 0x4, - } _3D_COMMAND_SUB_OPCODE; - typedef enum tag_3D_COMMAND_OPCODE { - _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1, - } _3D_COMMAND_OPCODE; - typedef enum tagCOMMAND_SUBTYPE { - COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0, - } COMMAND_SUBTYPE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_GFXPIPE = 0x3, - } COMMAND_TYPE; - typedef enum tagPATCH_CONSTANTS { - GPGPUCSRBASEADDRESS_BYTEOFFSET = 0x4, - GPGPUCSRBASEADDRESS_INDEX = 0x1, - } PATCH_CONSTANTS; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_UNNAMED_1; - TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_GPGPU_CSR_BASE_ADDRESS; - TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED; - TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON; - TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE; - } - static tagGPGPU_CSR_BASE_ADDRESS sInit(void) { - GPGPU_CSR_BASE_ADDRESS state; - state.init(); - return state; - } - inline uint32_t &getRawData(uint32_t const index) { - DEBUG_BREAK_IF(index >= 3); - return TheStructure.RawData[index]; - } - typedef enum tagGPGPUCSRBASEADDRESS { - GPGPUCSRBASEADDRESS_BIT_SHIFT = 0xC, - GPGPUCSRBASEADDRESS_ALIGN_SIZE = 0x1000, - } GPGPUCSRBASEADDRESS; - inline uint64_t getGpgpuCsrBaseAddress() const { - return (uint64_t)TheStructure.Common.GpgpuCsrBaseAddress << GPGPUCSRBASEADDRESS_BIT_SHIFT; - } - inline void setGpgpuCsrBaseAddress(uint64_t value) { - TheStructure.Common.GpgpuCsrBaseAddress = value >> GPGPUCSRBASEADDRESS_BIT_SHIFT; - } -} GPGPU_CSR_BASE_ADDRESS; -STATIC_ASSERT(12 == sizeof(GPGPU_CSR_BASE_ADDRESS)); -#pragma pack() diff --git a/core/generated/gen9/hw_cmds_generated.inl b/core/generated/gen9/hw_cmds_generated_gen9.inl similarity index 88% rename from core/generated/gen9/hw_cmds_generated.inl rename to core/generated/gen9/hw_cmds_generated_gen9.inl index b9d65f81f7..b3394104a5 100644 --- a/core/generated/gen9/hw_cmds_generated.inl +++ b/core/generated/gen9/hw_cmds_generated_gen9.inl @@ -47,6 +47,7 @@ typedef struct tagBINDING_TABLE_STATE { } } BINDING_TABLE_STATE; STATIC_ASSERT(4 == sizeof(BINDING_TABLE_STATE)); + typedef struct tagGPGPU_WALKER { union tagTheStructure { struct tagCommon { @@ -235,6 +236,7 @@ typedef struct tagGPGPU_WALKER { } } GPGPU_WALKER; STATIC_ASSERT(60 == sizeof(GPGPU_WALKER)); + typedef struct tagINTERFACE_DESCRIPTOR_DATA { union tagTheStructure { struct tagCommon { @@ -485,6 +487,7 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA { } } INTERFACE_DESCRIPTOR_DATA; STATIC_ASSERT(32 == sizeof(INTERFACE_DESCRIPTOR_DATA)); + typedef struct tagMEDIA_INTERFACE_DESCRIPTOR_LOAD { union tagTheStructure { struct tagCommon { @@ -550,6 +553,7 @@ typedef struct tagMEDIA_INTERFACE_DESCRIPTOR_LOAD { } } MEDIA_INTERFACE_DESCRIPTOR_LOAD; STATIC_ASSERT(16 == sizeof(MEDIA_INTERFACE_DESCRIPTOR_LOAD)); + typedef struct tagMEDIA_STATE_FLUSH { union tagTheStructure { struct tagCommon { @@ -617,6 +621,7 @@ typedef struct tagMEDIA_STATE_FLUSH { } } MEDIA_STATE_FLUSH; STATIC_ASSERT(8 == sizeof(MEDIA_STATE_FLUSH)); + typedef struct tagMEDIA_VFE_STATE { union tagTheStructure { struct tagCommon { @@ -896,6 +901,7 @@ typedef struct tagMEDIA_VFE_STATE { } } MEDIA_VFE_STATE; STATIC_ASSERT(36 == sizeof(MEDIA_VFE_STATE)); + typedef struct tagMI_ARB_CHECK { union tagTheStructure { struct tagCommon { @@ -939,6 +945,7 @@ typedef struct tagMI_ARB_CHECK { } } MI_ARB_CHECK; STATIC_ASSERT(4 == sizeof(MI_ARB_CHECK)); + typedef struct tagMI_ATOMIC { union tagTheStructure { struct tagCommon { @@ -1131,6 +1138,7 @@ typedef struct tagMI_ATOMIC { } } MI_ATOMIC; STATIC_ASSERT(44 == sizeof(MI_ATOMIC)); + typedef struct tagMI_BATCH_BUFFER_END { union tagTheStructure { struct tagCommon { @@ -1162,6 +1170,7 @@ typedef struct tagMI_BATCH_BUFFER_END { } } MI_BATCH_BUFFER_END; STATIC_ASSERT(4 == sizeof(MI_BATCH_BUFFER_END)); + typedef struct tagMI_BATCH_BUFFER_START { union tagTheStructure { struct tagCommon { @@ -1268,6 +1277,7 @@ typedef struct tagMI_BATCH_BUFFER_START { } } MI_BATCH_BUFFER_START; STATIC_ASSERT(12 == sizeof(MI_BATCH_BUFFER_START)); + typedef struct tagMI_LOAD_REGISTER_IMM { union tagTheStructure { struct tagCommon { @@ -1331,6 +1341,7 @@ typedef struct tagMI_LOAD_REGISTER_IMM { } } MI_LOAD_REGISTER_IMM; STATIC_ASSERT(12 == sizeof(MI_LOAD_REGISTER_IMM)); + typedef struct tagMI_LOAD_REGISTER_MEM { union tagTheStructure { struct tagCommon { @@ -1410,6 +1421,7 @@ typedef struct tagMI_LOAD_REGISTER_MEM { } } MI_LOAD_REGISTER_MEM; STATIC_ASSERT(16 == sizeof(MI_LOAD_REGISTER_MEM)); + typedef struct tagMI_LOAD_REGISTER_REG { union tagTheStructure { struct tagCommon { @@ -1472,6 +1484,7 @@ typedef struct tagMI_LOAD_REGISTER_REG { } } MI_LOAD_REGISTER_REG; STATIC_ASSERT(12 == sizeof(MI_LOAD_REGISTER_REG)); + typedef struct tagMI_NOOP { union tagTheStructure { struct tagCommon { @@ -1596,6 +1609,7 @@ typedef struct tagMI_STORE_REGISTER_MEM { } } MI_STORE_REGISTER_MEM; STATIC_ASSERT(16 == sizeof(MI_STORE_REGISTER_MEM)); + typedef struct tagPIPELINE_SELECT { union tagTheStructure { struct tagCommon { @@ -1685,6 +1699,7 @@ typedef struct tagPIPELINE_SELECT { } } PIPELINE_SELECT; STATIC_ASSERT(4 == sizeof(PIPELINE_SELECT)); + typedef struct tagPIPE_CONTROL { union tagTheStructure { struct tagCommon { @@ -1957,6 +1972,7 @@ typedef struct tagPIPE_CONTROL { } } PIPE_CONTROL; STATIC_ASSERT(24 == sizeof(PIPE_CONTROL)); + typedef struct tagRENDER_SURFACE_STATE { union tagTheStructure { struct tagCommon { @@ -2982,6 +2998,7 @@ typedef struct tagRENDER_SURFACE_STATE { } } RENDER_SURFACE_STATE; STATIC_ASSERT(64 == sizeof(RENDER_SURFACE_STATE)); + typedef struct tagSAMPLER_STATE { union tagTheStructure { struct tagCommon { @@ -3337,6 +3354,7 @@ typedef struct tagSAMPLER_STATE { } } SAMPLER_STATE; STATIC_ASSERT(16 == sizeof(SAMPLER_STATE)); + typedef struct tagSTATE_BASE_ADDRESS { union tagTheStructure { struct tagCommon { @@ -3705,6 +3723,7 @@ typedef struct tagSTATE_BASE_ADDRESS { } } STATE_BASE_ADDRESS; STATIC_ASSERT(76 == sizeof(STATE_BASE_ADDRESS)); + typedef struct tagMI_REPORT_PERF_COUNT { union tagTheStructure { struct tagCommon { @@ -3779,6 +3798,7 @@ typedef struct tagMI_REPORT_PERF_COUNT { } } MI_REPORT_PERF_COUNT; STATIC_ASSERT(16 == sizeof(MI_REPORT_PERF_COUNT)); + typedef struct tagGPGPU_CSR_BASE_ADDRESS { union tagTheStructure { struct tagCommon { @@ -3841,6 +3861,7 @@ typedef struct tagGPGPU_CSR_BASE_ADDRESS { } } GPGPU_CSR_BASE_ADDRESS; STATIC_ASSERT(12 == sizeof(GPGPU_CSR_BASE_ADDRESS)); + typedef struct tagSTATE_SIP { union tagTheStructure { struct tagCommon { @@ -3903,6 +3924,7 @@ typedef struct tagSTATE_SIP { } } STATE_SIP; STATIC_ASSERT(12 == sizeof(STATE_SIP)); + struct MI_USER_INTERRUPT { union tagTheStructure { struct tagCommon { @@ -4271,4 +4293,577 @@ typedef struct tagGRF { } TheStructure; } GRF; STATIC_ASSERT(32 == sizeof(GRF)); + +typedef struct tagMEDIA_SURFACE_STATE { + union tagTheStructure { + struct tagCommon { + uint32_t Reserved_0 : BITFIELD_RANGE(0, 29); + uint32_t Rotation : BITFIELD_RANGE(30, 31); + uint32_t Cr_VCb_UPixelOffsetVDirection : BITFIELD_RANGE(0, 1); + uint32_t PictureStructure : BITFIELD_RANGE(2, 3); + uint32_t Width : BITFIELD_RANGE(4, 17); + uint32_t Height : BITFIELD_RANGE(18, 31); + uint32_t TileMode : BITFIELD_RANGE(0, 1); + uint32_t HalfPitchForChroma : BITFIELD_RANGE(2, 2); + uint32_t SurfacePitch : BITFIELD_RANGE(3, 20); + uint32_t AddressControl : BITFIELD_RANGE(21, 21); + uint32_t MemoryCompressionEnable : BITFIELD_RANGE(22, 22); + uint32_t MemoryCompressionMode : BITFIELD_RANGE(23, 23); + uint32_t Cr_VCb_UPixelOffsetVDirectionMsb : BITFIELD_RANGE(24, 24); + uint32_t Cr_VCb_UPixelOffsetUDirection : BITFIELD_RANGE(25, 25); + uint32_t InterleaveChroma : BITFIELD_RANGE(26, 26); + uint32_t SurfaceFormat : BITFIELD_RANGE(27, 31); + uint32_t YOffsetForU_Cb : BITFIELD_RANGE(0, 13); + uint32_t Reserved_110 : BITFIELD_RANGE(14, 15); + uint32_t XOffsetForU_Cb : BITFIELD_RANGE(16, 29); + uint32_t Reserved_126 : BITFIELD_RANGE(30, 31); + uint32_t Reserved_128; + uint32_t SurfaceMemoryObjectControlState_Reserved : BITFIELD_RANGE(0, 0); + uint32_t SurfaceMemoryObjectControlState_IndexToMocsTables : BITFIELD_RANGE(1, 6); + uint32_t Reserved_167 : BITFIELD_RANGE(7, 17); + uint32_t TiledResourceMode : BITFIELD_RANGE(18, 19); + uint32_t Reserved_180 : BITFIELD_RANGE(20, 29); + uint32_t VerticalLineStrideOffset : BITFIELD_RANGE(30, 30); + uint32_t VerticalLineStride : BITFIELD_RANGE(31, 31); + uint32_t SurfaceBaseAddressLow; + uint32_t SurfaceBaseAddressHigh : BITFIELD_RANGE(0, 15); + uint32_t Reserved_240 : BITFIELD_RANGE(16, 31); + } Common; + struct tagSurfaceFormatIsNotOneOfPlanarFormats { + uint32_t Reserved_0; + uint32_t Reserved_32; + uint32_t Reserved_64; + uint32_t Reserved_96; + uint32_t Reserved_128; + uint32_t Reserved_160; + uint32_t Reserved_192; + uint32_t Reserved_224; + } SurfaceFormatIsNotOneOfPlanarFormats; + struct tagSurfaceFormatIsOneOfPlanarFormats { + uint32_t Reserved_0 : BITFIELD_RANGE(0, 15); + uint32_t YOffset : BITFIELD_RANGE(16, 19); + uint32_t XOffset : BITFIELD_RANGE(20, 26); + uint32_t Reserved_27 : BITFIELD_RANGE(27, 31); + uint32_t Reserved_32; + uint32_t Reserved_64; + uint32_t Reserved_96; + uint32_t Reserved_128; + uint32_t Reserved_160; + uint32_t Reserved_192; + uint32_t Reserved_224; + } SurfaceFormatIsOneOfPlanarFormats; + struct tag_SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0 { + uint32_t Reserved_0; + uint32_t Reserved_32; + uint32_t Reserved_64; + uint32_t Reserved_96; + uint32_t YOffsetForV_Cr : BITFIELD_RANGE(0, 14); + uint32_t Reserved_143 : BITFIELD_RANGE(15, 15); + uint32_t XOffsetForV_Cr : BITFIELD_RANGE(16, 29); + uint32_t Reserved_158 : BITFIELD_RANGE(30, 31); + uint32_t Reserved_160; + uint32_t Reserved_192; + uint32_t Reserved_224; + } _SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0; + uint32_t RawData[8]; + } TheStructure; + typedef enum tagROTATION { + ROTATION_NO_ROTATION_OR_0_DEGREE = 0x0, + ROTATION_90_DEGREE_ROTATION = 0x1, + ROTATION_180_DEGREE_ROTATION = 0x2, + ROTATION_270_DEGREE_ROTATION = 0x3, + } ROTATION; + typedef enum tagPICTURE_STRUCTURE { + PICTURE_STRUCTURE_FRAME_PICTURE = 0x0, + PICTURE_STRUCTURE_TOP_FIELD_PICTURE = 0x1, + PICTURE_STRUCTURE_BOTTOM_FIELD_PICTURE = 0x2, + PICTURE_STRUCTURE_INVALID_NOT_ALLOWED = 0x3, + } PICTURE_STRUCTURE; + typedef enum tagTILE_MODE { + TILE_MODE_TILEMODE_LINEAR = 0x0, + TILE_MODE_TILEMODE_XMAJOR = 0x2, + TILE_MODE_TILEMODE_YMAJOR = 0x3, + } TILE_MODE; + typedef enum tagADDRESS_CONTROL { + ADDRESS_CONTROL_CLAMP = 0x0, + ADDRESS_CONTROL_MIRROR = 0x1, + } ADDRESS_CONTROL; + typedef enum tagMEMORY_COMPRESSION_MODE { + MEMORY_COMPRESSION_MODE_HORIZONTAL_COMPRESSION_MODE = 0x0, + MEMORY_COMPRESSION_MODE_VERTICAL_COMPRESSION_MODE = 0x1, + } MEMORY_COMPRESSION_MODE; + typedef enum tagSURFACE_FORMAT { + SURFACE_FORMAT_YCRCB_NORMAL = 0x0, + SURFACE_FORMAT_YCRCB_SWAPUVY = 0x1, + SURFACE_FORMAT_YCRCB_SWAPUV = 0x2, + SURFACE_FORMAT_YCRCB_SWAPY = 0x3, + SURFACE_FORMAT_PLANAR_420_8 = 0x4, + SURFACE_FORMAT_Y8_UNORM_VA = 0x5, + SURFACE_FORMAT_Y16_SNORM = 0x6, + SURFACE_FORMAT_Y16_UNORM_VA = 0x7, + SURFACE_FORMAT_R10G10B10A2_UNORM = 0x8, + SURFACE_FORMAT_R8G8B8A8_UNORM = 0x9, + SURFACE_FORMAT_R8B8_UNORM_CRCB = 0xa, + SURFACE_FORMAT_R8_UNORM_CR_CB = 0xb, + SURFACE_FORMAT_Y8_UNORM = 0xc, + SURFACE_FORMAT_A8Y8U8V8_UNORM = 0xd, + SURFACE_FORMAT_B8G8R8A8_UNORM = 0xe, + SURFACE_FORMAT_R16G16B16A16 = 0xf, + SURFACE_FORMAT_Y1_UNORM = 0x10, + SURFACE_FORMAT_Y32_UNORM = 0x11, + SURFACE_FORMAT_PLANAR_422_8 = 0x12, + } SURFACE_FORMAT; + typedef enum tagSURFACE_MEMORY_OBJECT_CONTROL_STATE { + SURFACE_MEMORY_OBJECT_CONTROL_STATE_DEFAULTVAUEDESC = 0x0, + } SURFACE_MEMORY_OBJECT_CONTROL_STATE; + typedef enum tagTILED_RESOURCE_MODE { + TILED_RESOURCE_MODE_TRMODE_NONE = 0x0, + TILED_RESOURCE_MODE_TRMODE_TILEYF = 0x1, + TILED_RESOURCE_MODE_TRMODE_TILEYS = 0x2, + } TILED_RESOURCE_MODE; + typedef enum tagPATCH_CONSTANTS { + SURFACEBASEADDRESS_BYTEOFFSET = 0x18, + SURFACEBASEADDRESS_INDEX = 0x6, + SURFACEBASEADDRESSHIGH_BYTEOFFSET = 0x1c, + SURFACEBASEADDRESSHIGH_INDEX = 0x7, + } PATCH_CONSTANTS; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.Rotation = ROTATION_NO_ROTATION_OR_0_DEGREE; + TheStructure.Common.PictureStructure = PICTURE_STRUCTURE_FRAME_PICTURE; + TheStructure.Common.TileMode = TILE_MODE_TILEMODE_LINEAR; + TheStructure.Common.AddressControl = ADDRESS_CONTROL_CLAMP; + TheStructure.Common.MemoryCompressionMode = MEMORY_COMPRESSION_MODE_HORIZONTAL_COMPRESSION_MODE; + TheStructure.Common.SurfaceFormat = SURFACE_FORMAT_YCRCB_NORMAL; + TheStructure.Common.TiledResourceMode = TILED_RESOURCE_MODE_TRMODE_NONE; + } + static tagMEDIA_SURFACE_STATE sInit(void) { + MEDIA_SURFACE_STATE state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 8); + return TheStructure.RawData[index]; + } + inline void setRotation(const ROTATION value) { + TheStructure.Common.Rotation = value; + } + inline ROTATION getRotation(void) const { + return static_cast(TheStructure.Common.Rotation); + } + inline void setCrVCbUPixelOffsetVDirection(const uint32_t value) { + TheStructure.Common.Cr_VCb_UPixelOffsetVDirection = value; + } + inline uint32_t getCrVCbUPixelOffsetVDirection(void) const { + return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirection); + } + inline void setPictureStructure(const PICTURE_STRUCTURE value) { + TheStructure.Common.PictureStructure = value; + } + inline PICTURE_STRUCTURE getPictureStructure(void) const { + return static_cast(TheStructure.Common.PictureStructure); + } + inline void setWidth(const uint32_t value) { + TheStructure.Common.Width = value - 1; + } + inline uint32_t getWidth(void) const { + return (TheStructure.Common.Width + 1); + } + inline void setHeight(const uint32_t value) { + TheStructure.Common.Height = value - 1; + } + inline uint32_t getHeight(void) const { + return (TheStructure.Common.Height + 1); + } + inline void setTileMode(const TILE_MODE value) { + TheStructure.Common.TileMode = value; + } + inline TILE_MODE getTileMode(void) const { + return static_cast(TheStructure.Common.TileMode); + } + inline void setHalfPitchForChroma(const bool value) { + TheStructure.Common.HalfPitchForChroma = value; + } + inline bool getHalfPitchForChroma(void) const { + return (TheStructure.Common.HalfPitchForChroma); + } + inline void setSurfacePitch(const uint32_t value) { + TheStructure.Common.SurfacePitch = value - 1; + } + inline uint32_t getSurfacePitch(void) const { + return (TheStructure.Common.SurfacePitch + 1); + } + inline void setAddressControl(const ADDRESS_CONTROL value) { + TheStructure.Common.AddressControl = value; + } + inline ADDRESS_CONTROL getAddressControl(void) const { + return static_cast(TheStructure.Common.AddressControl); + } + inline void setMemoryCompressionEnable(const bool value) { + TheStructure.Common.MemoryCompressionEnable = value; + } + inline bool getMemoryCompressionEnable(void) const { + return (TheStructure.Common.MemoryCompressionEnable); + } + inline void setMemoryCompressionMode(const MEMORY_COMPRESSION_MODE value) { + TheStructure.Common.MemoryCompressionMode = value; + } + inline MEMORY_COMPRESSION_MODE getMemoryCompressionMode(void) const { + return static_cast(TheStructure.Common.MemoryCompressionMode); + } + inline void setCrVCbUPixelOffsetVDirectionMsb(const uint32_t value) { + TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb = value; + } + inline uint32_t getCrVCbUPixelOffsetVDirectionMsb(void) const { + return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb); + } + inline void setCrVCbUPixelOffsetUDirection(const uint32_t value) { + TheStructure.Common.Cr_VCb_UPixelOffsetUDirection = value; + } + inline uint32_t getCrVCbUPixelOffsetUDirection(void) const { + return (TheStructure.Common.Cr_VCb_UPixelOffsetUDirection); + } + inline void setInterleaveChroma(const bool value) { + TheStructure.Common.InterleaveChroma = value; + } + inline bool getInterleaveChroma(void) const { + return (TheStructure.Common.InterleaveChroma); + } + inline void setSurfaceFormat(const SURFACE_FORMAT value) { + TheStructure.Common.SurfaceFormat = value; + } + inline SURFACE_FORMAT getSurfaceFormat(void) const { + return static_cast(TheStructure.Common.SurfaceFormat); + } + inline void setYOffsetForUCb(const uint32_t value) { + TheStructure.Common.YOffsetForU_Cb = value; + } + inline uint32_t getYOffsetForUCb(void) const { + return (TheStructure.Common.YOffsetForU_Cb); + } + inline void setXOffsetForUCb(const uint32_t value) { + TheStructure.Common.XOffsetForU_Cb = value; + } + inline uint32_t getXOffsetForUCb(void) const { + return (TheStructure.Common.XOffsetForU_Cb); + } + inline void setSurfaceMemoryObjectControlStateReserved(const uint32_t value) { + TheStructure.Common.SurfaceMemoryObjectControlState_Reserved = value; + } + inline uint32_t getSurfaceMemoryObjectControlStateReserved(void) const { + return (TheStructure.Common.SurfaceMemoryObjectControlState_Reserved); + } + inline void setSurfaceMemoryObjectControlStateIndexToMocsTables(const uint32_t value) { + TheStructure.Common.SurfaceMemoryObjectControlState_IndexToMocsTables = value >> 1; + } + inline uint32_t getSurfaceMemoryObjectControlStateIndexToMocsTables(void) const { + return (TheStructure.Common.SurfaceMemoryObjectControlState_IndexToMocsTables << 1); + } + inline void setTiledResourceMode(const TILED_RESOURCE_MODE value) { + TheStructure.Common.TiledResourceMode = value; + } + inline TILED_RESOURCE_MODE getTiledResourceMode(void) const { + return static_cast(TheStructure.Common.TiledResourceMode); + } + inline void setVerticalLineStrideOffset(const uint32_t value) { + TheStructure.Common.VerticalLineStrideOffset = value; + } + inline uint32_t getVerticalLineStrideOffset(void) const { + return (TheStructure.Common.VerticalLineStrideOffset); + } + inline void setVerticalLineStride(const uint32_t value) { + TheStructure.Common.VerticalLineStride = value; + } + inline uint32_t getVerticalLineStride(void) const { + return (TheStructure.Common.VerticalLineStride); + } + inline void setSurfaceBaseAddress(const uint64_t value) { + TheStructure.Common.SurfaceBaseAddressLow = static_cast(value & 0xffffffff); + TheStructure.Common.SurfaceBaseAddressHigh = (value >> 32) & 0xffffffff; + } + inline uint64_t getSurfaceBaseAddress(void) const { + return (TheStructure.Common.SurfaceBaseAddressLow | + static_cast(TheStructure.Common.SurfaceBaseAddressHigh) << 32); + } + inline void setSurfaceBaseAddressHigh(const uint32_t value) { + TheStructure.Common.SurfaceBaseAddressHigh = value; + } + inline uint32_t getSurfaceBaseAddressHigh(void) const { + return (TheStructure.Common.SurfaceBaseAddressHigh); + } + typedef enum tagYOFFSET { + YOFFSET_BIT_SHIFT = 0x2, + YOFFSET_ALIGN_SIZE = 0x4, + } YOFFSET; + inline void setYOffset(const uint32_t value) { + TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset = value >> YOFFSET_BIT_SHIFT; + } + inline uint32_t getYOffset(void) const { + return (TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset << YOFFSET_BIT_SHIFT); + } + typedef enum tagXOFFSET { + XOFFSET_BIT_SHIFT = 0x2, + XOFFSET_ALIGN_SIZE = 0x4, + } XOFFSET; + inline void setXOffset(const uint32_t value) { + TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset = value >> XOFFSET_BIT_SHIFT; + } + inline uint32_t getXOffset(void) const { + return (TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset << XOFFSET_BIT_SHIFT); + } + inline void setYOffsetForVCr(const uint32_t value) { + TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr = value; + } + inline uint32_t getYOffsetForVCr(void) const { + return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr); + } + inline void setXOffsetForVCr(const uint32_t value) { + TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr = value; + } + inline uint32_t getXOffsetForVCr(void) const { + return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr); + } +} MEDIA_SURFACE_STATE; +STATIC_ASSERT(32 == sizeof(MEDIA_SURFACE_STATE)); + +typedef struct tagMI_MATH { + union _DW0 { + struct _BitField { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved : BITFIELD_RANGE(8, 22); + uint32_t InstructionOpcode : BITFIELD_RANGE(23, 28); + uint32_t InstructionType : BITFIELD_RANGE(29, 31); + } BitField; + uint32_t Value; + } DW0; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_MATH = 0x1A, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; +} MI_MATH; + +typedef struct tagMI_MATH_ALU_INST_INLINE { + union _DW0 { + struct _BitField { + uint32_t Operand2 : BITFIELD_RANGE(0, 9); + uint32_t Operand1 : BITFIELD_RANGE(10, 19); + uint32_t ALUOpcode : BITFIELD_RANGE(20, 31); + } BitField; + uint32_t Value; + } DW0; +} MI_MATH_ALU_INST_INLINE; + +typedef struct tagMI_SEMAPHORE_WAIT { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 7); + uint32_t Reserved_8 : BITFIELD_RANGE(8, 11); + uint32_t CompareOperation : BITFIELD_RANGE(12, 14); + uint32_t WaitMode : BITFIELD_RANGE(15, 15); + uint32_t Reserved_16 : BITFIELD_RANGE(16, 21); + uint32_t MemoryType : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint32_t SemaphoreDataDword; + uint64_t Reserved_64 : BITFIELD_RANGE(0, 1); + uint64_t SemaphoreAddress_Graphicsaddress : BITFIELD_RANGE(2, 47); + uint64_t SemaphoreAddress_Reserved : BITFIELD_RANGE(48, 63); + } Common; + uint32_t RawData[4]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x2, + } DWORD_LENGTH; + typedef enum tagCOMPARE_OPERATION { + COMPARE_OPERATION_SAD_GREATER_THAN_SDD = 0x0, + COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD = 0x1, + COMPARE_OPERATION_SAD_LESS_THAN_SDD = 0x2, + COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD = 0x3, + COMPARE_OPERATION_SAD_EQUAL_SDD = 0x4, + COMPARE_OPERATION_SAD_NOT_EQUAL_SDD = 0x5, + } COMPARE_OPERATION; + typedef enum tagWAIT_MODE { + WAIT_MODE_SIGNAL_MODE = 0x0, + WAIT_MODE_POLLING_MODE = 0x1, + } WAIT_MODE; + typedef enum tagMEMORY_TYPE { + MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS = 0x0, + MEMORY_TYPE_GLOBAL_GRAPHICS_ADDRESS = 0x1, + } MEMORY_TYPE; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT = 0x1c, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; + TheStructure.Common.CompareOperation = COMPARE_OPERATION_SAD_GREATER_THAN_SDD; + TheStructure.Common.WaitMode = WAIT_MODE_SIGNAL_MODE; + TheStructure.Common.MemoryType = MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_SEMAPHORE_WAIT sInit(void) { + MI_SEMAPHORE_WAIT state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 4); + return TheStructure.RawData[index]; + } + inline void setCompareOperation(const COMPARE_OPERATION value) { + TheStructure.Common.CompareOperation = value; + } + inline COMPARE_OPERATION getCompareOperation(void) const { + return static_cast(TheStructure.Common.CompareOperation); + } + inline void setWaitMode(const WAIT_MODE value) { + TheStructure.Common.WaitMode = value; + } + inline WAIT_MODE getWaitMode(void) const { + return static_cast(TheStructure.Common.WaitMode); + } + inline void setMemoryType(const MEMORY_TYPE value) { + TheStructure.Common.MemoryType = value; + } + inline MEMORY_TYPE getMemoryType(void) const { + return static_cast(TheStructure.Common.MemoryType); + } + inline void setSemaphoreDataDword(const uint32_t value) { + TheStructure.Common.SemaphoreDataDword = value; + } + inline uint32_t getSemaphoreDataDword(void) const { + return (TheStructure.Common.SemaphoreDataDword); + } + typedef enum tagSEMAPHOREADDRESS_GRAPHICSADDRESS { + SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT = 0x2, + SEMAPHOREADDRESS_GRAPHICSADDRESS_ALIGN_SIZE = 0x4, + } SEMAPHOREADDRESS_GRAPHICSADDRESS; + inline void setSemaphoreGraphicsAddress(const uint64_t value) { + TheStructure.Common.SemaphoreAddress_Graphicsaddress = value >> SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT; + } + inline uint64_t getSemaphoreGraphicsAddress(void) const { + return (TheStructure.Common.SemaphoreAddress_Graphicsaddress << SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT); + } + typedef enum tagSEMAPHOREADDRESS_RESERVED { + SEMAPHOREADDRESS_RESERVED_BIT_SHIFT = 0x2, + SEMAPHOREADDRESS_RESERVED_ALIGN_SIZE = 0x4, + } SEMAPHOREADDRESS_RESERVED; + inline void setSemaphoreAddressReserved(const uint64_t value) { + TheStructure.Common.SemaphoreAddress_Reserved = value >> SEMAPHOREADDRESS_RESERVED_BIT_SHIFT; + } + inline uint64_t getSemaphoreAddressReserved(void) const { + return (TheStructure.Common.SemaphoreAddress_Reserved << SEMAPHOREADDRESS_RESERVED_BIT_SHIFT); + } +} MI_SEMAPHORE_WAIT; +STATIC_ASSERT(16 == sizeof(MI_SEMAPHORE_WAIT)); + +typedef struct tagMI_STORE_DATA_IMM { + union tagTheStructure { + struct tagCommon { + uint32_t DwordLength : BITFIELD_RANGE(0, 9); + uint32_t Reserved_10 : BITFIELD_RANGE(10, 20); + uint32_t StoreQword : BITFIELD_RANGE(21, 21); + uint32_t UseGlobalGtt : BITFIELD_RANGE(22, 22); + uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); + uint32_t CommandType : BITFIELD_RANGE(29, 31); + uint64_t CoreModeEnable : BITFIELD_RANGE(0, 0); + uint64_t Reserved_33 : BITFIELD_RANGE(1, 1); + uint64_t Address_Graphicsaddress47_2 : BITFIELD_RANGE(2, 47); + uint64_t Address_Reserved : BITFIELD_RANGE(48, 63); + uint32_t DataDword0; + uint32_t DataDword1; + } Common; + uint32_t RawData[5]; + } TheStructure; + typedef enum tagDWORD_LENGTH { + DWORD_LENGTH_STORE_DWORD = 0x2, + DWORD_LENGTH_STORE_QWORD = 0x3, + } DWORD_LENGTH; + typedef enum tagMI_COMMAND_OPCODE { + MI_COMMAND_OPCODE_MI_STORE_DATA_IMM = 0x20, + } MI_COMMAND_OPCODE; + typedef enum tagCOMMAND_TYPE { + COMMAND_TYPE_MI_COMMAND = 0x0, + } COMMAND_TYPE; + inline void init(void) { + memset(&TheStructure, 0, sizeof(TheStructure)); + TheStructure.Common.DwordLength = DWORD_LENGTH_STORE_DWORD; + TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_STORE_DATA_IMM; + TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; + } + static tagMI_STORE_DATA_IMM sInit(void) { + MI_STORE_DATA_IMM state; + state.init(); + return state; + } + inline uint32_t &getRawData(const uint32_t index) { + DEBUG_BREAK_IF(index >= 5); + return TheStructure.RawData[index]; + } + inline void setDwordLength(const DWORD_LENGTH value) { + TheStructure.Common.DwordLength = value; + } + inline DWORD_LENGTH getDwordLength(void) const { + return static_cast(TheStructure.Common.DwordLength); + } + inline void setStoreQword(const bool value) { + TheStructure.Common.StoreQword = value; + } + inline bool getStoreQword(void) const { + return (TheStructure.Common.StoreQword); + } + inline void setUseGlobalGtt(const bool value) { + TheStructure.Common.UseGlobalGtt = value; + } + inline bool getUseGlobalGtt(void) const { + return (TheStructure.Common.UseGlobalGtt); + } + inline void setCoreModeEnable(const uint64_t value) { + TheStructure.Common.CoreModeEnable = value; + } + inline uint64_t getCoreModeEnable(void) const { + return (TheStructure.Common.CoreModeEnable); + } + typedef enum tagADDRESS_GRAPHICSADDRESS47_2 { + ADDRESS_GRAPHICSADDRESS47_2_BIT_SHIFT = 0x2, + ADDRESS_GRAPHICSADDRESS47_2_ALIGN_SIZE = 0x4, + } ADDRESS_GRAPHICSADDRESS47_2; + inline void setAddress(const uint64_t value) { + TheStructure.Common.Address_Graphicsaddress47_2 = value >> ADDRESS_GRAPHICSADDRESS47_2_BIT_SHIFT; + } + inline uint64_t getAddress(void) const { + return (TheStructure.Common.Address_Graphicsaddress47_2 << ADDRESS_GRAPHICSADDRESS47_2_BIT_SHIFT); + } + typedef enum tagADDRESS_RESERVED { + ADDRESS_RESERVED_BIT_SHIFT = 0x2, + ADDRESS_RESERVED_ALIGN_SIZE = 0x4, + } ADDRESS_RESERVED; + inline void setAddressReserved(const uint64_t value) { + TheStructure.Common.Address_Reserved = value >> ADDRESS_RESERVED_BIT_SHIFT; + } + inline uint64_t getAddressReserved(void) const { + return (TheStructure.Common.Address_Reserved << ADDRESS_RESERVED_BIT_SHIFT); + } + inline void setDataDword0(const uint32_t value) { + TheStructure.Common.DataDword0 = value; + } + inline uint32_t getDataDword0(void) const { + return (TheStructure.Common.DataDword0); + } + inline void setDataDword1(const uint32_t value) { + TheStructure.Common.DataDword1 = value; + } + inline uint32_t getDataDword1(void) const { + return (TheStructure.Common.DataDword1); + } +} MI_STORE_DATA_IMM; +STATIC_ASSERT(20 == sizeof(MI_STORE_DATA_IMM)); + #pragma pack() diff --git a/core/generated/gen9/hw_cmds_generated_patched.inl b/core/generated/gen9/hw_cmds_generated_patched.inl deleted file mode 100644 index 3f5dd2908b..0000000000 --- a/core/generated/gen9/hw_cmds_generated_patched.inl +++ /dev/null @@ -1,577 +0,0 @@ -/* - * Copyright (C) 2017-2019 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#pragma pack(1) -typedef struct tagMEDIA_SURFACE_STATE { - union tagTheStructure { - struct tagCommon { - uint32_t Reserved_0 : BITFIELD_RANGE(0, 29); - uint32_t Rotation : BITFIELD_RANGE(30, 31); - uint32_t Cr_VCb_UPixelOffsetVDirection : BITFIELD_RANGE(0, 1); - uint32_t PictureStructure : BITFIELD_RANGE(2, 3); - uint32_t Width : BITFIELD_RANGE(4, 17); - uint32_t Height : BITFIELD_RANGE(18, 31); - uint32_t TileMode : BITFIELD_RANGE(0, 1); - uint32_t HalfPitchForChroma : BITFIELD_RANGE(2, 2); - uint32_t SurfacePitch : BITFIELD_RANGE(3, 20); - uint32_t AddressControl : BITFIELD_RANGE(21, 21); - uint32_t MemoryCompressionEnable : BITFIELD_RANGE(22, 22); - uint32_t MemoryCompressionMode : BITFIELD_RANGE(23, 23); - uint32_t Cr_VCb_UPixelOffsetVDirectionMsb : BITFIELD_RANGE(24, 24); - uint32_t Cr_VCb_UPixelOffsetUDirection : BITFIELD_RANGE(25, 25); - uint32_t InterleaveChroma : BITFIELD_RANGE(26, 26); - uint32_t SurfaceFormat : BITFIELD_RANGE(27, 31); - uint32_t YOffsetForU_Cb : BITFIELD_RANGE(0, 13); - uint32_t Reserved_110 : BITFIELD_RANGE(14, 15); - uint32_t XOffsetForU_Cb : BITFIELD_RANGE(16, 29); - uint32_t Reserved_126 : BITFIELD_RANGE(30, 31); - uint32_t Reserved_128; - uint32_t SurfaceMemoryObjectControlState_Reserved : BITFIELD_RANGE(0, 0); - uint32_t SurfaceMemoryObjectControlState_IndexToMocsTables : BITFIELD_RANGE(1, 6); - uint32_t Reserved_167 : BITFIELD_RANGE(7, 17); - uint32_t TiledResourceMode : BITFIELD_RANGE(18, 19); - uint32_t Reserved_180 : BITFIELD_RANGE(20, 29); - uint32_t VerticalLineStrideOffset : BITFIELD_RANGE(30, 30); - uint32_t VerticalLineStride : BITFIELD_RANGE(31, 31); - uint32_t SurfaceBaseAddressLow; - uint32_t SurfaceBaseAddressHigh : BITFIELD_RANGE(0, 15); - uint32_t Reserved_240 : BITFIELD_RANGE(16, 31); - } Common; - struct tagSurfaceFormatIsNotOneOfPlanarFormats { - uint32_t Reserved_0; - uint32_t Reserved_32; - uint32_t Reserved_64; - uint32_t Reserved_96; - uint32_t Reserved_128; - uint32_t Reserved_160; - uint32_t Reserved_192; - uint32_t Reserved_224; - } SurfaceFormatIsNotOneOfPlanarFormats; - struct tagSurfaceFormatIsOneOfPlanarFormats { - uint32_t Reserved_0 : BITFIELD_RANGE(0, 15); - uint32_t YOffset : BITFIELD_RANGE(16, 19); - uint32_t XOffset : BITFIELD_RANGE(20, 26); - uint32_t Reserved_27 : BITFIELD_RANGE(27, 31); - uint32_t Reserved_32; - uint32_t Reserved_64; - uint32_t Reserved_96; - uint32_t Reserved_128; - uint32_t Reserved_160; - uint32_t Reserved_192; - uint32_t Reserved_224; - } SurfaceFormatIsOneOfPlanarFormats; - struct tag_SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0 { - uint32_t Reserved_0; - uint32_t Reserved_32; - uint32_t Reserved_64; - uint32_t Reserved_96; - uint32_t YOffsetForV_Cr : BITFIELD_RANGE(0, 14); - uint32_t Reserved_143 : BITFIELD_RANGE(15, 15); - uint32_t XOffsetForV_Cr : BITFIELD_RANGE(16, 29); - uint32_t Reserved_158 : BITFIELD_RANGE(30, 31); - uint32_t Reserved_160; - uint32_t Reserved_192; - uint32_t Reserved_224; - } _SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0; - uint32_t RawData[8]; - } TheStructure; - typedef enum tagROTATION { - ROTATION_NO_ROTATION_OR_0_DEGREE = 0x0, - ROTATION_90_DEGREE_ROTATION = 0x1, - ROTATION_180_DEGREE_ROTATION = 0x2, - ROTATION_270_DEGREE_ROTATION = 0x3, - } ROTATION; - typedef enum tagPICTURE_STRUCTURE { - PICTURE_STRUCTURE_FRAME_PICTURE = 0x0, - PICTURE_STRUCTURE_TOP_FIELD_PICTURE = 0x1, - PICTURE_STRUCTURE_BOTTOM_FIELD_PICTURE = 0x2, - PICTURE_STRUCTURE_INVALID_NOT_ALLOWED = 0x3, - } PICTURE_STRUCTURE; - typedef enum tagTILE_MODE { - TILE_MODE_TILEMODE_LINEAR = 0x0, - TILE_MODE_TILEMODE_XMAJOR = 0x2, - TILE_MODE_TILEMODE_YMAJOR = 0x3, - } TILE_MODE; - typedef enum tagADDRESS_CONTROL { - ADDRESS_CONTROL_CLAMP = 0x0, - ADDRESS_CONTROL_MIRROR = 0x1, - } ADDRESS_CONTROL; - typedef enum tagMEMORY_COMPRESSION_MODE { - MEMORY_COMPRESSION_MODE_HORIZONTAL_COMPRESSION_MODE = 0x0, - MEMORY_COMPRESSION_MODE_VERTICAL_COMPRESSION_MODE = 0x1, - } MEMORY_COMPRESSION_MODE; - typedef enum tagSURFACE_FORMAT { - SURFACE_FORMAT_YCRCB_NORMAL = 0x0, - SURFACE_FORMAT_YCRCB_SWAPUVY = 0x1, - SURFACE_FORMAT_YCRCB_SWAPUV = 0x2, - SURFACE_FORMAT_YCRCB_SWAPY = 0x3, - SURFACE_FORMAT_PLANAR_420_8 = 0x4, - SURFACE_FORMAT_Y8_UNORM_VA = 0x5, - SURFACE_FORMAT_Y16_SNORM = 0x6, - SURFACE_FORMAT_Y16_UNORM_VA = 0x7, - SURFACE_FORMAT_R10G10B10A2_UNORM = 0x8, - SURFACE_FORMAT_R8G8B8A8_UNORM = 0x9, - SURFACE_FORMAT_R8B8_UNORM_CRCB = 0xa, - SURFACE_FORMAT_R8_UNORM_CR_CB = 0xb, - SURFACE_FORMAT_Y8_UNORM = 0xc, - SURFACE_FORMAT_A8Y8U8V8_UNORM = 0xd, - SURFACE_FORMAT_B8G8R8A8_UNORM = 0xe, - SURFACE_FORMAT_R16G16B16A16 = 0xf, - SURFACE_FORMAT_Y1_UNORM = 0x10, - SURFACE_FORMAT_Y32_UNORM = 0x11, - SURFACE_FORMAT_PLANAR_422_8 = 0x12, - } SURFACE_FORMAT; - typedef enum tagSURFACE_MEMORY_OBJECT_CONTROL_STATE { - SURFACE_MEMORY_OBJECT_CONTROL_STATE_DEFAULTVAUEDESC = 0x0, - } SURFACE_MEMORY_OBJECT_CONTROL_STATE; - typedef enum tagTILED_RESOURCE_MODE { - TILED_RESOURCE_MODE_TRMODE_NONE = 0x0, - TILED_RESOURCE_MODE_TRMODE_TILEYF = 0x1, - TILED_RESOURCE_MODE_TRMODE_TILEYS = 0x2, - } TILED_RESOURCE_MODE; - typedef enum tagPATCH_CONSTANTS { - SURFACEBASEADDRESS_BYTEOFFSET = 0x18, - SURFACEBASEADDRESS_INDEX = 0x6, - SURFACEBASEADDRESSHIGH_BYTEOFFSET = 0x1c, - SURFACEBASEADDRESSHIGH_INDEX = 0x7, - } PATCH_CONSTANTS; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.Rotation = ROTATION_NO_ROTATION_OR_0_DEGREE; - TheStructure.Common.PictureStructure = PICTURE_STRUCTURE_FRAME_PICTURE; - TheStructure.Common.TileMode = TILE_MODE_TILEMODE_LINEAR; - TheStructure.Common.AddressControl = ADDRESS_CONTROL_CLAMP; - TheStructure.Common.MemoryCompressionMode = MEMORY_COMPRESSION_MODE_HORIZONTAL_COMPRESSION_MODE; - TheStructure.Common.SurfaceFormat = SURFACE_FORMAT_YCRCB_NORMAL; - TheStructure.Common.TiledResourceMode = TILED_RESOURCE_MODE_TRMODE_NONE; - } - static tagMEDIA_SURFACE_STATE sInit(void) { - MEDIA_SURFACE_STATE state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 8); - return TheStructure.RawData[index]; - } - inline void setRotation(const ROTATION value) { - TheStructure.Common.Rotation = value; - } - inline ROTATION getRotation(void) const { - return static_cast(TheStructure.Common.Rotation); - } - inline void setCrVCbUPixelOffsetVDirection(const uint32_t value) { - TheStructure.Common.Cr_VCb_UPixelOffsetVDirection = value; - } - inline uint32_t getCrVCbUPixelOffsetVDirection(void) const { - return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirection); - } - inline void setPictureStructure(const PICTURE_STRUCTURE value) { - TheStructure.Common.PictureStructure = value; - } - inline PICTURE_STRUCTURE getPictureStructure(void) const { - return static_cast(TheStructure.Common.PictureStructure); - } - inline void setWidth(const uint32_t value) { - TheStructure.Common.Width = value - 1; - } - inline uint32_t getWidth(void) const { - return (TheStructure.Common.Width + 1); - } - inline void setHeight(const uint32_t value) { - TheStructure.Common.Height = value - 1; - } - inline uint32_t getHeight(void) const { - return (TheStructure.Common.Height + 1); - } - inline void setTileMode(const TILE_MODE value) { - TheStructure.Common.TileMode = value; - } - inline TILE_MODE getTileMode(void) const { - return static_cast(TheStructure.Common.TileMode); - } - inline void setHalfPitchForChroma(const bool value) { - TheStructure.Common.HalfPitchForChroma = value; - } - inline bool getHalfPitchForChroma(void) const { - return (TheStructure.Common.HalfPitchForChroma); - } - inline void setSurfacePitch(const uint32_t value) { - TheStructure.Common.SurfacePitch = value - 1; - } - inline uint32_t getSurfacePitch(void) const { - return (TheStructure.Common.SurfacePitch + 1); - } - inline void setAddressControl(const ADDRESS_CONTROL value) { - TheStructure.Common.AddressControl = value; - } - inline ADDRESS_CONTROL getAddressControl(void) const { - return static_cast(TheStructure.Common.AddressControl); - } - inline void setMemoryCompressionEnable(const bool value) { - TheStructure.Common.MemoryCompressionEnable = value; - } - inline bool getMemoryCompressionEnable(void) const { - return (TheStructure.Common.MemoryCompressionEnable); - } - inline void setMemoryCompressionMode(const MEMORY_COMPRESSION_MODE value) { - TheStructure.Common.MemoryCompressionMode = value; - } - inline MEMORY_COMPRESSION_MODE getMemoryCompressionMode(void) const { - return static_cast(TheStructure.Common.MemoryCompressionMode); - } - inline void setCrVCbUPixelOffsetVDirectionMsb(const uint32_t value) { - TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb = value; - } - inline uint32_t getCrVCbUPixelOffsetVDirectionMsb(void) const { - return (TheStructure.Common.Cr_VCb_UPixelOffsetVDirectionMsb); - } - inline void setCrVCbUPixelOffsetUDirection(const uint32_t value) { - TheStructure.Common.Cr_VCb_UPixelOffsetUDirection = value; - } - inline uint32_t getCrVCbUPixelOffsetUDirection(void) const { - return (TheStructure.Common.Cr_VCb_UPixelOffsetUDirection); - } - inline void setInterleaveChroma(const bool value) { - TheStructure.Common.InterleaveChroma = value; - } - inline bool getInterleaveChroma(void) const { - return (TheStructure.Common.InterleaveChroma); - } - inline void setSurfaceFormat(const SURFACE_FORMAT value) { - TheStructure.Common.SurfaceFormat = value; - } - inline SURFACE_FORMAT getSurfaceFormat(void) const { - return static_cast(TheStructure.Common.SurfaceFormat); - } - inline void setYOffsetForUCb(const uint32_t value) { - TheStructure.Common.YOffsetForU_Cb = value; - } - inline uint32_t getYOffsetForUCb(void) const { - return (TheStructure.Common.YOffsetForU_Cb); - } - inline void setXOffsetForUCb(const uint32_t value) { - TheStructure.Common.XOffsetForU_Cb = value; - } - inline uint32_t getXOffsetForUCb(void) const { - return (TheStructure.Common.XOffsetForU_Cb); - } - inline void setSurfaceMemoryObjectControlStateReserved(const uint32_t value) { - TheStructure.Common.SurfaceMemoryObjectControlState_Reserved = value; - } - inline uint32_t getSurfaceMemoryObjectControlStateReserved(void) const { - return (TheStructure.Common.SurfaceMemoryObjectControlState_Reserved); - } - inline void setSurfaceMemoryObjectControlStateIndexToMocsTables(const uint32_t value) { - TheStructure.Common.SurfaceMemoryObjectControlState_IndexToMocsTables = value >> 1; - } - inline uint32_t getSurfaceMemoryObjectControlStateIndexToMocsTables(void) const { - return (TheStructure.Common.SurfaceMemoryObjectControlState_IndexToMocsTables << 1); - } - inline void setTiledResourceMode(const TILED_RESOURCE_MODE value) { - TheStructure.Common.TiledResourceMode = value; - } - inline TILED_RESOURCE_MODE getTiledResourceMode(void) const { - return static_cast(TheStructure.Common.TiledResourceMode); - } - inline void setVerticalLineStrideOffset(const uint32_t value) { - TheStructure.Common.VerticalLineStrideOffset = value; - } - inline uint32_t getVerticalLineStrideOffset(void) const { - return (TheStructure.Common.VerticalLineStrideOffset); - } - inline void setVerticalLineStride(const uint32_t value) { - TheStructure.Common.VerticalLineStride = value; - } - inline uint32_t getVerticalLineStride(void) const { - return (TheStructure.Common.VerticalLineStride); - } - inline void setSurfaceBaseAddress(const uint64_t value) { - TheStructure.Common.SurfaceBaseAddressLow = static_cast(value & 0xffffffff); - TheStructure.Common.SurfaceBaseAddressHigh = (value >> 32) & 0xffffffff; - } - inline uint64_t getSurfaceBaseAddress(void) const { - return (TheStructure.Common.SurfaceBaseAddressLow | - static_cast(TheStructure.Common.SurfaceBaseAddressHigh) << 32); - } - inline void setSurfaceBaseAddressHigh(const uint32_t value) { - TheStructure.Common.SurfaceBaseAddressHigh = value; - } - inline uint32_t getSurfaceBaseAddressHigh(void) const { - return (TheStructure.Common.SurfaceBaseAddressHigh); - } - typedef enum tagYOFFSET { - YOFFSET_BIT_SHIFT = 0x2, - YOFFSET_ALIGN_SIZE = 0x4, - } YOFFSET; - inline void setYOffset(const uint32_t value) { - TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset = value >> YOFFSET_BIT_SHIFT; - } - inline uint32_t getYOffset(void) const { - return (TheStructure.SurfaceFormatIsOneOfPlanarFormats.YOffset << YOFFSET_BIT_SHIFT); - } - typedef enum tagXOFFSET { - XOFFSET_BIT_SHIFT = 0x2, - XOFFSET_ALIGN_SIZE = 0x4, - } XOFFSET; - inline void setXOffset(const uint32_t value) { - TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset = value >> XOFFSET_BIT_SHIFT; - } - inline uint32_t getXOffset(void) const { - return (TheStructure.SurfaceFormatIsOneOfPlanarFormats.XOffset << XOFFSET_BIT_SHIFT); - } - inline void setYOffsetForVCr(const uint32_t value) { - TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr = value; - } - inline uint32_t getYOffsetForVCr(void) const { - return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.YOffsetForV_Cr); - } - inline void setXOffsetForVCr(const uint32_t value) { - TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr = value; - } - inline uint32_t getXOffsetForVCr(void) const { - return (TheStructure._SurfaceFormatIsOneOfPlanarAnd_InterleaveChromaIs0.XOffsetForV_Cr); - } -} MEDIA_SURFACE_STATE; -STATIC_ASSERT(32 == sizeof(MEDIA_SURFACE_STATE)); -typedef struct tagMI_MATH { - union _DW0 { - struct _BitField { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved : BITFIELD_RANGE(8, 22); - uint32_t InstructionOpcode : BITFIELD_RANGE(23, 28); - uint32_t InstructionType : BITFIELD_RANGE(29, 31); - } BitField; - uint32_t Value; - } DW0; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_MATH = 0x1A, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; -} MI_MATH; -typedef struct tagMI_MATH_ALU_INST_INLINE { - union _DW0 { - struct _BitField { - uint32_t Operand2 : BITFIELD_RANGE(0, 9); - uint32_t Operand1 : BITFIELD_RANGE(10, 19); - uint32_t ALUOpcode : BITFIELD_RANGE(20, 31); - } BitField; - uint32_t Value; - } DW0; -} MI_MATH_ALU_INST_INLINE; -typedef struct tagMI_SEMAPHORE_WAIT { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 7); - uint32_t Reserved_8 : BITFIELD_RANGE(8, 11); - uint32_t CompareOperation : BITFIELD_RANGE(12, 14); - uint32_t WaitMode : BITFIELD_RANGE(15, 15); - uint32_t Reserved_16 : BITFIELD_RANGE(16, 21); - uint32_t MemoryType : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint32_t SemaphoreDataDword; - uint64_t Reserved_64 : BITFIELD_RANGE(0, 1); - uint64_t SemaphoreAddress_Graphicsaddress : BITFIELD_RANGE(2, 47); - uint64_t SemaphoreAddress_Reserved : BITFIELD_RANGE(48, 63); - } Common; - uint32_t RawData[4]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_EXCLUDES_DWORD_0_1 = 0x2, - } DWORD_LENGTH; - typedef enum tagCOMPARE_OPERATION { - COMPARE_OPERATION_SAD_GREATER_THAN_SDD = 0x0, - COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD = 0x1, - COMPARE_OPERATION_SAD_LESS_THAN_SDD = 0x2, - COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD = 0x3, - COMPARE_OPERATION_SAD_EQUAL_SDD = 0x4, - COMPARE_OPERATION_SAD_NOT_EQUAL_SDD = 0x5, - } COMPARE_OPERATION; - typedef enum tagWAIT_MODE { - WAIT_MODE_SIGNAL_MODE = 0x0, - WAIT_MODE_POLLING_MODE = 0x1, - } WAIT_MODE; - typedef enum tagMEMORY_TYPE { - MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS = 0x0, - MEMORY_TYPE_GLOBAL_GRAPHICS_ADDRESS = 0x1, - } MEMORY_TYPE; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT = 0x1c, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_EXCLUDES_DWORD_0_1; - TheStructure.Common.CompareOperation = COMPARE_OPERATION_SAD_GREATER_THAN_SDD; - TheStructure.Common.WaitMode = WAIT_MODE_SIGNAL_MODE; - TheStructure.Common.MemoryType = MEMORY_TYPE_PER_PROCESS_GRAPHICS_ADDRESS; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_SEMAPHORE_WAIT; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_SEMAPHORE_WAIT sInit(void) { - MI_SEMAPHORE_WAIT state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 4); - return TheStructure.RawData[index]; - } - inline void setCompareOperation(const COMPARE_OPERATION value) { - TheStructure.Common.CompareOperation = value; - } - inline COMPARE_OPERATION getCompareOperation(void) const { - return static_cast(TheStructure.Common.CompareOperation); - } - inline void setWaitMode(const WAIT_MODE value) { - TheStructure.Common.WaitMode = value; - } - inline WAIT_MODE getWaitMode(void) const { - return static_cast(TheStructure.Common.WaitMode); - } - inline void setMemoryType(const MEMORY_TYPE value) { - TheStructure.Common.MemoryType = value; - } - inline MEMORY_TYPE getMemoryType(void) const { - return static_cast(TheStructure.Common.MemoryType); - } - inline void setSemaphoreDataDword(const uint32_t value) { - TheStructure.Common.SemaphoreDataDword = value; - } - inline uint32_t getSemaphoreDataDword(void) const { - return (TheStructure.Common.SemaphoreDataDword); - } - typedef enum tagSEMAPHOREADDRESS_GRAPHICSADDRESS { - SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT = 0x2, - SEMAPHOREADDRESS_GRAPHICSADDRESS_ALIGN_SIZE = 0x4, - } SEMAPHOREADDRESS_GRAPHICSADDRESS; - inline void setSemaphoreGraphicsAddress(const uint64_t value) { - TheStructure.Common.SemaphoreAddress_Graphicsaddress = value >> SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT; - } - inline uint64_t getSemaphoreGraphicsAddress(void) const { - return (TheStructure.Common.SemaphoreAddress_Graphicsaddress << SEMAPHOREADDRESS_GRAPHICSADDRESS_BIT_SHIFT); - } - typedef enum tagSEMAPHOREADDRESS_RESERVED { - SEMAPHOREADDRESS_RESERVED_BIT_SHIFT = 0x2, - SEMAPHOREADDRESS_RESERVED_ALIGN_SIZE = 0x4, - } SEMAPHOREADDRESS_RESERVED; - inline void setSemaphoreAddressReserved(const uint64_t value) { - TheStructure.Common.SemaphoreAddress_Reserved = value >> SEMAPHOREADDRESS_RESERVED_BIT_SHIFT; - } - inline uint64_t getSemaphoreAddressReserved(void) const { - return (TheStructure.Common.SemaphoreAddress_Reserved << SEMAPHOREADDRESS_RESERVED_BIT_SHIFT); - } -} MI_SEMAPHORE_WAIT; -STATIC_ASSERT(16 == sizeof(MI_SEMAPHORE_WAIT)); - -typedef struct tagMI_STORE_DATA_IMM { - union tagTheStructure { - struct tagCommon { - uint32_t DwordLength : BITFIELD_RANGE(0, 9); - uint32_t Reserved_10 : BITFIELD_RANGE(10, 20); - uint32_t StoreQword : BITFIELD_RANGE(21, 21); - uint32_t UseGlobalGtt : BITFIELD_RANGE(22, 22); - uint32_t MiCommandOpcode : BITFIELD_RANGE(23, 28); - uint32_t CommandType : BITFIELD_RANGE(29, 31); - uint64_t CoreModeEnable : BITFIELD_RANGE(0, 0); - uint64_t Reserved_33 : BITFIELD_RANGE(1, 1); - uint64_t Address_Graphicsaddress47_2 : BITFIELD_RANGE(2, 47); - uint64_t Address_Reserved : BITFIELD_RANGE(48, 63); - uint32_t DataDword0; - uint32_t DataDword1; - } Common; - uint32_t RawData[5]; - } TheStructure; - typedef enum tagDWORD_LENGTH { - DWORD_LENGTH_STORE_DWORD = 0x2, - DWORD_LENGTH_STORE_QWORD = 0x3, - } DWORD_LENGTH; - typedef enum tagMI_COMMAND_OPCODE { - MI_COMMAND_OPCODE_MI_STORE_DATA_IMM = 0x20, - } MI_COMMAND_OPCODE; - typedef enum tagCOMMAND_TYPE { - COMMAND_TYPE_MI_COMMAND = 0x0, - } COMMAND_TYPE; - inline void init(void) { - memset(&TheStructure, 0, sizeof(TheStructure)); - TheStructure.Common.DwordLength = DWORD_LENGTH_STORE_DWORD; - TheStructure.Common.MiCommandOpcode = MI_COMMAND_OPCODE_MI_STORE_DATA_IMM; - TheStructure.Common.CommandType = COMMAND_TYPE_MI_COMMAND; - } - static tagMI_STORE_DATA_IMM sInit(void) { - MI_STORE_DATA_IMM state; - state.init(); - return state; - } - inline uint32_t &getRawData(const uint32_t index) { - DEBUG_BREAK_IF(index >= 5); - return TheStructure.RawData[index]; - } - inline void setDwordLength(const DWORD_LENGTH value) { - TheStructure.Common.DwordLength = value; - } - inline DWORD_LENGTH getDwordLength(void) const { - return static_cast(TheStructure.Common.DwordLength); - } - inline void setStoreQword(const bool value) { - TheStructure.Common.StoreQword = value; - } - inline bool getStoreQword(void) const { - return (TheStructure.Common.StoreQword); - } - inline void setUseGlobalGtt(const bool value) { - TheStructure.Common.UseGlobalGtt = value; - } - inline bool getUseGlobalGtt(void) const { - return (TheStructure.Common.UseGlobalGtt); - } - inline void setCoreModeEnable(const uint64_t value) { - TheStructure.Common.CoreModeEnable = value; - } - inline uint64_t getCoreModeEnable(void) const { - return (TheStructure.Common.CoreModeEnable); - } - typedef enum tagADDRESS_GRAPHICSADDRESS47_2 { - ADDRESS_GRAPHICSADDRESS47_2_BIT_SHIFT = 0x2, - ADDRESS_GRAPHICSADDRESS47_2_ALIGN_SIZE = 0x4, - } ADDRESS_GRAPHICSADDRESS47_2; - inline void setAddress(const uint64_t value) { - TheStructure.Common.Address_Graphicsaddress47_2 = value >> ADDRESS_GRAPHICSADDRESS47_2_BIT_SHIFT; - } - inline uint64_t getAddress(void) const { - return (TheStructure.Common.Address_Graphicsaddress47_2 << ADDRESS_GRAPHICSADDRESS47_2_BIT_SHIFT); - } - typedef enum tagADDRESS_RESERVED { - ADDRESS_RESERVED_BIT_SHIFT = 0x2, - ADDRESS_RESERVED_ALIGN_SIZE = 0x4, - } ADDRESS_RESERVED; - inline void setAddressReserved(const uint64_t value) { - TheStructure.Common.Address_Reserved = value >> ADDRESS_RESERVED_BIT_SHIFT; - } - inline uint64_t getAddressReserved(void) const { - return (TheStructure.Common.Address_Reserved << ADDRESS_RESERVED_BIT_SHIFT); - } - inline void setDataDword0(const uint32_t value) { - TheStructure.Common.DataDword0 = value; - } - inline uint32_t getDataDword0(void) const { - return (TheStructure.Common.DataDword0); - } - inline void setDataDword1(const uint32_t value) { - TheStructure.Common.DataDword1 = value; - } - inline uint32_t getDataDword1(void) const { - return (TheStructure.Common.DataDword1); - } -} MI_STORE_DATA_IMM; -STATIC_ASSERT(20 == sizeof(MI_STORE_DATA_IMM)); -#pragma pack() diff --git a/runtime/enable_gens.cmake b/runtime/enable_gens.cmake index 936d1588e0..fd5709d909 100644 --- a/runtime/enable_gens.cmake +++ b/runtime/enable_gens.cmake @@ -83,11 +83,8 @@ macro(macro_for_each_gen) list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE ${GENX_PREFIX}/${SRC_IT}) endif() endforeach() - if(EXISTS "${GENERATED_GENX_PREFIX}/hw_cmds_generated.inl") - list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE "${GENERATED_GENX_PREFIX}/hw_cmds_generated.inl") - endif() - if(EXISTS "${GENERATED_GENX_PREFIX}/hw_cmds_generated_patched.inl") - list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE "${GENERATED_GENX_PREFIX}/hw_cmds_generated_patched.inl") + if(EXISTS "${GENERATED_GENX_PREFIX}/hw_cmds_generated_${GEN_TYPE_LOWER}.inl") + list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE "${GENERATED_GENX_PREFIX}/hw_cmds_generated_${GEN_TYPE_LOWER}.inl") endif() if(EXISTS "${GENX_PREFIX}/hw_cmds_base.h") list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE "${GENX_PREFIX}/hw_cmds_base.h")