diff --git a/opencl/source/dll/command_queue_dll.cpp b/opencl/source/dll/command_queue_dll.cpp index 1d86c9ff3d..e1e8e5253c 100644 --- a/opencl/source/dll/command_queue_dll.cpp +++ b/opencl/source/dll/command_queue_dll.cpp @@ -17,8 +17,4 @@ bool CommandQueue::isTimestampWaitEnabled() { return true; } -bool checkIsGpuCopyRequiredForDcFlushMitigation(AllocationType type) { - return type != AllocationType::bufferHostMemory; -} - } // namespace NEO diff --git a/opencl/source/mem_obj/buffer.cpp b/opencl/source/mem_obj/buffer.cpp index f99f27ad85..de9a3b2896 100644 --- a/opencl/source/mem_obj/buffer.cpp +++ b/opencl/source/mem_obj/buffer.cpp @@ -184,8 +184,6 @@ Buffer *Buffer::create(Context *context, flags, 0, size, hostPtr, bufferCreateArgs, errcodeRet); } -extern bool checkIsGpuCopyRequiredForDcFlushMitigation(AllocationType type); - bool inline copyHostPointer(Buffer *buffer, Device &device, size_t size, @@ -197,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() && checkIsGpuCopyRequiredForDcFlushMitigation(memory->getAllocationType()); - const bool gpuCopyRequired = isCompressionEnabled || isLocalMemory || isGpuCopyRequiredForDcFlushMitigation; + const bool gpuCopyRequired = isCompressionEnabled || isLocalMemory || productHelper.isDcFlushMitigated(); if (gpuCopyRequired) { auto &hwInfo = device.getHardwareInfo(); @@ -213,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; @@ -226,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/libult/command_queue_ult.cpp b/opencl/test/unit_test/libult/command_queue_ult.cpp index 9ca968afc1..0dfa31d9be 100644 --- a/opencl/test/unit_test/libult/command_queue_ult.cpp +++ b/opencl/test/unit_test/libult/command_queue_ult.cpp @@ -19,8 +19,4 @@ bool CommandQueue::isTimestampWaitEnabled() { return ultHwConfig.useWaitForTimestamps; } -bool checkIsGpuCopyRequiredForDcFlushMitigation(AllocationType type) { - return false; -} - } // namespace NEO \ No newline at end of file diff --git a/opencl/test/unit_test/mem_obj/buffer_tests.cpp b/opencl/test/unit_test/mem_obj/buffer_tests.cpp index 676b681a62..fc0d9de3d4 100644 --- a/opencl/test/unit_test/mem_obj/buffer_tests.cpp +++ b/opencl/test/unit_test/mem_obj/buffer_tests.cpp @@ -1930,10 +1930,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/source/xe2_hpg_core/windows/product_helper_lnl.cpp b/shared/source/xe2_hpg_core/windows/product_helper_lnl.cpp index b559d8b6a6..c332e8919b 100644 --- a/shared/source/xe2_hpg_core/windows/product_helper_lnl.cpp +++ b/shared/source/xe2_hpg_core/windows/product_helper_lnl.cpp @@ -35,11 +35,6 @@ uint64_t ProductHelperHw::overridePatIndex(bool isUncachedType, uint return patIndex; } -template <> -bool ProductHelperHw::mitigateDcFlush() const { - return true; -} - template <> bool ProductHelperHw::isDirectSubmissionSupported(ReleaseHelper *releaseHelper) const { return true; 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 04e91f02fe..c0b067c4df 100644 --- a/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp +++ b/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp @@ -685,11 +685,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; @@ -888,10 +883,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 248797383b..0f0e715abd 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); } diff --git a/shared/test/unit_test/xe2_hpg_core/lnl/gfx_core_helper_tests_lnl.cpp b/shared/test/unit_test/xe2_hpg_core/lnl/gfx_core_helper_tests_lnl.cpp index 7f4c23e9bf..42a019e1d0 100644 --- a/shared/test/unit_test/xe2_hpg_core/lnl/gfx_core_helper_tests_lnl.cpp +++ b/shared/test/unit_test/xe2_hpg_core/lnl/gfx_core_helper_tests_lnl.cpp @@ -29,5 +29,5 @@ LNLTEST_F(GfxCoreHelperTestsLnl, givenCommandBufferAllocationTypeWhenGetAllocati } LNLTEST_F(GfxCoreHelperTestsLnl, WhenAskingForDcFlushThenReturnTrue) { - EXPECT_NE(MemorySynchronizationCommands::getDcFlushEnable(true, this->pDevice->getRootDeviceEnvironment()), this->pDevice->getRootDeviceEnvironment().getProductHelper().isDcFlushMitigated()); + EXPECT_TRUE(MemorySynchronizationCommands::getDcFlushEnable(true, this->pDevice->getRootDeviceEnvironment())); } diff --git a/shared/test/unit_test/xe2_hpg_core/lnl/product_helper_tests_lnl.cpp b/shared/test/unit_test/xe2_hpg_core/lnl/product_helper_tests_lnl.cpp index 5a16aa4502..1e08ef70a3 100644 --- a/shared/test/unit_test/xe2_hpg_core/lnl/product_helper_tests_lnl.cpp +++ b/shared/test/unit_test/xe2_hpg_core/lnl/product_helper_tests_lnl.cpp @@ -89,7 +89,6 @@ LNLTEST_F(LnlProductHelper, givenCompilerProductHelperWhenGetDefaultHwIpVersionT LNLTEST_F(LnlProductHelper, whenCheckPreferredAllocationMethodThenAllocateByKmdIsReturnedExceptTagBufferAndTimestampPacketTagBuffer) { DebugManagerStateRestore restorer; - debugManager.flags.AllowDcFlush.set(1); for (auto i = 0; i < static_cast(AllocationType::count); ++i) { auto allocationType = static_cast(i); auto preferredAllocationMethod = productHelper->getPreferredAllocationMethod(allocationType); @@ -127,13 +126,11 @@ LNLTEST_F(LnlProductHelper, givenProductHelperWhenCheckOverrideAllocationCacheab } LNLTEST_F(LnlProductHelper, givenExternalHostPtrWhenMitigateDcFlushThenOverrideCacheable) { - DebugManagerStateRestore restorer; - debugManager.flags.AllowDcFlush.set(1); - AllocationData allocationData{}; allocationData.type = AllocationType::externalHostPtr; EXPECT_FALSE(productHelper->overrideAllocationCacheable(allocationData)); + DebugManagerStateRestore restorer; debugManager.flags.AllowDcFlush.set(0); for (auto i = 0; i < static_cast(AllocationType::count); ++i) { diff --git a/shared/test/unit_test/xe2_hpg_core/lnl/windows/product_helper_tests_lnl_windows.cpp b/shared/test/unit_test/xe2_hpg_core/lnl/windows/product_helper_tests_lnl_windows.cpp index d46ee5acd2..c8f386a2d6 100644 --- a/shared/test/unit_test/xe2_hpg_core/lnl/windows/product_helper_tests_lnl_windows.cpp +++ b/shared/test/unit_test/xe2_hpg_core/lnl/windows/product_helper_tests_lnl_windows.cpp @@ -23,14 +23,8 @@ LNLTEST_F(LnlProductHelperWindows, givenProductHelperWhenCheckDirectSubmissionSu EXPECT_TRUE(productHelper->isDirectSubmissionSupported(releaseHelper)); } -LNLTEST_F(LnlProductHelperWindows, givenProductHelperWhenDcFlushMitigationThenReturnTrue) { - EXPECT_TRUE(productHelper->mitigateDcFlush()); - EXPECT_TRUE(productHelper->isDcFlushMitigated()); -} - LNLTEST_F(LnlProductHelperWindows, givenProductHelperWhenOverridePatIndexCalledThenCorrectValueIsReturned) { DebugManagerStateRestore restorer; - debugManager.flags.AllowDcFlush.set(1); uint64_t expectedPatIndex = 6u; EXPECT_EQ(expectedPatIndex, productHelper->overridePatIndex(0u, expectedPatIndex, AllocationType::bufferHostMemory));