mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
refactor: extract methods to setup SCM state per context
per context properties are now set explicitly Related-To: NEO-12803, NEO-13632 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
f762516900
commit
165c294590
@@ -293,62 +293,87 @@ TEST(StreamPropertiesTests, givenOtherPipelineSelectPropertiesStructWhenSetPrope
|
||||
verifySettingPropertiesFromOtherStruct<PipelineSelectProperties, getAllPipelineSelectProperties>();
|
||||
}
|
||||
|
||||
TEST(StreamPropertiesTests, givenCoherencyStateAndDevicePreemptionComputeModePropertiesWhenSettingPropertyAndCheckIfSupportedThenExpectCorrectState) {
|
||||
TEST(StreamPropertiesTests, givenVariousDevicePreemptionComputeModesWhenSettingPropertyPerContextAndCheckIfSupportedThenExpectCorrectState) {
|
||||
bool clearDirtyState = false;
|
||||
MockStateComputeModeProperties scmProperties{};
|
||||
scmProperties.propertiesSupportLoaded = true;
|
||||
scmProperties.scmPropertiesSupport.coherencyRequired = false;
|
||||
scmProperties.scmPropertiesSupport.devicePreemptionMode = false;
|
||||
|
||||
bool coherencyRequired = false;
|
||||
PreemptionMode devicePreemptionMode = PreemptionMode::Disabled;
|
||||
scmProperties.setPropertiesCoherencyDevicePreemption(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(-1, scmProperties.isCoherencyRequired.value);
|
||||
EXPECT_EQ(-1, scmProperties.devicePreemptionMode.value);
|
||||
|
||||
scmProperties.scmPropertiesSupport.coherencyRequired = true;
|
||||
scmProperties.scmPropertiesSupport.devicePreemptionMode = true;
|
||||
scmProperties.setPropertiesCoherencyDevicePreemption(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_TRUE(scmProperties.isDirty());
|
||||
EXPECT_EQ(0, scmProperties.isCoherencyRequired.value);
|
||||
EXPECT_EQ(static_cast<int32_t>(devicePreemptionMode), scmProperties.devicePreemptionMode.value);
|
||||
|
||||
devicePreemptionMode = PreemptionMode::Initial;
|
||||
scmProperties.setPropertiesAll(coherencyRequired, -1, -1, devicePreemptionMode);
|
||||
EXPECT_TRUE(scmProperties.isDirty());
|
||||
EXPECT_EQ(0, scmProperties.isCoherencyRequired.value);
|
||||
EXPECT_EQ(static_cast<int32_t>(devicePreemptionMode), scmProperties.devicePreemptionMode.value);
|
||||
|
||||
scmProperties.setPropertiesCoherencyDevicePreemption(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(0, scmProperties.isCoherencyRequired.value);
|
||||
EXPECT_EQ(static_cast<int32_t>(devicePreemptionMode), scmProperties.devicePreemptionMode.value);
|
||||
|
||||
scmProperties.setPropertiesCoherencyDevicePreemption(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(0, scmProperties.isCoherencyRequired.value);
|
||||
EXPECT_EQ(static_cast<int32_t>(devicePreemptionMode), scmProperties.devicePreemptionMode.value);
|
||||
|
||||
coherencyRequired = true;
|
||||
devicePreemptionMode = PreemptionMode::MidThread;
|
||||
scmProperties.setPropertiesCoherencyDevicePreemption(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_TRUE(scmProperties.isDirty());
|
||||
EXPECT_EQ(1, scmProperties.isCoherencyRequired.value);
|
||||
EXPECT_EQ(static_cast<int32_t>(devicePreemptionMode), scmProperties.devicePreemptionMode.value);
|
||||
|
||||
scmProperties.setPropertiesCoherencyDevicePreemption(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(1, scmProperties.isCoherencyRequired.value);
|
||||
EXPECT_EQ(static_cast<int32_t>(devicePreemptionMode), scmProperties.devicePreemptionMode.value);
|
||||
|
||||
clearDirtyState = true;
|
||||
coherencyRequired = false;
|
||||
devicePreemptionMode = PreemptionMode::ThreadGroup;
|
||||
scmProperties.setPropertiesCoherencyDevicePreemption(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(static_cast<int32_t>(devicePreemptionMode), scmProperties.devicePreemptionMode.value);
|
||||
}
|
||||
|
||||
TEST(StreamPropertiesTests, givenVariousCoherencyRequirementsWhenSettingPropertyPerContextAndCheckIfSupportedThenExpectCorrectState) {
|
||||
bool clearDirtyState = false;
|
||||
MockStateComputeModeProperties scmProperties{};
|
||||
scmProperties.propertiesSupportLoaded = true;
|
||||
scmProperties.scmPropertiesSupport.coherencyRequired = false;
|
||||
|
||||
bool coherencyRequired = false;
|
||||
PreemptionMode devicePreemptionMode = PreemptionMode::Disabled;
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(-1, scmProperties.isCoherencyRequired.value);
|
||||
|
||||
scmProperties.scmPropertiesSupport.coherencyRequired = true;
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_TRUE(scmProperties.isDirty());
|
||||
EXPECT_EQ(0, scmProperties.isCoherencyRequired.value);
|
||||
|
||||
scmProperties.setPropertiesAll(coherencyRequired, -1, -1, devicePreemptionMode);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(0, scmProperties.isCoherencyRequired.value);
|
||||
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(0, scmProperties.isCoherencyRequired.value);
|
||||
|
||||
coherencyRequired = true;
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_TRUE(scmProperties.isDirty());
|
||||
EXPECT_EQ(1, scmProperties.isCoherencyRequired.value);
|
||||
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(1, scmProperties.isCoherencyRequired.value);
|
||||
|
||||
clearDirtyState = true;
|
||||
coherencyRequired = false;
|
||||
scmProperties.setPropertiesPerContext(coherencyRequired, devicePreemptionMode, clearDirtyState);
|
||||
EXPECT_FALSE(scmProperties.isDirty());
|
||||
EXPECT_EQ(0, scmProperties.isCoherencyRequired.value);
|
||||
EXPECT_EQ(static_cast<int32_t>(devicePreemptionMode), scmProperties.devicePreemptionMode.value);
|
||||
}
|
||||
|
||||
TEST(StreamPropertiesTests, givenGrfNumberAndThreadArbitrationStateComputeModePropertiesWhenSettingPropertyAndCheckIfSupportedThenExpectCorrectState) {
|
||||
|
||||
Reference in New Issue
Block a user