feature: Update INTERFACE_DESCRIPTOR_DATA for Xe3

Related-To: NEO-13771, HSD-18041256338, HSD-14013056398

Signed-off-by: Vysochyn, Illia <illia.vysochyn@intel.com>
This commit is contained in:
Vysochyn, Illia
2025-02-17 23:14:56 +00:00
committed by Compute-Runtime-Automation
parent 79cee3405d
commit e59f61b02e

View File

@@ -5237,11 +5237,10 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
// DWORD 1 // DWORD 1
uint64_t Reserved_32 : BITFIELD_RANGE(32, 63); uint64_t Reserved_32 : BITFIELD_RANGE(32, 63);
// DWORD 2 // DWORD 2
uint32_t Reserved_64 : BITFIELD_RANGE(0, 6); uint32_t EuThreadSchedulingModeOverride : BITFIELD_RANGE(0, 1);
uint32_t Reserved_66 : BITFIELD_RANGE(2, 6);
uint32_t SoftwareExceptionEnable : BITFIELD_RANGE(7, 7); uint32_t SoftwareExceptionEnable : BITFIELD_RANGE(7, 7);
uint32_t Reserved_72 : BITFIELD_RANGE(8, 10); uint32_t Reserved_72 : BITFIELD_RANGE(8, 12);
uint32_t MaskStackExceptionEnable : BITFIELD_RANGE(11, 11);
uint32_t Reserved_76 : BITFIELD_RANGE(12, 12);
uint32_t IllegalOpcodeExceptionEnable : BITFIELD_RANGE(13, 13); uint32_t IllegalOpcodeExceptionEnable : BITFIELD_RANGE(13, 13);
uint32_t Reserved_78 : BITFIELD_RANGE(14, 15); uint32_t Reserved_78 : BITFIELD_RANGE(14, 15);
uint32_t FloatingPointMode : BITFIELD_RANGE(16, 16); uint32_t FloatingPointMode : BITFIELD_RANGE(16, 16);
@@ -5273,13 +5272,25 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
uint32_t NumberOfBarriers : BITFIELD_RANGE(28, 30); uint32_t NumberOfBarriers : BITFIELD_RANGE(28, 30);
uint32_t BtdMode : BITFIELD_RANGE(31, 31); uint32_t BtdMode : BITFIELD_RANGE(31, 31);
// DWORD 6 // DWORD 6
uint32_t Reserved_192; uint32_t Reserved_192 : BITFIELD_RANGE(0, 7);
uint32_t ZPassAsyncComputeThreadLimit : BITFIELD_RANGE(8, 10);
uint32_t Reserved_203 : BITFIELD_RANGE(11, 11);
uint32_t NpZAsyncThrottleSettings : BITFIELD_RANGE(12, 13);
uint32_t Reserved_206 : BITFIELD_RANGE(14, 15);
uint32_t PsAsyncThreadLimit : BITFIELD_RANGE(16, 18);
uint32_t Reserved_211 : BITFIELD_RANGE(19, 31);
// DWORD 7 // DWORD 7
uint32_t PreferredSlmAllocationSize : BITFIELD_RANGE(0, 3); uint32_t PreferredSlmAllocationSize : BITFIELD_RANGE(0, 3);
uint32_t Reserved_228 : BITFIELD_RANGE(4, 31); uint32_t Reserved_228 : BITFIELD_RANGE(4, 31);
} Common; } Common;
uint32_t RawData[8]; uint32_t RawData[8];
} TheStructure; } TheStructure;
typedef enum tagEU_THREAD_SCHEDULING_MODE_OVERRIDE {
EU_THREAD_SCHEDULING_MODE_OVERRIDE_HW_DEFAULT = 0x0,
EU_THREAD_SCHEDULING_MODE_OVERRIDE_OLDEST_FIRST = 0x1,
EU_THREAD_SCHEDULING_MODE_OVERRIDE_ROUND_ROBIN = 0x2,
EU_THREAD_SCHEDULING_MODE_OVERRIDE_STALL_BASED_ROUND_ROBIN = 0x3,
} EU_THREAD_SCHEDULING_MODE_OVERRIDE;
typedef enum tagFLOATING_POINT_MODE { typedef enum tagFLOATING_POINT_MODE {
FLOATING_POINT_MODE_IEEE_754 = 0x0, FLOATING_POINT_MODE_IEEE_754 = 0x0,
FLOATING_POINT_MODE_ALTERNATE = 0x1, FLOATING_POINT_MODE_ALTERNATE = 0x1,
@@ -5292,6 +5303,16 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
DENORM_MODE_FTZ = 0x0, DENORM_MODE_FTZ = 0x0,
DENORM_MODE_SETBYKERNEL = 0x1, DENORM_MODE_SETBYKERNEL = 0x1,
} DENORM_MODE; } DENORM_MODE;
typedef enum tagREGISTERS_PER_THREAD {
REGISTERS_PER_THREAD_REGISTERS_32 = 0x0,
REGISTERS_PER_THREAD_REGISTERS_64 = 0x1,
REGISTERS_PER_THREAD_REGISTERS_96 = 0x2,
REGISTERS_PER_THREAD_REGISTERS_128 = 0x3,
REGISTERS_PER_THREAD_REGISTERS_160 = 0x4,
REGISTERS_PER_THREAD_REGISTERS_192 = 0x5,
REGISTERS_PER_THREAD_REGISTERS_256 = 0x7,
REGISTERS_PER_THREAD_REGISTERS_512 = 0xf, // patched
} REGISTERS_PER_THREAD;
typedef enum tagSAMPLER_COUNT { typedef enum tagSAMPLER_COUNT {
SAMPLER_COUNT_NO_SAMPLERS_USED = 0x0, SAMPLER_COUNT_NO_SAMPLERS_USED = 0x0,
SAMPLER_COUNT_BETWEEN_1_AND_4_SAMPLERS_USED = 0x1, SAMPLER_COUNT_BETWEEN_1_AND_4_SAMPLERS_USED = 0x1,
@@ -5327,16 +5348,6 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
ROUNDING_MODE_RD = 0x2, ROUNDING_MODE_RD = 0x2,
ROUNDING_MODE_RTZ = 0x3, ROUNDING_MODE_RTZ = 0x3,
} ROUNDING_MODE; } ROUNDING_MODE;
typedef enum tagREGISTERS_PER_THREAD {
REGISTERS_PER_THREAD_REGISTERS_32 = 0x0,
REGISTERS_PER_THREAD_REGISTERS_64 = 0x1,
REGISTERS_PER_THREAD_REGISTERS_96 = 0x2,
REGISTERS_PER_THREAD_REGISTERS_128 = 0x3,
REGISTERS_PER_THREAD_REGISTERS_160 = 0x4,
REGISTERS_PER_THREAD_REGISTERS_192 = 0x5,
REGISTERS_PER_THREAD_REGISTERS_256 = 0x7,
REGISTERS_PER_THREAD_REGISTERS_512 = 0xf, // patched
} REGISTERS_PER_THREAD;
typedef enum tagTHREAD_GROUP_DISPATCH_SIZE { typedef enum tagTHREAD_GROUP_DISPATCH_SIZE {
THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_8 = 0x0, THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_8 = 0x0,
THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_4 = 0x1, THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_4 = 0x1,
@@ -5357,6 +5368,31 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
BTD_MODE_DISABLE = 0x0, BTD_MODE_DISABLE = 0x0,
BTD_MODE_ENABLE = 0x1, BTD_MODE_ENABLE = 0x1,
} BTD_MODE; } BTD_MODE;
typedef enum tagZ_PASS_ASYNC_COMPUTE_THREAD_LIMIT {
Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_60 = 0x0,
Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_64 = 0x1,
Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_56 = 0x2,
Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_48 = 0x3,
Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_40 = 0x4,
Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_32 = 0x5,
Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_24 = 0x6,
Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_16 = 0x7,
} Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT;
typedef enum tagNP_Z_ASYNC_THROTTLE_SETTINGS {
NP_Z_ASYNC_THROTTLE_SETTINGS_MAX_32 = 0x1,
NP_Z_ASYNC_THROTTLE_SETTINGS_MAX_40 = 0x2,
NP_Z_ASYNC_THROTTLE_SETTINGS_MAX_48 = 0x3,
} NP_Z_ASYNC_THROTTLE_SETTINGS;
typedef enum tagPS_ASYNC_THREAD_LIMIT {
PS_ASYNC_THREAD_LIMIT_DISABLED = 0x0,
PS_ASYNC_THREAD_LIMIT_MAX_2 = 0x1,
PS_ASYNC_THREAD_LIMIT_MAX_8 = 0x2,
PS_ASYNC_THREAD_LIMIT_MAX_16 = 0x3,
PS_ASYNC_THREAD_LIMIT_MAX_24 = 0x4,
PS_ASYNC_THREAD_LIMIT_MAX_32 = 0x5,
PS_ASYNC_THREAD_LIMIT_MAX_40 = 0x6,
PS_ASYNC_THREAD_LIMIT_MAX_48 = 0x7,
} PS_ASYNC_THREAD_LIMIT;
typedef enum tagPREFERRED_SLM_ALLOCATION_SIZE { typedef enum tagPREFERRED_SLM_ALLOCATION_SIZE {
PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_0K = 0x0, PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_0K = 0x0,
PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_16K = 0x1, PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_16K = 0x1,
@@ -5372,17 +5408,20 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
} PREFERRED_SLM_ALLOCATION_SIZE; } PREFERRED_SLM_ALLOCATION_SIZE;
inline void init() { inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure)); memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.EuThreadSchedulingModeOverride = EU_THREAD_SCHEDULING_MODE_OVERRIDE_HW_DEFAULT;
TheStructure.Common.FloatingPointMode = FLOATING_POINT_MODE_IEEE_754; TheStructure.Common.FloatingPointMode = FLOATING_POINT_MODE_IEEE_754;
TheStructure.Common.SingleProgramFlow = SINGLE_PROGRAM_FLOW_MULTIPLE; TheStructure.Common.SingleProgramFlow = SINGLE_PROGRAM_FLOW_MULTIPLE;
TheStructure.Common.DenormMode = DENORM_MODE_FTZ; TheStructure.Common.DenormMode = DENORM_MODE_FTZ;
TheStructure.Common.RegistersPerThread = REGISTERS_PER_THREAD_REGISTERS_128;
TheStructure.Common.SamplerCount = SAMPLER_COUNT_NO_SAMPLERS_USED; TheStructure.Common.SamplerCount = SAMPLER_COUNT_NO_SAMPLERS_USED;
TheStructure.Common.BindingTableEntryCount = BINDING_TABLE_ENTRY_COUNT_PREFETCH_DISABLED; TheStructure.Common.BindingTableEntryCount = BINDING_TABLE_ENTRY_COUNT_PREFETCH_DISABLED;
TheStructure.Common.SharedLocalMemorySize = SHARED_LOCAL_MEMORY_SIZE_SLM_ENCODES_0K; TheStructure.Common.SharedLocalMemorySize = SHARED_LOCAL_MEMORY_SIZE_SLM_ENCODES_0K;
TheStructure.Common.RoundingMode = ROUNDING_MODE_RTNE; TheStructure.Common.RoundingMode = ROUNDING_MODE_RTNE;
TheStructure.Common.RegistersPerThread = REGISTERS_PER_THREAD_REGISTERS_128;
TheStructure.Common.ThreadGroupDispatchSize = THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_8; TheStructure.Common.ThreadGroupDispatchSize = THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_8;
TheStructure.Common.NumberOfBarriers = NUMBER_OF_BARRIERS_NONE; TheStructure.Common.NumberOfBarriers = NUMBER_OF_BARRIERS_NONE;
TheStructure.Common.BtdMode = BTD_MODE_DISABLE; TheStructure.Common.BtdMode = BTD_MODE_DISABLE;
TheStructure.Common.ZPassAsyncComputeThreadLimit = Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT_MAX_60;
TheStructure.Common.PsAsyncThreadLimit = PS_ASYNC_THREAD_LIMIT_DISABLED;
TheStructure.Common.PreferredSlmAllocationSize = PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_0K; TheStructure.Common.PreferredSlmAllocationSize = PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_0K;
} }
static tagINTERFACE_DESCRIPTOR_DATA sInit() { static tagINTERFACE_DESCRIPTOR_DATA sInit() {
@@ -5399,29 +5438,24 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
KERNELSTARTPOINTER_ALIGN_SIZE = 0x40, KERNELSTARTPOINTER_ALIGN_SIZE = 0x40,
} KERNELSTARTPOINTER; } KERNELSTARTPOINTER;
inline void setKernelStartPointer(const uint64_t value) { inline void setKernelStartPointer(const uint64_t value) {
UNRECOVERABLE_IF(value > 0xffffffff);
TheStructure.Common.KernelStartPointer = static_cast<uint32_t>(value) >> KERNELSTARTPOINTER_BIT_SHIFT; TheStructure.Common.KernelStartPointer = static_cast<uint32_t>(value) >> KERNELSTARTPOINTER_BIT_SHIFT;
} }
inline uint64_t getKernelStartPointer() const { inline uint64_t getKernelStartPointer() const {
return static_cast<uint64_t>(TheStructure.Common.KernelStartPointer) << KERNELSTARTPOINTER_BIT_SHIFT; // patched return static_cast<uint64_t>(TheStructure.Common.KernelStartPointer) << KERNELSTARTPOINTER_BIT_SHIFT; // patched
} }
inline void setEuThreadSchedulingModeOverride(const EU_THREAD_SCHEDULING_MODE_OVERRIDE value) {
TheStructure.Common.EuThreadSchedulingModeOverride = value;
}
inline EU_THREAD_SCHEDULING_MODE_OVERRIDE getEuThreadSchedulingModeOverride() const {
return static_cast<EU_THREAD_SCHEDULING_MODE_OVERRIDE>(TheStructure.Common.EuThreadSchedulingModeOverride);
}
inline void setSoftwareExceptionEnable(const bool value) { inline void setSoftwareExceptionEnable(const bool value) {
TheStructure.Common.SoftwareExceptionEnable = value; TheStructure.Common.SoftwareExceptionEnable = value;
} }
inline bool getSoftwareExceptionEnable() const { inline bool getSoftwareExceptionEnable() const {
return TheStructure.Common.SoftwareExceptionEnable; return TheStructure.Common.SoftwareExceptionEnable;
} }
inline void setRegistersPerThread(const REGISTERS_PER_THREAD value) { // patched
TheStructure.Common.RegistersPerThread = value;
}
inline REGISTERS_PER_THREAD getRegistersPerThread() const { // patched
return static_cast<REGISTERS_PER_THREAD>(TheStructure.Common.RegistersPerThread);
}
inline void setMaskStackExceptionEnable(const bool value) {
TheStructure.Common.MaskStackExceptionEnable = value;
}
inline bool getMaskStackExceptionEnable() const {
return TheStructure.Common.MaskStackExceptionEnable;
}
inline void setIllegalOpcodeExceptionEnable(const bool value) { inline void setIllegalOpcodeExceptionEnable(const bool value) {
TheStructure.Common.IllegalOpcodeExceptionEnable = value; TheStructure.Common.IllegalOpcodeExceptionEnable = value;
} }
@@ -5452,6 +5486,12 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
inline bool getThreadPreemption() const { inline bool getThreadPreemption() const {
return TheStructure.Common.ThreadPreemption; return TheStructure.Common.ThreadPreemption;
} }
inline void setRegistersPerThread(const REGISTERS_PER_THREAD value) {
TheStructure.Common.RegistersPerThread = value;
}
inline REGISTERS_PER_THREAD getRegistersPerThread() const {
return static_cast<REGISTERS_PER_THREAD>(TheStructure.Common.RegistersPerThread);
}
inline void setSamplerCount(const SAMPLER_COUNT value) { inline void setSamplerCount(const SAMPLER_COUNT value) {
TheStructure.Common.SamplerCount = value; TheStructure.Common.SamplerCount = value;
} }
@@ -5468,10 +5508,10 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
inline uint32_t getSamplerStatePointer() const { inline uint32_t getSamplerStatePointer() const {
return TheStructure.Common.SamplerStatePointer << SAMPLERSTATEPOINTER_BIT_SHIFT; return TheStructure.Common.SamplerStatePointer << SAMPLERSTATEPOINTER_BIT_SHIFT;
} }
inline void setBindingTableEntryCount(const uint32_t value) { inline void setBindingTableEntryCount(const uint32_t value) { // patched
TheStructure.Common.BindingTableEntryCount = value; TheStructure.Common.BindingTableEntryCount = value;
} }
inline uint32_t getBindingTableEntryCount() const { inline uint32_t getBindingTableEntryCount() const { // patched
return TheStructure.Common.BindingTableEntryCount; return TheStructure.Common.BindingTableEntryCount;
} }
typedef enum tagBINDINGTABLEPOINTER { typedef enum tagBINDINGTABLEPOINTER {
@@ -5479,6 +5519,7 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
BINDINGTABLEPOINTER_ALIGN_SIZE = 0x20, BINDINGTABLEPOINTER_ALIGN_SIZE = 0x20,
} BINDINGTABLEPOINTER; } BINDINGTABLEPOINTER;
inline void setBindingTablePointer(const uint32_t value) { inline void setBindingTablePointer(const uint32_t value) {
UNRECOVERABLE_IF(value > 0x1fffff);
TheStructure.Common.BindingTablePointer = static_cast<uint32_t>(value) >> BINDINGTABLEPOINTER_BIT_SHIFT; TheStructure.Common.BindingTablePointer = static_cast<uint32_t>(value) >> BINDINGTABLEPOINTER_BIT_SHIFT;
} }
inline uint32_t getBindingTablePointer() const { inline uint32_t getBindingTablePointer() const {
@@ -5527,6 +5568,24 @@ typedef struct tagINTERFACE_DESCRIPTOR_DATA {
inline BTD_MODE getBtdMode() const { inline BTD_MODE getBtdMode() const {
return static_cast<BTD_MODE>(TheStructure.Common.BtdMode); return static_cast<BTD_MODE>(TheStructure.Common.BtdMode);
} }
inline void setZPassAsyncComputeThreadLimit(const Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT value) {
TheStructure.Common.ZPassAsyncComputeThreadLimit = value;
}
inline Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT getZPassAsyncComputeThreadLimit() const {
return static_cast<Z_PASS_ASYNC_COMPUTE_THREAD_LIMIT>(TheStructure.Common.ZPassAsyncComputeThreadLimit);
}
inline void setNpZAsyncThrottleSettings(const NP_Z_ASYNC_THROTTLE_SETTINGS value) {
TheStructure.Common.NpZAsyncThrottleSettings = value;
}
inline NP_Z_ASYNC_THROTTLE_SETTINGS getNpZAsyncThrottleSettings() const {
return static_cast<NP_Z_ASYNC_THROTTLE_SETTINGS>(TheStructure.Common.NpZAsyncThrottleSettings);
}
inline void setPsAsyncThreadLimit(const PS_ASYNC_THREAD_LIMIT value) {
TheStructure.Common.PsAsyncThreadLimit = value;
}
inline PS_ASYNC_THREAD_LIMIT getPsAsyncThreadLimit() const {
return static_cast<PS_ASYNC_THREAD_LIMIT>(TheStructure.Common.PsAsyncThreadLimit);
}
inline void setPreferredSlmAllocationSize(const PREFERRED_SLM_ALLOCATION_SIZE value) { inline void setPreferredSlmAllocationSize(const PREFERRED_SLM_ALLOCATION_SIZE value) {
TheStructure.Common.PreferredSlmAllocationSize = value; TheStructure.Common.PreferredSlmAllocationSize = value;
} }