From f94ed7cd28809e80272618faf6ed27791d366a2e Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Wed, 13 Sep 2023 08:37:04 +0000 Subject: [PATCH] refactor: pass root device environment to CacheSettingsHelper::preferNoCpuAccess Signed-off-by: Mateusz Jablonski --- shared/source/gmm_helper/cache_settings_helper.cpp | 7 ++++--- shared/source/gmm_helper/cache_settings_helper.h | 3 ++- shared/source/gmm_helper/gmm.cpp | 3 +-- .../mock_execution_environment_gmm_fixture.h | 5 ++--- .../test/common/mocks/mock_execution_environment.h | 1 + shared/test/unit_test/gmm_helper/gmm_tests.cpp | 13 ++++++------- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/shared/source/gmm_helper/cache_settings_helper.cpp b/shared/source/gmm_helper/cache_settings_helper.cpp index 2bfe609634..e3e3e14ad1 100644 --- a/shared/source/gmm_helper/cache_settings_helper.cpp +++ b/shared/source/gmm_helper/cache_settings_helper.cpp @@ -8,6 +8,7 @@ #include "shared/source/gmm_helper/cache_settings_helper.h" #include "shared/source/debug_settings/debug_settings_manager.h" +#include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/helpers/gfx_core_helper.h" #include "shared/source/helpers/hw_info.h" #include "shared/source/memory_manager/allocation_type.h" @@ -29,14 +30,14 @@ GMM_RESOURCE_USAGE_TYPE_ENUM CacheSettingsHelper::getGmmUsageType(AllocationType } } -bool CacheSettingsHelper::preferNoCpuAccess(GMM_RESOURCE_USAGE_TYPE_ENUM gmmResourceUsageType, const ProductHelper &productHelper, bool isWsl) { +bool CacheSettingsHelper::preferNoCpuAccess(GMM_RESOURCE_USAGE_TYPE_ENUM gmmResourceUsageType, const RootDeviceEnvironment &rootDeviceEnvironment) { if (DebugManager.flags.EnableCpuCacheForResources.get()) { return false; } - if (isWsl) { + if (rootDeviceEnvironment.isWddmOnLinux()) { return false; } - if (productHelper.isCachingOnCpuAvailable()) { + if (rootDeviceEnvironment.getProductHelper().isCachingOnCpuAvailable()) { return false; } return (gmmResourceUsageType != GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER); diff --git a/shared/source/gmm_helper/cache_settings_helper.h b/shared/source/gmm_helper/cache_settings_helper.h index 28b9090f1d..05c3b80d97 100644 --- a/shared/source/gmm_helper/cache_settings_helper.h +++ b/shared/source/gmm_helper/cache_settings_helper.h @@ -16,6 +16,7 @@ namespace NEO { enum class AllocationType; struct HardwareInfo; class ProductHelper; +struct RootDeviceEnvironment; struct CacheSettingsHelper { static GMM_RESOURCE_USAGE_TYPE_ENUM getGmmUsageType(AllocationType allocationType, bool forceUncached, const ProductHelper &productHelper); @@ -26,7 +27,7 @@ struct CacheSettingsHelper { (gmmResourceUsageType == GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED)); } - static bool preferNoCpuAccess(GMM_RESOURCE_USAGE_TYPE_ENUM gmmResourceUsageType, const ProductHelper &productHelper, bool isWsl); + static bool preferNoCpuAccess(GMM_RESOURCE_USAGE_TYPE_ENUM gmmResourceUsageType, const RootDeviceEnvironment &rootDeviceEnvironment); protected: static GMM_RESOURCE_USAGE_TYPE_ENUM getDefaultUsageTypeWithCachingEnabled(AllocationType allocationType, const ProductHelper &productHelper); diff --git a/shared/source/gmm_helper/gmm.cpp b/shared/source/gmm_helper/gmm.cpp index 15b6300585..4c14ff0ad0 100644 --- a/shared/source/gmm_helper/gmm.cpp +++ b/shared/source/gmm_helper/gmm.cpp @@ -39,8 +39,7 @@ Gmm::Gmm(GmmHelper *gmmHelper, const void *alignedPtr, size_t alignedSize, size_ resourceParams.Usage = gmmResourceUsage; resourceParams.Flags.Info.Linear = 1; - auto &productHelper = gmmHelper->getRootDeviceEnvironment().getHelper(); - this->preferNoCpuAccess = CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsage, productHelper, gmmHelper->getRootDeviceEnvironment().isWddmOnLinux()); + this->preferNoCpuAccess = CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsage, gmmHelper->getRootDeviceEnvironment()); resourceParams.Flags.Info.Cacheable = !this->preferNoCpuAccess && !CacheSettingsHelper::isUncachedType(gmmResourceUsage); resourceParams.Flags.Gpu.Texture = 1; diff --git a/shared/test/common/fixtures/mock_execution_environment_gmm_fixture.h b/shared/test/common/fixtures/mock_execution_environment_gmm_fixture.h index f21f642639..478f3951e8 100644 --- a/shared/test/common/fixtures/mock_execution_environment_gmm_fixture.h +++ b/shared/test/common/fixtures/mock_execution_environment_gmm_fixture.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -20,9 +20,8 @@ class MockExecutionEnvironmentGmmFixture { void setUp(); void tearDown(); - std::unique_ptr executionEnvironment; - public: + std::unique_ptr executionEnvironment; GmmHelper *getGmmHelper(); GmmClientContext *getGmmClientContext(); }; diff --git a/shared/test/common/mocks/mock_execution_environment.h b/shared/test/common/mocks/mock_execution_environment.h index 55b1b404d2..bfdf44273d 100644 --- a/shared/test/common/mocks/mock_execution_environment.h +++ b/shared/test/common/mocks/mock_execution_environment.h @@ -15,6 +15,7 @@ namespace NEO { struct MockRootDeviceEnvironment : public RootDeviceEnvironment { using RootDeviceEnvironment::hwInfo; using RootDeviceEnvironment::isDummyAllocationInitialized; + using RootDeviceEnvironment::isWddmOnLinuxEnable; using RootDeviceEnvironment::RootDeviceEnvironment; ~MockRootDeviceEnvironment() override = default; diff --git a/shared/test/unit_test/gmm_helper/gmm_tests.cpp b/shared/test/unit_test/gmm_helper/gmm_tests.cpp index 9788eecce3..1cc06b2251 100644 --- a/shared/test/unit_test/gmm_helper/gmm_tests.cpp +++ b/shared/test/unit_test/gmm_helper/gmm_tests.cpp @@ -20,13 +20,12 @@ TEST_F(GmmTests, givenResourceUsageTypesCacheableWhenCreateGmmAndFlagEnableCpuCa DebugManagerStateRestore restore; DebugManager.flags.EnableCpuCacheForResources.set(1); StorageInfo storageInfo{}; - auto &productHelper = getGmmHelper()->getRootDeviceEnvironment().getHelper(); for (auto resourceUsageType : {GMM_RESOURCE_USAGE_OCL_IMAGE, GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER, GMM_RESOURCE_USAGE_OCL_BUFFER_CONST, GMM_RESOURCE_USAGE_OCL_BUFFER}) { auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, resourceUsageType, false, storageInfo, false); - EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(resourceUsageType, productHelper, false)); + EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(resourceUsageType, getGmmHelper()->getRootDeviceEnvironment())); EXPECT_TRUE(gmm->resourceParams.Flags.Info.Cacheable); } } @@ -41,7 +40,7 @@ TEST_F(GmmTests, givenResourceUsageTypesCacheableWhenCreateGmmAndFlagEnableCpuCa GMM_RESOURCE_USAGE_OCL_BUFFER_CONST, GMM_RESOURCE_USAGE_OCL_BUFFER}) { auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, resourceUsageType, false, storageInfo, false); - EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), !CacheSettingsHelper::preferNoCpuAccess(resourceUsageType, productHelper, false)); + EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), !CacheSettingsHelper::preferNoCpuAccess(resourceUsageType, getGmmHelper()->getRootDeviceEnvironment())); EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), !gmm->getPreferNoCpuAccess()); } } @@ -60,17 +59,17 @@ HWTEST_F(GmmTests, givenIsResourceCacheableOnCpuWhenWslFlagThenReturnProperValue DebugManagerStateRestore restore; DebugManager.flags.EnableCpuCacheForResources.set(false); StorageInfo storageInfo{}; - auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getProductHelper(); - bool isWsl = true; + auto rootDeviceEnvironment = static_cast(executionEnvironment->rootDeviceEnvironments[0].get()); + rootDeviceEnvironment->isWddmOnLinuxEnable = true; GMM_RESOURCE_USAGE_TYPE_ENUM gmmResourceUsageType = GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER; auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, gmmResourceUsageType, false, storageInfo, false); - EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsageType, productHelper, isWsl)); + EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsageType, *rootDeviceEnvironment)); EXPECT_TRUE(gmm->resourceParams.Flags.Info.Cacheable); gmmResourceUsageType = GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED; gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, gmmResourceUsageType, false, storageInfo, false); - EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsageType, productHelper, isWsl)); + EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsageType, *rootDeviceEnvironment)); EXPECT_FALSE(gmm->resourceParams.Flags.Info.Cacheable); }