diff --git a/level_zero/core/source/device/device.h b/level_zero/core/source/device/device.h index 1bfd5d73b6..85f34362fa 100644 --- a/level_zero/core/source/device/device.h +++ b/level_zero/core/source/device/device.h @@ -25,6 +25,7 @@ class GfxCoreHelper; class MemoryManager; class SourceLevelDebugger; struct DeviceInfo; +class CompilerProductHelper; } // namespace NEO namespace L0 { @@ -94,6 +95,8 @@ struct Device : _ze_device_handle_t { virtual const NEO::GfxCoreHelper &getGfxCoreHelper() = 0; virtual const L0GfxCoreHelper &getL0GfxCoreHelper() = 0; virtual const NEO::ProductHelper &getProductHelper() = 0; + virtual const NEO::CompilerProductHelper &getCompilerProductHelper() = 0; + bool isImplicitScalingCapable() const { return implicitScalingCapable; } diff --git a/level_zero/core/source/device/device_imp.cpp b/level_zero/core/source/device/device_imp.cpp index 8428e3da5e..5121cf24c3 100644 --- a/level_zero/core/source/device/device_imp.cpp +++ b/level_zero/core/source/device/device_imp.cpp @@ -1057,6 +1057,10 @@ const NEO::ProductHelper &DeviceImp::getProductHelper() { return this->neoDevice->getProductHelper(); } +const NEO::CompilerProductHelper &DeviceImp::getCompilerProductHelper() { + return this->neoDevice->getCompilerProductHelper(); +} + NEO::OSInterface &DeviceImp::getOsInterface() { return *neoDevice->getRootDeviceEnvironment().osInterface; } uint32_t DeviceImp::getPlatformInfo() const { diff --git a/level_zero/core/source/device/device_imp.h b/level_zero/core/source/device/device_imp.h index a33f5a29f4..8aab55ca7d 100644 --- a/level_zero/core/source/device/device_imp.h +++ b/level_zero/core/source/device/device_imp.h @@ -74,6 +74,7 @@ struct DeviceImp : public Device { const NEO::GfxCoreHelper &getGfxCoreHelper() override; const L0GfxCoreHelper &getL0GfxCoreHelper() override; const NEO::ProductHelper &getProductHelper() override; + const NEO::CompilerProductHelper &getCompilerProductHelper() override; const NEO::HardwareInfo &getHwInfo() const override; NEO::OSInterface &getOsInterface() override; uint32_t getPlatformInfo() const override; diff --git a/level_zero/core/test/unit_tests/fixtures/device_fixture.cpp b/level_zero/core/test/unit_tests/fixtures/device_fixture.cpp index 68be034823..318dc2adea 100644 --- a/level_zero/core/test/unit_tests/fixtures/device_fixture.cpp +++ b/level_zero/core/test/unit_tests/fixtures/device_fixture.cpp @@ -8,6 +8,7 @@ #include "level_zero/core/test/unit_tests/fixtures/device_fixture.h" #include "shared/source/built_ins/sip.h" +#include "shared/source/helpers/compiler_hw_info_config.h" #include "shared/source/os_interface/device_factory.h" #include "shared/test/common/mocks/mock_cpu_page_fault_manager.h" #include "shared/test/common/mocks/mock_memory_manager.h" @@ -60,6 +61,7 @@ HelperType &DeviceFixture::getHelper() const { template L0GfxCoreHelper &DeviceFixture::getHelper() const; template NEO::ProductHelper &DeviceFixture::getHelper() const; +template NEO::CompilerProductHelper &DeviceFixture::getHelper() const; void PageFaultDeviceFixture::setUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); diff --git a/level_zero/core/test/unit_tests/mocks/mock_device.h b/level_zero/core/test/unit_tests/mocks/mock_device.h index 61ccd9c1e7..aa7f261b37 100644 --- a/level_zero/core/test/unit_tests/mocks/mock_device.h +++ b/level_zero/core/test/unit_tests/mocks/mock_device.h @@ -60,6 +60,7 @@ struct Mock : public Device { ADDMETHOD_NOBASE_REFRETURN(getGfxCoreHelper, NEO::GfxCoreHelper &, ()); ADDMETHOD_NOBASE_REFRETURN(getL0GfxCoreHelper, L0GfxCoreHelper &, ()); ADDMETHOD_NOBASE_REFRETURN(getProductHelper, NEO::ProductHelper &, ()); + ADDMETHOD_NOBASE_REFRETURN(getCompilerProductHelper, NEO::CompilerProductHelper &, ()); ADDMETHOD_NOBASE(getBuiltinFunctionsLib, BuiltinFunctionsLib *, nullptr, ()); ADDMETHOD_CONST_NOBASE(getMaxNumHwThreads, uint32_t, 16u, ()); ADDMETHOD_NOBASE(activateMetricGroupsDeferred, ze_result_t, ZE_RESULT_SUCCESS, (uint32_t count, zet_metric_group_handle_t *phMetricGroups)); diff --git a/level_zero/core/test/unit_tests/sources/module/test_module.cpp b/level_zero/core/test/unit_tests/sources/module/test_module.cpp index ae68b23ef2..7aee0db553 100644 --- a/level_zero/core/test/unit_tests/sources/module/test_module.cpp +++ b/level_zero/core/test/unit_tests/sources/module/test_module.cpp @@ -2264,9 +2264,9 @@ HWTEST_F(ModuleTranslationUnitTest, WhenCreatingFromNativeBinaryThenSetsUpRequir ZebinTestData::ValidEmptyProgram emptyProgram; auto copyHwInfo = device->getNEODevice()->getHardwareInfo(); - auto compilerProductHelper = NEO::CompilerProductHelper::get(copyHwInfo.platform.eProductFamily); + auto &compilerProductHelper = device->getCompilerProductHelper(); - compilerProductHelper->adjustHwInfoForIgc(copyHwInfo); + compilerProductHelper.adjustHwInfoForIgc(copyHwInfo); emptyProgram.elfHeader->machine = copyHwInfo.platform.eProductFamily; L0::ModuleTranslationUnit moduleTuValid(this->device); @@ -2317,9 +2317,9 @@ HWTEST_F(ModuleTranslationUnitTest, WhenCreatingFromZebinThenAppendAllowZebinFla ZebinTestData::ValidEmptyProgram zebin; auto copyHwInfo = device->getNEODevice()->getHardwareInfo(); - auto compilerProductHelper = NEO::CompilerProductHelper::get(copyHwInfo.platform.eProductFamily); + auto &compilerProductHelper = device->getCompilerProductHelper(); - compilerProductHelper->adjustHwInfoForIgc(copyHwInfo); + compilerProductHelper.adjustHwInfoForIgc(copyHwInfo); zebin.elfHeader->machine = copyHwInfo.platform.eProductFamily; L0::ModuleTranslationUnit moduleTu(this->device); @@ -3638,9 +3638,9 @@ HWTEST_F(ModuleWithZebinTest, givenZebinWithKernelCallingExternalFunctionThenUpd ZebinTestData::ZebinWithExternalFunctionsInfo zebin; auto copyHwInfo = device->getHwInfo(); - auto compilerProductHelper = NEO::CompilerProductHelper::get(copyHwInfo.platform.eProductFamily); + auto &compilerProductHelper = device->getCompilerProductHelper(); - compilerProductHelper->adjustHwInfoForIgc(copyHwInfo); + compilerProductHelper.adjustHwInfoForIgc(copyHwInfo); zebin.setProductFamily(static_cast(copyHwInfo.platform.eProductFamily)); diff --git a/opencl/test/unit_test/program/program_tests.cpp b/opencl/test/unit_test/program/program_tests.cpp index 4e1ec484dc..7c55d497e6 100644 --- a/opencl/test/unit_test/program/program_tests.cpp +++ b/opencl/test/unit_test/program/program_tests.cpp @@ -1981,9 +1981,11 @@ TEST_F(ProgramTests, whenCreatingFromZebinThenAppendAllowZebinFlagToBuildOptions ZebinTestData::ValidEmptyProgram zebin; auto copyHwInfo = *defaultHwInfo; - auto compilerProductHelper = CompilerProductHelper::get(copyHwInfo.platform.eProductFamily); + MockExecutionEnvironment mockExecutionEnvironment{}; - compilerProductHelper->adjustHwInfoForIgc(copyHwInfo); + auto &compilerProductHelper = mockExecutionEnvironment.rootDeviceEnvironments[0]->getHelper(); + + compilerProductHelper.adjustHwInfoForIgc(copyHwInfo); zebin.elfHeader->machine = copyHwInfo.platform.eProductFamily; diff --git a/shared/source/compiler_interface/compiler_interface.cpp b/shared/source/compiler_interface/compiler_interface.cpp index 6c36fc6b85..69f2d48913 100644 --- a/shared/source/compiler_interface/compiler_interface.cpp +++ b/shared/source/compiler_interface/compiler_interface.cpp @@ -452,7 +452,8 @@ IGC::IgcOclDeviceCtxTagOCL *CompilerInterface::getIgcDeviceCtx(const Device &dev populateIgcPlatform(*igcPlatform, *hwInfo); IGC::GtSysInfoHelper::PopulateInterfaceWith(*igcGtSystemInfo, hwInfo->gtSystemInfo); - igcFtrWa->SetFtrGpGpuMidThreadLevelPreempt(CompilerProductHelper::get(hwInfo->platform.eProductFamily)->isMidThreadPreemptionSupported(*hwInfo)); + auto &compilerProductHelper = device.getCompilerProductHelper(); + igcFtrWa->SetFtrGpGpuMidThreadLevelPreempt(compilerProductHelper.isMidThreadPreemptionSupported(*hwInfo)); igcFtrWa->SetFtrWddm2Svm(device.getHardwareInfo().featureTable.flags.ftrWddm2Svm); igcFtrWa->SetFtrPooledEuEnabled(device.getHardwareInfo().featureTable.flags.ftrPooledEuEnabled); diff --git a/shared/source/device/device.cpp b/shared/source/device/device.cpp index b7cab64358..5df3983052 100644 --- a/shared/source/device/device.cpp +++ b/shared/source/device/device.cpp @@ -829,6 +829,10 @@ const ProductHelper &Device::getProductHelper() const { return getRootDeviceEnvironment().getHelper(); } +const CompilerProductHelper &Device::getCompilerProductHelper() const { + return getRootDeviceEnvironment().getHelper(); +} + void Device::allocateRTDispatchGlobals(uint32_t maxBvhLevels) { UNRECOVERABLE_IF(rtDispatchGlobalsInfos.size() < maxBvhLevels + 1); UNRECOVERABLE_IF(rtDispatchGlobalsInfos[maxBvhLevels] != nullptr); diff --git a/shared/source/device/device.h b/shared/source/device/device.h index bf3567e00d..8b0aba56be 100644 --- a/shared/source/device/device.h +++ b/shared/source/device/device.h @@ -31,6 +31,7 @@ class SubDevice; struct PhysicalDevicePciBusInfo; class GfxCoreHelper; class ProductHelper; +class CompilerProductHelper; struct SelectorCopyEngine : NonCopyableOrMovableClass { std::atomic isMainUsed = false; @@ -153,6 +154,7 @@ class Device : public ReferenceTrackedObject { void getAdapterMask(uint32_t &nodeMask); const GfxCoreHelper &getGfxCoreHelper() const; const ProductHelper &getProductHelper() const; + const CompilerProductHelper &getCompilerProductHelper() const; uint32_t getNumberOfRegularContextsPerEngine() const { return numberOfRegularContextsPerEngine; } std::atomic debugExecutionCounter = 0; diff --git a/shared/source/device_binary_format/device_binary_formats.cpp b/shared/source/device_binary_format/device_binary_formats.cpp index 2064b801d8..f700f7be40 100644 --- a/shared/source/device_binary_format/device_binary_formats.cpp +++ b/shared/source/device_binary_format/device_binary_formats.cpp @@ -26,8 +26,8 @@ TargetDevice getTargetDevice(const RootDeviceEnvironment &rootDeviceEnvironment) auto hwInfo = *rootDeviceEnvironment.getHardwareInfo(); auto &productHelper = rootDeviceEnvironment.getHelper(); auto &gfxCoreHelper = rootDeviceEnvironment.getHelper(); - auto compilerProductHelper = CompilerProductHelper::get(hwInfo.platform.eProductFamily); - compilerProductHelper->adjustHwInfoForIgc(hwInfo); + auto &compilerProductHelper = rootDeviceEnvironment.getHelper(); + compilerProductHelper.adjustHwInfoForIgc(hwInfo); TargetDevice targetDevice = {}; targetDevice.coreFamily = hwInfo.platform.eRenderCoreFamily; diff --git a/shared/source/os_interface/device_factory.cpp b/shared/source/os_interface/device_factory.cpp index dc1f493893..1af2178072 100644 --- a/shared/source/os_interface/device_factory.cpp +++ b/shared/source/os_interface/device_factory.cpp @@ -69,7 +69,7 @@ bool DeviceFactory::prepareDeviceEnvironmentsForProductFamilyOverride(ExecutionE productHelper.configureHardwareCustom(hardwareInfo, nullptr); if (productConfigFound) { - const auto &compilerProductHelper = *CompilerProductHelper::get(hardwareInfo->platform.eProductFamily); + const auto &compilerProductHelper = rootDeviceEnvironment.getHelper(); compilerProductHelper.setProductConfigForHwInfo(*hardwareInfo, aotInfo.aotConfig); hardwareInfo->platform.usDeviceID = aotInfo.deviceIds->front(); } diff --git a/shared/source/os_interface/linux/hw_info_config_drm.cpp b/shared/source/os_interface/linux/hw_info_config_drm.cpp index f8ba5597b0..3f9ee24c60 100644 --- a/shared/source/os_interface/linux/hw_info_config_drm.cpp +++ b/shared/source/os_interface/linux/hw_info_config_drm.cpp @@ -150,9 +150,9 @@ int ProductHelper::configureHwInfoDrm(const HardwareInfo *inHwInfo, HardwareInfo drm->checkNonPersistentContextsSupport(); drm->checkPreemptionSupport(); bool preemption = drm->isPreemptionSupported(); - auto compilerProductHelper = CompilerProductHelper::get(outHwInfo->platform.eProductFamily); + auto &compilerProductHelper = rootDeviceEnvironment.getHelper(); PreemptionHelper::adjustDefaultPreemptionMode(outHwInfo->capabilityTable, - compilerProductHelper->isMidThreadPreemptionSupported(*outHwInfo) && preemption, + compilerProductHelper.isMidThreadPreemptionSupported(*outHwInfo) && preemption, static_cast(outHwInfo->featureTable.flags.ftrGpGpuThreadGroupLevelPreempt) && preemption, static_cast(outHwInfo->featureTable.flags.ftrGpGpuMidBatchPreempt) && preemption); diff --git a/shared/source/os_interface/windows/hw_info_config_wddm.cpp b/shared/source/os_interface/windows/hw_info_config_wddm.cpp index 52f3876a31..8830df08c5 100644 --- a/shared/source/os_interface/windows/hw_info_config_wddm.cpp +++ b/shared/source/os_interface/windows/hw_info_config_wddm.cpp @@ -21,7 +21,7 @@ namespace NEO { int ProductHelper::configureHwInfoWddm(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, const RootDeviceEnvironment &rootDeviceEnvironment) { auto &gfxCoreHelper = rootDeviceEnvironment.getHelper(); auto &productHelper = rootDeviceEnvironment.getHelper(); - auto compilerProductHelper = CompilerProductHelper::get(outHwInfo->platform.eProductFamily); + auto &compilerProductHelper = rootDeviceEnvironment.getHelper(); outHwInfo->capabilityTable.ftrSvm = outHwInfo->featureTable.flags.ftrSVM; gfxCoreHelper.adjustDefaultEngineType(outHwInfo); @@ -31,7 +31,7 @@ int ProductHelper::configureHwInfoWddm(const HardwareInfo *inHwInfo, HardwareInf outHwInfo->capabilityTable.ftrSupportsCoherency &= inHwInfo->featureTable.flags.ftrL3IACoherency; PreemptionHelper::adjustDefaultPreemptionMode(outHwInfo->capabilityTable, - compilerProductHelper->isMidThreadPreemptionSupported(*outHwInfo), + compilerProductHelper.isMidThreadPreemptionSupported(*outHwInfo), static_cast(outHwInfo->featureTable.flags.ftrGpGpuThreadGroupLevelPreempt), static_cast(outHwInfo->featureTable.flags.ftrGpGpuMidBatchPreempt)); diff --git a/shared/test/unit_test/device_binary_format/zebin_decoder_tests.cpp b/shared/test/unit_test/device_binary_format/zebin_decoder_tests.cpp index d6464aa0fe..fb2faaf86d 100644 --- a/shared/test/unit_test/device_binary_format/zebin_decoder_tests.cpp +++ b/shared/test/unit_test/device_binary_format/zebin_decoder_tests.cpp @@ -69,8 +69,8 @@ TEST(ZebinValidateTargetTest, givenTargetDeviceCreatedUsingHelperFunctionWhenVal MockExecutionEnvironment executionEnvironment; auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[0]; auto hwInfo = *rootDeviceEnvironment.getHardwareInfo(); - auto compilerProductHelper = CompilerProductHelper::get(hwInfo.platform.eProductFamily); - compilerProductHelper->adjustHwInfoForIgc(hwInfo); + auto &compilerProductHelper = rootDeviceEnvironment.getHelper(); + compilerProductHelper.adjustHwInfoForIgc(hwInfo); auto targetDevice = getTargetDevice(rootDeviceEnvironment); diff --git a/shared/test/unit_test/helpers/compiler_hw_info_config_tests.cpp b/shared/test/unit_test/helpers/compiler_hw_info_config_tests.cpp index f8990386eb..f5d788fa8e 100644 --- a/shared/test/unit_test/helpers/compiler_hw_info_config_tests.cpp +++ b/shared/test/unit_test/helpers/compiler_hw_info_config_tests.cpp @@ -19,18 +19,18 @@ using CompilerProductHelperFixture = Test; HWTEST_F(CompilerProductHelperFixture, WhenIsMidThreadPreemptionIsSupportedIsCalledThenCorrectResultIsReturned) { auto &hwInfo = *pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); UnitTestHelper::setExtraMidThreadPreemptionFlag(hwInfo, false); - auto compilerProductHelper = CompilerProductHelper::get(hwInfo.platform.eProductFamily); - EXPECT_FALSE(compilerProductHelper->isMidThreadPreemptionSupported(hwInfo)); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); + EXPECT_FALSE(compilerProductHelper.isMidThreadPreemptionSupported(hwInfo)); UnitTestHelper::setExtraMidThreadPreemptionFlag(hwInfo, true); - EXPECT_TRUE(compilerProductHelper->isMidThreadPreemptionSupported(hwInfo)); + EXPECT_TRUE(compilerProductHelper.isMidThreadPreemptionSupported(hwInfo)); } HWTEST_F(CompilerProductHelperFixture, WhenAdjustHwInfoForIgcIsCalledThenHwInfoNotChanged) { auto &hwInfo = *pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); auto adjustedHwInfo = hwInfo; - auto compilerProductHelper = CompilerProductHelper::get(hwInfo.platform.eProductFamily); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); - compilerProductHelper->adjustHwInfoForIgc(adjustedHwInfo); + compilerProductHelper.adjustHwInfoForIgc(adjustedHwInfo); EXPECT_EQ(hwInfo.platform.eProductFamily, adjustedHwInfo.platform.eProductFamily); } @@ -46,7 +46,7 @@ using IsAtLeastXeHpc = IsAtLeastGfxCore; HWTEST2_F(CompilerProductHelperFixture, GivenXeHpcAndLaterWhenIsForceToStatelessRequiredThenCorrectResultIsReturned, IsAtLeastXeHpc) { DebugManagerStateRestore restorer; - auto &compilerProductHelper = *CompilerProductHelper::get(productFamily); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); EXPECT_TRUE(compilerProductHelper.isForceToStatelessRequired()); DebugManager.flags.DisableForceToStateless.set(false); @@ -62,32 +62,33 @@ HWTEST2_F(CompilerProductHelperFixture, givenAotConfigWhenSetHwInfoRevisionIdThe auto productConfig = productHelper.getProductConfigFromHwInfo(*defaultHwInfo); HardwareIpVersion aotConfig = {0}; aotConfig.value = productConfig; - CompilerProductHelper::get(hwInfo.platform.eProductFamily)->setProductConfigForHwInfo(hwInfo, aotConfig); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); + compilerProductHelper.setProductConfigForHwInfo(hwInfo, aotConfig); EXPECT_EQ(hwInfo.platform.usRevId, aotConfig.revision); EXPECT_EQ(hwInfo.ipVersion.value, aotConfig.value); } HWTEST2_F(CompilerProductHelperFixture, givenAtMostXeHPWhenGetCachingPolicyOptionsThenReturnNullptr, IsAtMostXeHpCore) { - auto compilerProductHelper = CompilerProductHelper::get(defaultHwInfo->platform.eProductFamily); - EXPECT_EQ(compilerProductHelper->getCachingPolicyOptions(false), nullptr); - EXPECT_EQ(compilerProductHelper->getCachingPolicyOptions(true), nullptr); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); + EXPECT_EQ(compilerProductHelper.getCachingPolicyOptions(false), nullptr); + EXPECT_EQ(compilerProductHelper.getCachingPolicyOptions(true), nullptr); } HWTEST2_F(CompilerProductHelperFixture, givenAtLeastXeHpgCoreWhenGetCachingPolicyOptionsThenReturnWriteByPassPolicyOption, IsAtLeastXeHpgCore) { - auto compilerProductHelper = CompilerProductHelper::get(defaultHwInfo->platform.eProductFamily); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); const char *expectedStr = "-cl-store-cache-default=2 -cl-load-cache-default=4"; - EXPECT_EQ(0, memcmp(compilerProductHelper->getCachingPolicyOptions(false), expectedStr, strlen(expectedStr))); - EXPECT_EQ(0, memcmp(compilerProductHelper->getCachingPolicyOptions(true), expectedStr, strlen(expectedStr))); + EXPECT_EQ(0, memcmp(compilerProductHelper.getCachingPolicyOptions(false), expectedStr, strlen(expectedStr))); + EXPECT_EQ(0, memcmp(compilerProductHelper.getCachingPolicyOptions(true), expectedStr, strlen(expectedStr))); } HWTEST2_F(CompilerProductHelperFixture, givenAtLeastXeHpgCoreWhenGetCachingPolicyOptionsThenReturnWriteBackPolicyOption, IsAtLeastXeHpgCore) { DebugManagerStateRestore restorer; DebugManager.flags.OverrideL1CachePolicyInSurfaceStateAndStateless.set(2); - auto compilerProductHelper = CompilerProductHelper::get(defaultHwInfo->platform.eProductFamily); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); const char *expectedStr = "-cl-store-cache-default=7 -cl-load-cache-default=4"; - EXPECT_EQ(0, memcmp(compilerProductHelper->getCachingPolicyOptions(false), expectedStr, strlen(expectedStr))); - EXPECT_EQ(0, memcmp(compilerProductHelper->getCachingPolicyOptions(true), expectedStr, strlen(expectedStr))); + EXPECT_EQ(0, memcmp(compilerProductHelper.getCachingPolicyOptions(false), expectedStr, strlen(expectedStr))); + EXPECT_EQ(0, memcmp(compilerProductHelper.getCachingPolicyOptions(true), expectedStr, strlen(expectedStr))); } HWTEST2_F(CompilerProductHelperFixture, givenAtLeastXeHpgCoreAndDebugFlagSetForceAllResourcesUncachedWhenGetCachingPolicyOptionsThenReturnUncachedPolicyOption, IsAtLeastXeHpgCore) { @@ -95,17 +96,17 @@ HWTEST2_F(CompilerProductHelperFixture, givenAtLeastXeHpgCoreAndDebugFlagSetForc DebugManager.flags.OverrideL1CachePolicyInSurfaceStateAndStateless.set(2); DebugManager.flags.ForceAllResourcesUncached.set(true); - auto compilerProductHelper = CompilerProductHelper::get(defaultHwInfo->platform.eProductFamily); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); const char *expectedStr = "-cl-store-cache-default=1 -cl-load-cache-default=1"; - EXPECT_EQ(0, memcmp(compilerProductHelper->getCachingPolicyOptions(false), expectedStr, strlen(expectedStr))); - EXPECT_EQ(0, memcmp(compilerProductHelper->getCachingPolicyOptions(true), expectedStr, strlen(expectedStr))); + EXPECT_EQ(0, memcmp(compilerProductHelper.getCachingPolicyOptions(false), expectedStr, strlen(expectedStr))); + EXPECT_EQ(0, memcmp(compilerProductHelper.getCachingPolicyOptions(true), expectedStr, strlen(expectedStr))); } HWTEST2_F(CompilerProductHelperFixture, givenCachePolicyWithoutCorrespondingBuildOptionWhenGetCachingPolicyOptionsThenReturnNullptr, IsAtLeastXeHpgCore) { DebugManagerStateRestore restorer; DebugManager.flags.OverrideL1CachePolicyInSurfaceStateAndStateless.set(5); + auto &compilerProductHelper = pDevice->getCompilerProductHelper(); - auto compilerProductHelper = CompilerProductHelper::get(defaultHwInfo->platform.eProductFamily); - EXPECT_EQ(nullptr, compilerProductHelper->getCachingPolicyOptions(false)); - EXPECT_EQ(nullptr, compilerProductHelper->getCachingPolicyOptions(true)); + EXPECT_EQ(nullptr, compilerProductHelper.getCachingPolicyOptions(false)); + EXPECT_EQ(nullptr, compilerProductHelper.getCachingPolicyOptions(true)); }