refactor: move CLOS-related steps from core- to product-helper

Future HW will not support cache reservation uniquely for the whole
platform. Implementation of some functions may vary between products.

Related-To: NEO-10158
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
This commit is contained in:
Maciej Bielski
2024-08-10 12:11:45 +00:00
committed by Compute-Runtime-Automation
parent d483ee6396
commit a4060013de
16 changed files with 114 additions and 120 deletions

View File

@@ -1281,11 +1281,6 @@ TEST_F(GfxCoreHelperTest, whenFtrGpGpuMidThreadLevelPreemptFeatureDisabledThenFa
EXPECT_FALSE(result);
}
HWTEST_F(GfxCoreHelperTest, whenGettingNumberOfCacheRegionsThenReturnZero) {
auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
EXPECT_EQ(0u, gfxCoreHelper.getNumCacheRegions());
}
HWTEST_F(GfxCoreHelperTest, whenSetCompressedFlagThenProperFlagSet) {
auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
auto gmm = std::make_unique<MockGmm>(pDevice->getGmmHelper());

View File

@@ -7,6 +7,7 @@
#include "shared/source/helpers/constants.h"
#include "shared/source/os_interface/linux/cache_info.h"
#include "shared/source/os_interface/product_helper.h"
#include "shared/test/common/helpers/debug_manager_state_restore.h"
#include "shared/test/common/helpers/default_hw_info.h"
#include "shared/test/common/libult/linux/drm_query_mock.h"
@@ -21,14 +22,14 @@ TEST(DrmCacheInfoTest, givenCacheRegionsExistsWhenCallingSetUpCacheInfoThenCache
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
DrmQueryMock drm(*executionEnvironment->rootDeviceEnvironments[0]);
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<ProductHelper>();
drm.setupCacheInfo(*defaultHwInfo.get());
auto cacheInfo = drm.getCacheInfo();
EXPECT_NE(nullptr, cacheInfo);
if (gfxCoreHelper.getNumCacheRegions() == 0) {
if (productHelper.getNumCacheRegions() == 0) {
EXPECT_EQ(0u, cacheInfo->getMaxReservationCacheSize());
EXPECT_EQ(0u, cacheInfo->getMaxReservationNumCacheRegions());
EXPECT_EQ(0u, cacheInfo->getMaxReservationNumWays());
@@ -40,7 +41,7 @@ TEST(DrmCacheInfoTest, givenCacheRegionsExistsWhenCallingSetUpCacheInfoThenCache
constexpr uint16_t maxReservationNumWays = std::min(globalReservationLimit, clientReservationLimit);
const size_t totalCacheSize = gtSysInfo->L3CacheSizeInKb * MemoryConstants::kiloByte;
const size_t maxReservationCacheSize = (totalCacheSize * maxReservationNumWays) / maxNumWays;
const size_t maxReservationNumCacheRegions = gfxCoreHelper.getNumCacheRegions() - 1;
const size_t maxReservationNumCacheRegions = productHelper.getNumCacheRegions() - 1;
EXPECT_EQ(maxReservationCacheSize, cacheInfo->getMaxReservationCacheSize());
EXPECT_EQ(maxReservationNumCacheRegions, cacheInfo->getMaxReservationNumCacheRegions());

View File

@@ -4711,10 +4711,9 @@ TEST_F(DrmAllocationTests, givenDrmAllocationWhenCacheRegionIsSetSuccessfullyThe
drm.cacheInfo.reset(new MockCacheInfo(*drm.getIoctlHelper(), 32 * MemoryConstants::kiloByte, 2, 32));
MockDrmAllocation allocation(rootDeviceIndex, AllocationType::buffer, MemoryPool::localMemory);
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<ProductHelper>();
if ((gfxCoreHelper.getNumCacheRegions() == 0) &&
if ((productHelper.getNumCacheRegions() == 0) &&
productHelper.isVmBindPatIndexProgrammingSupported()) {
EXPECT_ANY_THROW(allocation.setCacheAdvice(&drm, 1024, CacheRegion::region1, false));
} else {
@@ -4732,10 +4731,9 @@ TEST_F(DrmAllocationTests, givenDrmAllocationWhenCacheRegionIsSetSuccessfullyThe
MockDrmAllocation allocation(rootDeviceIndex, AllocationType::buffer, MemoryPool::localMemory);
allocation.bufferObjects[0] = &bo;
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<ProductHelper>();
if ((gfxCoreHelper.getNumCacheRegions() == 0) &&
if ((productHelper.getNumCacheRegions() == 0) &&
productHelper.isVmBindPatIndexProgrammingSupported()) {
EXPECT_ANY_THROW(allocation.setCacheAdvice(&drm, 1024, CacheRegion::region1, false));
} else {
@@ -4877,8 +4875,8 @@ TEST_F(DrmAllocationTests, givenCachedTypeWhenForceOverridePatIndexForCachedType
TEST_F(DrmMemoryManagerTest, givenDrmAllocationWithHostPtrWhenItIsCreatedWithCacheRegionThenSetRegionInBufferObject) {
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->getHelper<GfxCoreHelper>();
if (gfxCoreHelper.getNumCacheRegions() == 0) {
auto &productHelper = executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->getHelper<ProductHelper>();
if (productHelper.getNumCacheRegions() == 0) {
GTEST_SKIP();
}
mock->ioctlExpected.total = -1;

View File

@@ -1089,10 +1089,9 @@ HWTEST_F(DrmMemoryOperationsHandlerBindTest, givenPatIndexProgrammingEnabledWhen
auto osContext = memoryManager->createAndRegisterOsContext(csr.get(), EngineDescriptorHelper::getDefaultDescriptor());
csr->setupContext(*osContext);
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<ProductHelper>();
bool closSupported = (gfxCoreHelper.getNumCacheRegions() > 0);
bool closSupported = (productHelper.getNumCacheRegions() > 0);
bool patIndexProgrammingSupported = productHelper.isVmBindPatIndexProgrammingSupported();
uint64_t gpuAddress = 0x123000;
@@ -1148,9 +1147,8 @@ HWTEST_F(DrmMemoryOperationsHandlerBindTest, givenPatIndexErrorAndUncachedDebugF
auto csr = std::make_unique<UltCommandStreamReceiver<FamilyType>>(*executionEnvironment, 0, DeviceBitfield(1));
auto osContext = memoryManager->createAndRegisterOsContext(csr.get(), EngineDescriptorHelper::getDefaultDescriptor());
csr->setupContext(*osContext);
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<ProductHelper>();
bool closSupported = (gfxCoreHelper.getNumCacheRegions() > 0);
bool closSupported = (productHelper.getNumCacheRegions() > 0);
bool patIndexProgrammingSupported = productHelper.isVmBindPatIndexProgrammingSupported();
if (!closSupported || !patIndexProgrammingSupported) {
GTEST_SKIP();
@@ -1209,9 +1207,9 @@ HWTEST_F(DrmMemoryOperationsHandlerBindTest, givenDebugFlagSetWhenVmBindCalledTh
auto timestampStorageAlloc = csr->getTimestampPacketAllocator()->getTag()->getBaseGraphicsAllocation()->getDefaultGraphicsAllocation();
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<ProductHelper>();
if (gfxCoreHelper.getNumCacheRegions() == 0) {
if (productHelper.getNumCacheRegions() == 0) {
GTEST_SKIP();
}
@@ -1297,9 +1295,9 @@ TEST_F(DrmMemoryOperationsHandlerBindTest, givenClosEnabledAndAllocationToBeCach
mock->cacheInfo.reset(new CacheInfo(*mock->getIoctlHelper(), 64 * MemoryConstants::kiloByte, 2, 32));
auto &gfxCoreHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getHelper<ProductHelper>();
if (gfxCoreHelper.getNumCacheRegions() == 0) {
if (productHelper.getNumCacheRegions() == 0) {
GTEST_SKIP();
}
@@ -1311,7 +1309,7 @@ TEST_F(DrmMemoryOperationsHandlerBindTest, givenClosEnabledAndAllocationToBeCach
mock->context.receivedVmBindPatIndex.reset();
operationHandler->makeResident(device, ArrayRef<GraphicsAllocation *>(&allocation, 1));
auto patIndex = gfxCoreHelper.getPatIndex(cacheRegion, CachePolicy::writeBack);
auto patIndex = productHelper.getPatIndex(cacheRegion, CachePolicy::writeBack);
EXPECT_EQ(patIndex, mock->context.receivedVmBindPatIndex.value());
@@ -1413,26 +1411,26 @@ using DrmResidencyHandlerTests = ::testing::Test;
HWTEST2_F(DrmResidencyHandlerTests, givenClosIndexAndMemoryTypeWhenAskingForPatIndexThenReturnCorrectValue, IsWithinXeGfxFamily) {
MockExecutionEnvironment mockExecutionEnvironment{};
auto &gfxCoreHelper = mockExecutionEnvironment.rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = mockExecutionEnvironment.rootDeviceEnvironments[0]->getHelper<ProductHelper>();
if (gfxCoreHelper.getNumCacheRegions() == 0) {
EXPECT_ANY_THROW(gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::uncached));
EXPECT_ANY_THROW(gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeBack));
if (productHelper.getNumCacheRegions() == 0) {
EXPECT_ANY_THROW(productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::uncached));
EXPECT_ANY_THROW(productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeBack));
} else {
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::uncached));
EXPECT_EQ(1u, gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeCombined));
EXPECT_EQ(2u, gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeThrough));
EXPECT_EQ(3u, gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeBack));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::uncached));
EXPECT_EQ(1u, productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeCombined));
EXPECT_EQ(2u, productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeThrough));
EXPECT_EQ(3u, productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeBack));
EXPECT_ANY_THROW(gfxCoreHelper.getPatIndex(CacheRegion::region1, CachePolicy::uncached));
EXPECT_ANY_THROW(gfxCoreHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeCombined));
EXPECT_EQ(4u, gfxCoreHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeThrough));
EXPECT_EQ(5u, gfxCoreHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeBack));
EXPECT_ANY_THROW(productHelper.getPatIndex(CacheRegion::region1, CachePolicy::uncached));
EXPECT_ANY_THROW(productHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeCombined));
EXPECT_EQ(4u, productHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeThrough));
EXPECT_EQ(5u, productHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeBack));
EXPECT_ANY_THROW(gfxCoreHelper.getPatIndex(CacheRegion::region2, CachePolicy::uncached));
EXPECT_ANY_THROW(gfxCoreHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeCombined));
EXPECT_EQ(6u, gfxCoreHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeThrough));
EXPECT_EQ(7u, gfxCoreHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeBack));
EXPECT_ANY_THROW(productHelper.getPatIndex(CacheRegion::region2, CachePolicy::uncached));
EXPECT_ANY_THROW(productHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeCombined));
EXPECT_EQ(6u, productHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeThrough));
EXPECT_EQ(7u, productHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeBack));
}
}
@@ -1441,26 +1439,26 @@ HWTEST2_F(DrmResidencyHandlerTests, givenForceAllResourcesUnchashedSetAskingForP
debugManager.flags.ForceAllResourcesUncached.set(1);
MockExecutionEnvironment mockExecutionEnvironment{};
auto &gfxCoreHelper = mockExecutionEnvironment.rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
auto &productHelper = mockExecutionEnvironment.rootDeviceEnvironments[0]->getHelper<ProductHelper>();
if (gfxCoreHelper.getNumCacheRegions() == 0) {
EXPECT_ANY_THROW(gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::uncached));
EXPECT_ANY_THROW(gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeBack));
if (productHelper.getNumCacheRegions() == 0) {
EXPECT_ANY_THROW(productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::uncached));
EXPECT_ANY_THROW(productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeBack));
} else {
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::uncached));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeCombined));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeThrough));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeBack));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::uncached));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeCombined));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeThrough));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::defaultRegion, CachePolicy::writeBack));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::region1, CachePolicy::uncached));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeCombined));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeThrough));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeBack));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::region1, CachePolicy::uncached));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeCombined));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeThrough));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::region1, CachePolicy::writeBack));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::region2, CachePolicy::uncached));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeCombined));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeThrough));
EXPECT_EQ(0u, gfxCoreHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeBack));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::region2, CachePolicy::uncached));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeCombined));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeThrough));
EXPECT_EQ(0u, productHelper.getPatIndex(CacheRegion::region2, CachePolicy::writeBack));
}
}

View File

@@ -611,6 +611,10 @@ HWTEST_F(ProductHelperTest, givenSamplerStateWhenAdjustSamplerStateThenNothingIs
EXPECT_EQ(0, memcmp(&initialState, &state, sizeof(SAMPLER_STATE)));
}
HWTEST_F(ProductHelperTest, whenGettingNumberOfCacheRegionsThenReturnZero) {
EXPECT_EQ(0u, productHelper->getNumCacheRegions());
}
HWTEST2_F(ProductHelperTest, WhenFillingScmPropertiesSupportThenExpectUseCorrectGetters, IsAtLeastGen12lp) {
StateComputeModePropertiesSupport scmPropertiesSupport = {};

View File

@@ -12,7 +12,7 @@ HWTEST_EXCLUDE_PRODUCT(CommandEncodeStatesTest, givenOverrideSlmTotalSizeDebugVa
HWTEST_EXCLUDE_PRODUCT(WalkerPartitionTests, givenMiAtomicWhenItIsProgrammedThenAllFieldsAreSetCorrectly, IGFX_XE_HPC_CORE);
HWTEST_EXCLUDE_PRODUCT(WalkerPartitionTests, givenProgramBatchBufferStartCommandWhenItIsCalledThenCommandIsProgrammedCorrectly, IGFX_XE_HPC_CORE);
HWTEST_EXCLUDE_PRODUCT(GfxCoreHelperTest, givenDefaultGfxCoreHelperHwWhenMinimalSIMDSizeIsQueriedThen8IsReturned, IGFX_XE_HPC_CORE);
HWTEST_EXCLUDE_PRODUCT(GfxCoreHelperTest, whenGettingNumberOfCacheRegionsThenReturnZero, IGFX_XE_HPC_CORE);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, whenGettingNumberOfCacheRegionsThenReturnZero, IGFX_XE_HPC_CORE);
HWTEST_EXCLUDE_PRODUCT(PipeControlHelperTests, givenGfxCoreHelperwhenAskingForDcFlushThenReturnTrue, IGFX_XE_HPC_CORE);
HWTEST_EXCLUDE_PRODUCT(XeHPAndLaterPreemptionTests, GivenDebuggerUsedWhenProgrammingStateSipThenStateSipIsAdded, IGFX_XE_HPC_CORE);
HWTEST_EXCLUDE_PRODUCT(ComputeModeRequirements, givenComputeModeProgrammingWhenLargeGrfModeDoesntChangeThenSCMIsNotAdded, IGFX_XE_HPC_CORE);