From 38872b7e1b009490acbb2cad0823d1934a04473f Mon Sep 17 00:00:00 2001 From: Compute-Runtime-Validation Date: Wed, 3 Jul 2024 07:11:44 +0200 Subject: [PATCH] Revert "refactor: Add dc flush mitigation infrastructure" This reverts commit 1cba900ad9c495e4bc6292b74f356f9dcc5ee6e2. Signed-off-by: Compute-Runtime-Validation --- opencl/source/mem_obj/buffer.cpp | 7 +++---- .../copy_engine_aub_tests_xehp_and_later.h | 2 +- .../unit_test/context/driver_diagnostics_tests.h | 3 --- opencl/test/unit_test/mem_obj/buffer_tests.cpp | 4 ---- .../unit_test/mem_obj/buffer_tests_pvc_and_later.cpp | 4 ---- .../mem_obj/windows/buffer_windows_tests.cpp | 4 ---- shared/source/os_interface/product_helper.h | 1 - shared/source/os_interface/product_helper.inl | 7 +------ shared/source/os_interface/product_helper_hw.h | 1 - shared/test/common/mocks/mock_product_helper.cpp | 5 ----- .../test/unit_test/gmm_helper/gmm_helper_tests.cpp | 9 --------- .../unit_test/os_interface/product_helper_tests.cpp | 8 +++----- .../windows/wddm_memory_manager_tests.cpp | 12 ++---------- 13 files changed, 10 insertions(+), 57 deletions(-) diff --git a/opencl/source/mem_obj/buffer.cpp b/opencl/source/mem_obj/buffer.cpp index aee6d7c818..caa0c9c2b7 100644 --- a/opencl/source/mem_obj/buffer.cpp +++ b/opencl/source/mem_obj/buffer.cpp @@ -195,8 +195,7 @@ bool inline copyHostPointer(Buffer *buffer, auto memory = buffer->getGraphicsAllocation(rootDeviceIndex); auto isCompressionEnabled = memory->isCompressionEnabled(); const bool isLocalMemory = !MemoryPoolHelper::isSystemMemoryPool(memory->getMemoryPool()); - const bool isGpuCopyRequiredForDcFlushMitigation = productHelper.isDcFlushMitigated() && memory->getAllocationType() != AllocationType::bufferHostMemory; - const bool gpuCopyRequired = isCompressionEnabled || isLocalMemory || isGpuCopyRequiredForDcFlushMitigation; + const bool gpuCopyRequired = isCompressionEnabled || isLocalMemory || productHelper.isDcFlushMitigated(); if (gpuCopyRequired) { auto &hwInfo = device.getHardwareInfo(); @@ -211,7 +210,7 @@ bool inline copyHostPointer(Buffer *buffer, isCompressionEnabled == false && productHelper.getLocalMemoryAccessMode(hwInfo) != LocalMemoryAccessMode::cpuAccessDisallowed && isLockable && - !isGpuCopyRequiredForDcFlushMitigation; + !productHelper.isDcFlushMitigated(); if (debugManager.flags.CopyHostPtrOnCpu.get() != -1) { copyOnCpuAllowed = debugManager.flags.CopyHostPtrOnCpu.get() == 1; @@ -224,7 +223,7 @@ bool inline copyHostPointer(Buffer *buffer, } else { auto blitMemoryToAllocationResult = BlitOperationResult::unsupported; - if (productHelper.isBlitterFullySupported(hwInfo) && (isLocalMemory || isGpuCopyRequiredForDcFlushMitigation)) { + if (productHelper.isBlitterFullySupported(hwInfo) && (isLocalMemory || productHelper.isDcFlushMitigated())) { blitMemoryToAllocationResult = BlitHelperFunctions::blitMemoryToAllocation(device, memory, buffer->getOffset(), hostPtr, {size, 1, 1}); } diff --git a/opencl/test/unit_test/aub_tests/command_stream/copy_engine_aub_tests_xehp_and_later.h b/opencl/test/unit_test/aub_tests/command_stream/copy_engine_aub_tests_xehp_and_later.h index e33c8b9604..ad622a1247 100644 --- a/opencl/test/unit_test/aub_tests/command_stream/copy_engine_aub_tests_xehp_and_later.h +++ b/opencl/test/unit_test/aub_tests/command_stream/copy_engine_aub_tests_xehp_and_later.h @@ -403,7 +403,7 @@ void CopyEngineXeHPAndLater::givenSrcCompressedBuffer template template void CopyEngineXeHPAndLater::givenCompressedBufferWhenAuxTranslationCalledThenResolveAndCompressImpl() { - if (this->context->getDevice(0u)->areSharedSystemAllocationsAllowed() || !compressionSupported() || this->context->getDevice(0u)->getProductHelper().isDcFlushMitigated()) { + if (this->context->getDevice(0u)->areSharedSystemAllocationsAllowed() || !compressionSupported()) { // no support for scenarios where stateless is mixed with blitter compression GTEST_SKIP(); } diff --git a/opencl/test/unit_test/context/driver_diagnostics_tests.h b/opencl/test/unit_test/context/driver_diagnostics_tests.h index ab400797fe..143815ad90 100644 --- a/opencl/test/unit_test/context/driver_diagnostics_tests.h +++ b/opencl/test/unit_test/context/driver_diagnostics_tests.h @@ -212,9 +212,6 @@ struct PerformanceHintEnqueueMapTest : public PerformanceHintEnqueueTest, void SetUp() override { PerformanceHintEnqueueTest::SetUp(); - if (context->getDevice(0)->getRootDeviceEnvironment().getProductHelper().isDcFlushMitigated()) { - GTEST_SKIP(); - } } void TearDown() override { diff --git a/opencl/test/unit_test/mem_obj/buffer_tests.cpp b/opencl/test/unit_test/mem_obj/buffer_tests.cpp index a872de6cbf..6b213286f7 100644 --- a/opencl/test/unit_test/mem_obj/buffer_tests.cpp +++ b/opencl/test/unit_test/mem_obj/buffer_tests.cpp @@ -1893,10 +1893,6 @@ HWTEST_F(BufferCreateTests, givenClMemCopyHostPointerPassedToBufferCreateWhenAll auto memoryManager = new MockMemoryManager(true, *executionEnvironment); executionEnvironment->memoryManager.reset(memoryManager); - if (executionEnvironment->rootDeviceEnvironments[0]->getProductHelper().isDcFlushMitigated()) { - debugManager.flags.AllowDcFlush.set(1); - } - MockClDevice device(new MockDevice(executionEnvironment, mockRootDeviceIndex)); ASSERT_TRUE(device.createEngines()); DeviceFactory::prepareDeviceEnvironments(*device.getExecutionEnvironment()); diff --git a/opencl/test/unit_test/mem_obj/buffer_tests_pvc_and_later.cpp b/opencl/test/unit_test/mem_obj/buffer_tests_pvc_and_later.cpp index 91d3d0ceb1..458fc0013d 100644 --- a/opencl/test/unit_test/mem_obj/buffer_tests_pvc_and_later.cpp +++ b/opencl/test/unit_test/mem_obj/buffer_tests_pvc_and_later.cpp @@ -115,10 +115,6 @@ HWTEST2_F(PvcAndLaterBufferTests, givenCompressedBufferInSystemAndBlitterSupport auto pDevice = deviceFactory.rootDevices[0]; auto pMockContext = std::make_unique(pDevice); - if (pDevice->getProductHelper().isDcFlushMitigated()) { - debugManager.flags.AllowDcFlush.set(1); - } - static_cast(pDevice->getExecutionEnvironment()->memoryManager.get())->enable64kbpages[0] = true; static_cast(pDevice->getExecutionEnvironment()->memoryManager.get())->localMemorySupported[0] = false; diff --git a/opencl/test/unit_test/mem_obj/windows/buffer_windows_tests.cpp b/opencl/test/unit_test/mem_obj/windows/buffer_windows_tests.cpp index 8b750b93bb..2cd5461d87 100644 --- a/opencl/test/unit_test/mem_obj/windows/buffer_windows_tests.cpp +++ b/opencl/test/unit_test/mem_obj/windows/buffer_windows_tests.cpp @@ -152,10 +152,6 @@ HWTEST_F(BufferCreateWindowsTests, givenClMemCopyHostPointerPassedToBufferCreate auto memoryManager = new MockMemoryManager(true, *executionEnvironment); executionEnvironment->memoryManager.reset(memoryManager); - if (executionEnvironment->rootDeviceEnvironments[0]->getProductHelper().isDcFlushMitigated()) { - debugManager.flags.AllowDcFlush.set(1); - } - MockClDevice device(new MockDevice(executionEnvironment, mockRootDeviceIndex)); ASSERT_TRUE(device.createEngines()); DeviceFactory::prepareDeviceEnvironments(*device.getExecutionEnvironment()); diff --git a/shared/source/os_interface/product_helper.h b/shared/source/os_interface/product_helper.h index 906d67f183..9d86486257 100644 --- a/shared/source/os_interface/product_helper.h +++ b/shared/source/os_interface/product_helper.h @@ -132,7 +132,6 @@ class ProductHelper { virtual bool isTile64With3DSurfaceOnBCSSupported(const HardwareInfo &hwInfo) const = 0; virtual bool isDcFlushAllowed() const = 0; virtual bool isDcFlushMitigated() const = 0; - virtual bool mitigateDcFlush() const = 0; virtual bool overridePatAndUsageForDcFlushMitigation(AllocationType allocationType) const = 0; virtual bool overrideCacheableForDcFlushMitigation(AllocationType allocationType) const = 0; virtual uint32_t computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const = 0; diff --git a/shared/source/os_interface/product_helper.inl b/shared/source/os_interface/product_helper.inl index 36818cb2b6..20ddd390b0 100644 --- a/shared/source/os_interface/product_helper.inl +++ b/shared/source/os_interface/product_helper.inl @@ -394,7 +394,7 @@ bool ProductHelperHw::isDisableScratchPagesSupported() const { template bool ProductHelperHw::isDcFlushAllowed() const { using GfxProduct = typename HwMapper::GfxProduct; - bool dcFlushAllowed = GfxProduct::isDcFlushAllowed && !this->mitigateDcFlush(); + bool dcFlushAllowed = GfxProduct::isDcFlushAllowed; if (debugManager.flags.AllowDcFlush.get() != -1) { dcFlushAllowed = debugManager.flags.AllowDcFlush.get(); @@ -403,11 +403,6 @@ bool ProductHelperHw::isDcFlushAllowed() const { return dcFlushAllowed; } -template -bool ProductHelperHw::mitigateDcFlush() const { - return false; -} - template bool ProductHelperHw::isDcFlushMitigated() const { using GfxProduct = typename HwMapper::GfxProduct; diff --git a/shared/source/os_interface/product_helper_hw.h b/shared/source/os_interface/product_helper_hw.h index 1ae2fbc4df..760b7f6578 100644 --- a/shared/source/os_interface/product_helper_hw.h +++ b/shared/source/os_interface/product_helper_hw.h @@ -76,7 +76,6 @@ class ProductHelperHw : public ProductHelper { bool isTile64With3DSurfaceOnBCSSupported(const HardwareInfo &hwInfo) const override; bool isDcFlushAllowed() const override; bool isDcFlushMitigated() const override; - bool mitigateDcFlush() const override; bool overridePatAndUsageForDcFlushMitigation(AllocationType allocationType) const override; bool overrideCacheableForDcFlushMitigation(AllocationType allocationType) const override; uint32_t computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const override; diff --git a/shared/test/common/mocks/mock_product_helper.cpp b/shared/test/common/mocks/mock_product_helper.cpp index c5b988214d..8630add1dd 100644 --- a/shared/test/common/mocks/mock_product_helper.cpp +++ b/shared/test/common/mocks/mock_product_helper.cpp @@ -281,11 +281,6 @@ bool ProductHelperHw::isDcFlushMitigated() const { return false; } -template <> -bool ProductHelperHw::mitigateDcFlush() const { - return false; -} - template <> bool ProductHelperHw::overridePatAndUsageForDcFlushMitigation(AllocationType allocationType) const { return false; diff --git a/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp b/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp index acfbcf9353..abbd3e9739 100644 --- a/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp +++ b/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp @@ -682,11 +682,6 @@ TEST(GmmTest, givenHwInfoWhenDeviceIsCreatedThenSetThisHwInfoToGmmHelper) { TEST(GmmTest, givenAllocationTypeWhenGettingUsageTypeThenReturnCorrectValue) { MockExecutionEnvironment mockExecutionEnvironment{}; const auto &productHelper = mockExecutionEnvironment.rootDeviceEnvironments[0]->getHelper(); - - if (productHelper.isDcFlushMitigated()) { - GTEST_SKIP(); - } - for (uint32_t i = 0; i < static_cast(AllocationType::count); i++) { auto allocationType = static_cast(i); auto uncachedGmmUsageType = productHelper.isNewCoherencyModelSupported() ? GMM_RESOURCE_USAGE_OCL_BUFFER_CSR_UC : GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED; @@ -885,10 +880,6 @@ TEST(GmmTest, givenUncachedDebugFlagMaskSetWhenAskingForUsageTypeThenReturnUncac MockExecutionEnvironment mockExecutionEnvironment{}; const auto &productHelper = mockExecutionEnvironment.rootDeviceEnvironments[0]->getHelper(); - if (productHelper.isDcFlushMitigated()) { - GTEST_SKIP(); - } - constexpr int64_t bufferMask = 1 << (static_cast(AllocationType::buffer) - 1); constexpr int64_t imageMask = 1 << (static_cast(AllocationType::image) - 1); diff --git a/shared/test/unit_test/os_interface/product_helper_tests.cpp b/shared/test/unit_test/os_interface/product_helper_tests.cpp index 65ba7d6ace..e356156891 100644 --- a/shared/test/unit_test/os_interface/product_helper_tests.cpp +++ b/shared/test/unit_test/os_interface/product_helper_tests.cpp @@ -311,11 +311,9 @@ HWTEST_F(ProductHelperTest, givenVariousValuesWhenGettingAubStreamSteppingFromHw HWTEST_F(ProductHelperTest, givenDcFlushMitigationWhenOverridePatAndUsageForDcFlushMitigationThenReturnCorrectValue) { DebugManagerStateRestore restorer; - if (!productHelper->isDcFlushMitigated()) { - for (auto i = 0; i < static_cast(AllocationType::count); ++i) { - auto allocationType = static_cast(i); - EXPECT_FALSE(productHelper->overridePatAndUsageForDcFlushMitigation(allocationType)); - } + for (auto i = 0; i < static_cast(AllocationType::count); ++i) { + auto allocationType = static_cast(i); + EXPECT_FALSE(productHelper->overridePatAndUsageForDcFlushMitigation(allocationType)); } debugManager.flags.AllowDcFlush.set(0); for (auto i = 0; i < static_cast(AllocationType::count); ++i) { diff --git a/shared/test/unit_test/os_interface/windows/wddm_memory_manager_tests.cpp b/shared/test/unit_test/os_interface/windows/wddm_memory_manager_tests.cpp index f33deb7529..a5266b4d1b 100644 --- a/shared/test/unit_test/os_interface/windows/wddm_memory_manager_tests.cpp +++ b/shared/test/unit_test/os_interface/windows/wddm_memory_manager_tests.cpp @@ -2873,11 +2873,7 @@ HWTEST_F(WddmMemoryManagerTest, givenInternalHeapOrLinearStreamTypeWhenAllocatin ASSERT_NE(nullptr, allocation); - if (rootDeviceEnvironment->getProductHelper().isDcFlushMitigated()) { - EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED); - } else { - EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER); - } + EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER); memoryManager->freeGraphicsMemory(allocation); } @@ -2889,11 +2885,7 @@ HWTEST_F(WddmMemoryManagerTest, givenInternalHeapOrLinearStreamTypeWhenAllocatin ASSERT_NE(nullptr, allocation); - if (rootDeviceEnvironment->getProductHelper().isDcFlushMitigated()) { - EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED); - } else { - EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER); - } + EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER); memoryManager->freeGraphicsMemory(allocation); }