mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Reuse common logic of programming SCM fields for gen 9 and gen 11
Logic related to programming non coherent and thread arbitration policy for gens 9 and 11 has been moved to EncodeComputeMode object, where similar logic for gens gen12lp and newer is located. Functions PreambleHelper::programThreadArbitration and PreambleHelper::getThreadArbitrationCommandsSize have been removed. Redundant setForceNonCoherent call has been removed from XE HPG Related-To: NEO-6728 Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
5d90e2ab1d
commit
cd95572443
@ -154,8 +154,7 @@ HWTEST_F(UltCommandStreamReceiverTest, givenPreambleSentAndThreadArbitrationPoli
|
||||
|
||||
auto actualDifferenceForPreamble = policyChangedPreamble - policyNotChangedPreamble;
|
||||
auto actualDifferenceForFlush = policyChangedFlush - policyNotChangedFlush;
|
||||
auto expectedDifference = PreambleHelper<FamilyType>::getThreadArbitrationCommandsSize() +
|
||||
EncodeComputeMode<FamilyType>::getCmdSizeForComputeMode(*defaultHwInfo, false, commandStreamReceiver.isRcs());
|
||||
auto expectedDifference = EncodeComputeMode<FamilyType>::getCmdSizeForComputeMode(*defaultHwInfo, false, commandStreamReceiver.isRcs());
|
||||
EXPECT_EQ(0u, actualDifferenceForPreamble);
|
||||
EXPECT_EQ(expectedDifference, actualDifferenceForFlush);
|
||||
}
|
||||
|
@ -44,7 +44,6 @@ struct Gen11CoherencyRequirements : public ::testing::Test {
|
||||
};
|
||||
|
||||
GEN11TEST_F(Gen11CoherencyRequirements, GivenSettingsWhenCoherencyRequestedThenProgrammingIsCorrect) {
|
||||
auto lriSize = sizeof(MI_LOAD_REGISTER_IMM);
|
||||
overrideCoherencyRequest(false, false);
|
||||
EXPECT_FALSE(csr->streamProperties.stateComputeMode.isDirty());
|
||||
|
||||
@ -52,14 +51,10 @@ GEN11TEST_F(Gen11CoherencyRequirements, GivenSettingsWhenCoherencyRequestedThenP
|
||||
EXPECT_FALSE(csr->streamProperties.stateComputeMode.isDirty());
|
||||
|
||||
overrideCoherencyRequest(true, true);
|
||||
auto retSize = csr->getCmdSizeForComputeMode();
|
||||
EXPECT_TRUE(csr->streamProperties.stateComputeMode.isDirty());
|
||||
EXPECT_EQ(lriSize, retSize);
|
||||
|
||||
overrideCoherencyRequest(true, false);
|
||||
retSize = csr->getCmdSizeForComputeMode();
|
||||
EXPECT_TRUE(csr->streamProperties.stateComputeMode.isDirty());
|
||||
EXPECT_EQ(lriSize, retSize);
|
||||
}
|
||||
|
||||
GEN11TEST_F(Gen11CoherencyRequirements, GivenSettingsWhenCoherencyRequestedThenHdcModeCmdValuesAreCorrect) {
|
||||
@ -73,14 +68,14 @@ GEN11TEST_F(Gen11CoherencyRequirements, GivenSettingsWhenCoherencyRequestedThenH
|
||||
|
||||
overrideCoherencyRequest(true, false);
|
||||
csr->programComputeMode(stream, flags, *defaultHwInfo);
|
||||
EXPECT_EQ(csr->getCmdSizeForComputeMode(), stream.getUsed());
|
||||
EXPECT_EQ(lriSize, stream.getUsed());
|
||||
|
||||
auto cmd = reinterpret_cast<MI_LOAD_REGISTER_IMM *>(stream.getCpuBase());
|
||||
EXPECT_TRUE(memcmp(&expectedCmd, cmd, lriSize) == 0);
|
||||
|
||||
overrideCoherencyRequest(true, true);
|
||||
csr->programComputeMode(stream, flags, *defaultHwInfo);
|
||||
EXPECT_EQ(csr->getCmdSizeForComputeMode() * 2, stream.getUsed());
|
||||
EXPECT_EQ(lriSize * 2, stream.getUsed());
|
||||
|
||||
cmd = reinterpret_cast<MI_LOAD_REGISTER_IMM *>(ptrOffset(stream.getCpuBase(), lriSize));
|
||||
expectedCmd.setDataDword(DwordBuilder::build(gen11HdcModeRegister::forceNonCoherentEnableBit, true, false));
|
||||
|
@ -22,14 +22,10 @@ GEN9TEST_F(Gen9CoherencyRequirements, WhenMemoryManagerIsInitializedThenNoCohere
|
||||
DispatchFlags flags = DispatchFlagsHelper::createDefaultDispatchFlags();
|
||||
auto &csr = deviceFactory.rootDevices[0]->getUltCommandStreamReceiver<FamilyType>();
|
||||
|
||||
auto retSize = csr.getCmdSizeForComputeMode();
|
||||
EXPECT_EQ(0u, retSize);
|
||||
csr.programComputeMode(stream, flags, *defaultHwInfo);
|
||||
EXPECT_EQ(0u, stream.getUsed());
|
||||
|
||||
flags.requiresCoherency = true;
|
||||
retSize = csr.getCmdSizeForComputeMode();
|
||||
EXPECT_EQ(0u, retSize);
|
||||
csr.programComputeMode(stream, flags, *defaultHwInfo);
|
||||
EXPECT_EQ(0u, stream.getUsed());
|
||||
}
|
||||
|
@ -23,12 +23,8 @@
|
||||
using namespace NEO;
|
||||
|
||||
using ThreadArbitrationXeHPAndLater = PreambleFixture;
|
||||
HWCMDTEST_F(IGFX_XE_HP_CORE, ThreadArbitrationXeHPAndLater, givenPolicyWhenThreadArbitrationProgrammedThenDoNothing) {
|
||||
LinearStream &cs = linearStream;
|
||||
|
||||
PreambleHelper<FamilyType>::programThreadArbitration(&cs, ThreadArbitrationPolicy::RoundRobin);
|
||||
|
||||
EXPECT_EQ(0u, cs.getUsed());
|
||||
using Platforms = IsWithinGfxCore<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>;
|
||||
HWTEST2_F(ThreadArbitrationXeHPAndLater, whenGetDefaultThreadArbitrationPolicyIsCalledThenCorrectPolicyIsReturned, Platforms) {
|
||||
EXPECT_EQ(ThreadArbitrationPolicy::AgeBased, HwHelperHw<FamilyType>::get().getDefaultThreadArbitrationPolicy());
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,6 @@
|
||||
HWTEST_EXCLUDE_PRODUCT(BufferSetSurfaceTests, givenAlignedCacheableReadOnlyBufferThenChoseOclBufferPolicy, IGFX_XE_HPC_CORE);
|
||||
HWTEST_EXCLUDE_PRODUCT(BufferSetSurfaceTests, givenBufferSetSurfaceThatMemoryIsUnalignedToCachelineButReadOnlyThenL3CacheShouldBeStillOn, IGFX_XE_HPC_CORE);
|
||||
HWTEST_EXCLUDE_PRODUCT(HwHelperTestXeHPAndLater, givenVariousCachesRequestProperMOCSIndexesAreBeingReturned, IGFX_XE_HPC_CORE);
|
||||
HWTEST_EXCLUDE_PRODUCT(ThreadArbitrationXeHPAndLater, givenPolicyWhenThreadArbitrationProgrammedThenDoNothing, IGFX_XE_HPC_CORE);
|
||||
HWTEST_EXCLUDE_PRODUCT(PipeControlHelperTestsXeHPAndLater, WhenAddingPipeControlWAThenCorrectCommandsAreProgrammed, IGFX_XE_HPC_CORE);
|
||||
HWTEST_EXCLUDE_PRODUCT(QueueFamilyNameTest, givenRcsWhenGettingQueueFamilyNameThenReturnProperValue, IGFX_XE_HPC_CORE);
|
||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenVariousValuesWhenConvertingHwRevIdAndSteppingThenConversionIsCorrect, IGFX_XE_HPC_CORE);
|
||||
|
Reference in New Issue
Block a user