feature: Add missing pipelined EU thread arbitration on Xe3

Related-To: NEO-13682

Signed-off-by: Vysochyn, Illia <illia.vysochyn@intel.com>
This commit is contained in:
Vysochyn, Illia
2025-01-14 19:34:35 +00:00
committed by Compute-Runtime-Automation
parent f25193c44d
commit ca72dff1ab
10 changed files with 68 additions and 5 deletions

View File

@@ -21,6 +21,7 @@ struct StateComputeModePropertiesSupport {
bool devicePreemptionMode = false;
bool allocationForScratchAndMidthreadPreemption = false;
bool enableVariableRegisterSizeAllocation = false;
bool pipelinedEuThreadArbitration = false;
};
struct StateComputeModeProperties {
@@ -42,6 +43,8 @@ struct StateComputeModeProperties {
void copyPropertiesAll(const StateComputeModeProperties &properties);
void copyPropertiesGrfNumberThreadArbitration(const StateComputeModeProperties &properties);
void setPipelinedEuThreadArbitration();
bool isPipelinedEuThreadArbitrationEnabled() const;
bool isDirty() const;
void clearIsDirty();
@@ -64,6 +67,7 @@ struct StateComputeModeProperties {
StateComputeModePropertiesSupport scmPropertiesSupport = {};
int32_t defaultThreadArbitrationPolicy = 0;
bool propertiesSupportLoaded = false;
bool pipelinedEuThreadArbitration = false;
};
struct FrontEndPropertiesSupport {

View File

@@ -179,6 +179,10 @@ void StateComputeModeProperties::setPropertiesPerContext(bool requiresCoherency,
this->enableVariableRegisterSizeAllocation.set(this->scmPropertiesSupport.enableVariableRegisterSizeAllocation);
}
if (this->scmPropertiesSupport.pipelinedEuThreadArbitration) {
setPipelinedEuThreadArbitration();
}
setPropertiesExtraPerContext();
if (clearDirtyState) {
clearIsDirtyPerContext();
@@ -534,3 +538,11 @@ void StateBaseAddressProperties::clearIsDirty() {
dynamicStateBaseAddress.isDirty = false;
indirectObjectBaseAddress.isDirty = false;
}
void StateComputeModeProperties::setPipelinedEuThreadArbitration() {
this->pipelinedEuThreadArbitration = true;
}
bool StateComputeModeProperties::isPipelinedEuThreadArbitrationEnabled() const {
return pipelinedEuThreadArbitration;
}