From 299c8689daa5d831ad9aba57d856f14017b7e603 Mon Sep 17 00:00:00 2001 From: Maciej Plewka Date: Tue, 17 Jun 2025 11:22:00 +0000 Subject: [PATCH] refactor: move isPostImageWriteFlushRequired to release helper Related-To: NEO-14935 Signed-off-by: Maciej Plewka --- level_zero/core/source/cmdlist/cmdlist_hw.h | 1 + level_zero/core/source/cmdlist/cmdlist_hw.inl | 3 +++ .../cmdlist/cmdlist_hw_xehp_and_later.inl | 3 ++- .../test_cmdlist_append_launch_kernel_1.cpp | 26 +++++++++++++------ .../cmdlist/test_in_order_cmdlist_1.cpp | 4 ++- shared/source/os_interface/product_helper.h | 1 - shared/source/os_interface/product_helper.inl | 5 ---- .../source/os_interface/product_helper_hw.h | 1 - shared/source/release_helper/release_helper.h | 2 ++ .../release_helper/release_helper_base.inl | 5 +++- .../release_helper_common_xe_hpg.inl | 7 +++-- ...os_agnostic_product_helper_xe_hpg_core.inl | 5 ---- .../test/common/mocks/mock_release_helper.h | 1 + .../os_interface/product_helper_tests.cpp | 4 --- .../release_helper_12_55_tests.cpp | 9 +++++++ .../release_helper_12_56_tests.cpp | 9 +++++++ .../release_helper_12_57_tests.cpp | 9 +++++++ .../release_helper_12_60_tests.cpp | 4 +++ .../release_helper_12_61_tests.cpp | 4 +++ .../release_helper_12_70_tests.cpp | 4 +++ .../release_helper_12_71_tests.cpp | 4 +++ .../release_helper_12_74_tests.cpp | 4 +++ .../release_helper_20_01_tests.cpp | 4 +++ .../release_helper_20_02_tests.cpp | 4 +++ .../release_helper_20_04_tests.cpp | 4 +++ .../release_helper_30_00_tests.cpp | 4 +++ .../release_helper_30_01_tests.cpp | 4 +++ .../release_helper_30_03_tests.cpp | 4 +++ .../release_helper_tests_base.cpp | 9 +++++++ .../release_helper_tests_base.h | 1 + .../xe_hpg_core/excludes_xe_hpg_core.cpp | 1 - .../test_product_helper_xe_hpg_core.cpp | 6 +---- 32 files changed, 121 insertions(+), 35 deletions(-) diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.h b/level_zero/core/source/cmdlist/cmdlist_hw.h index 1e5893b04c..c877bd9ba1 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.h +++ b/level_zero/core/source/cmdlist/cmdlist_hw.h @@ -430,6 +430,7 @@ struct CommandListCoreFamily : public CommandListImp { bool copyOperationFenceSupported = false; bool implicitSynchronizedDispatchForCooperativeKernelsAllowed = false; bool useAdditionalBlitProperties = false; + bool isPostImageWriteFlushRequired = false; }; template diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 45adee3a02..1b8b38607e 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -39,6 +39,7 @@ #include "shared/source/os_interface/os_context.h" #include "shared/source/page_fault_manager/cpu_page_fault_manager.h" #include "shared/source/program/sync_buffer_handler.h" +#include "shared/source/release_helper/release_helper.h" #include "shared/source/utilities/software_tags_manager.h" #include "level_zero/core/source/builtin/builtin_functions_lib.h" @@ -233,6 +234,7 @@ ze_result_t CommandListCoreFamily::initialize(Device *device, NEO auto &rootDeviceEnvironment = neoDevice->getRootDeviceEnvironment(); auto &productHelper = rootDeviceEnvironment.getHelper(); auto &gfxCoreHelper = neoDevice->getGfxCoreHelper(); + auto releaseHelper = neoDevice->getReleaseHelper(); auto &l0GfxCoreHelper = device->getL0GfxCoreHelper(); auto &compilerProductHelper = neoDevice->getCompilerProductHelper(); auto gmmHelper = rootDeviceEnvironment.getGmmHelper(); @@ -268,6 +270,7 @@ ze_result_t CommandListCoreFamily::initialize(Device *device, NEO this->l3FlushAfterPostSyncRequired = productHelper.isL3FlushAfterPostSyncRequired(heaplessModeEnabled); this->compactL3FlushEventPacket = L0GfxCoreHelper::useCompactL3FlushEventPacket(hwInfo, this->l3FlushAfterPostSyncRequired); this->useAdditionalBlitProperties = productHelper.useAdditionalBlitProperties(); + this->isPostImageWriteFlushRequired = releaseHelper ? releaseHelper->isPostImageWriteFlushRequired() : false; if (NEO::debugManager.flags.OverrideThreadArbitrationPolicy.get() != -1) { this->defaultPipelinedThreadArbitrationPolicy = NEO::debugManager.flags.OverrideThreadArbitrationPolicy.get(); diff --git a/level_zero/core/source/cmdlist/cmdlist_hw_xehp_and_later.inl b/level_zero/core/source/cmdlist/cmdlist_hw_xehp_and_later.inl index d380d6f741..2d44c367f3 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw_xehp_and_later.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw_xehp_and_later.inl @@ -18,6 +18,7 @@ #include "shared/source/memory_manager/residency_container.h" #include "shared/source/memory_manager/unified_memory_manager.h" #include "shared/source/program/kernel_info.h" +#include "shared/source/release_helper/release_helper.h" #include "shared/source/unified_memory/unified_memory.h" #include "shared/source/utilities/software_tags_manager.h" @@ -454,7 +455,7 @@ ze_result_t CommandListCoreFamily::appendLaunchKernelWithParams(K } bool textureFlushRequired = false; - if (this->device->getProductHelper().isPostImageWriteFlushRequired() && + if (this->isPostImageWriteFlushRequired && kernelInfo->kernelDescriptor.kernelAttributes.hasImageWriteArg) { if (this->isImmediateType()) { textureFlushRequired = true; diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_1.cpp index 6d6bc391ff..2e295594d2 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_1.cpp @@ -21,6 +21,7 @@ #include "shared/test/common/libult/ult_command_stream_receiver.h" #include "shared/test/common/mocks/mock_device.h" #include "shared/test/common/mocks/mock_graphics_allocation.h" +#include "shared/test/common/mocks/mock_release_helper.h" #include "shared/test/common/test_macros/hw_test.h" #include "shared/test/unit_test/fixtures/command_container_fixture.h" @@ -1321,12 +1322,11 @@ HWTEST_F(CommandListAppendLaunchKernel, givenImmediateCommandListWhenAppendLaunc EXPECT_EQ(ZE_RESULT_SUCCESS, returnValue); } -HWTEST_F(CommandListAppendLaunchKernel, GivenImmCmdListAndKernelWithImageWriteArgAndPlatformRequiresFlushWhenLaunchingKernelThenPipeControlWithTextureCacheInvalidationIsAdded) { - if (!device->getProductHelper().isPostImageWriteFlushRequired()) { - GTEST_SKIP(); - } - +HWTEST2_F(CommandListAppendLaunchKernel, GivenImmCmdListAndKernelWithImageWriteArgAndPlatformRequiresFlushWhenLaunchingKernelThenPipeControlWithTextureCacheInvalidationIsAdded, IsAtLeastXeHpCore) { using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL; + auto releaseHelper = std::make_unique(); + releaseHelper->isPostImageWriteFlushRequiredResult = true; + device->getNEODevice()->getRootDeviceEnvironmentRef().releaseHelper = std::move(releaseHelper); auto kernel = std::make_unique>(); kernel->module = module.get(); @@ -1365,13 +1365,17 @@ HWTEST_F(CommandListAppendLaunchKernel, GivenImmCmdListAndKernelWithImageWriteAr EXPECT_TRUE(cmd->getTextureCacheInvalidationEnable()); } -HWTEST2_F(CommandListAppendLaunchKernel, GivenRegularCommandListAndOutOfOrderExecutionWhenKernelWithImageWriteIsAppendedThenBarrierContainsTextureCacheFlush, IsXeHpgCore) { +HWTEST2_F(CommandListAppendLaunchKernel, GivenRegularCommandListAndOutOfOrderExecutionWhenKernelWithImageWriteIsAppendedThenBarrierContainsTextureCacheFlush, IsAtLeastXeHpCore) { using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL; auto kernel = std::make_unique>(); kernel->module = module.get(); kernel->immutableData.kernelInfo->kernelDescriptor.kernelAttributes.hasImageWriteArg = true; + auto releaseHelper = std::make_unique(); + releaseHelper->isPostImageWriteFlushRequiredResult = true; + device->getNEODevice()->getRootDeviceEnvironmentRef().releaseHelper = std::move(releaseHelper); + ze_group_count_t groupCount{1, 1, 1}; ze_result_t returnValue; ze_command_list_flags_t flags = ZE_COMMAND_LIST_FLAG_RELAXED_ORDERING; @@ -1406,13 +1410,16 @@ HWTEST2_F(CommandListAppendLaunchKernel, GivenRegularCommandListAndOutOfOrderExe EXPECT_TRUE(cmd->getTextureCacheInvalidationEnable()); } -HWTEST2_F(CommandListAppendLaunchKernel, GivenKernelWithImageWriteArgWhenAppendingTwiceThenPipeControlWithTextureCacheInvalidationIsProgrammedBetweenWalkers, IsXeHpgCore) { +HWTEST2_F(CommandListAppendLaunchKernel, GivenKernelWithImageWriteArgWhenAppendingTwiceThenPipeControlWithTextureCacheInvalidationIsProgrammedBetweenWalkers, IsAtLeastXeHpCore) { using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL; - using COMPUTE_WALKER = typename FamilyType::COMPUTE_WALKER; + using COMPUTE_WALKER = typename FamilyType::DefaultWalkerType; StackVec testedCmdListFlags = {ZE_COMMAND_LIST_FLAG_IN_ORDER, ZE_COMMAND_LIST_FLAG_RELAXED_ORDERING}; + auto releaseHelper = std::make_unique(); + releaseHelper->isPostImageWriteFlushRequiredResult = true; + device->getNEODevice()->getRootDeviceEnvironmentRef().releaseHelper = std::move(releaseHelper); for (auto cmdListFlags : testedCmdListFlags) { auto kernel = std::make_unique>(); kernel->module = module.get(); @@ -1471,6 +1478,9 @@ HWTEST2_F(CommandListAppendLaunchKernel, whenResettingRegularCommandListThenText kernel->module = module.get(); kernel->immutableData.kernelInfo->kernelDescriptor.kernelAttributes.hasImageWriteArg = true; + auto releaseHelper = std::make_unique(); + releaseHelper->isPostImageWriteFlushRequiredResult = true; + device->getNEODevice()->getRootDeviceEnvironmentRef().releaseHelper = std::move(releaseHelper); ze_group_count_t groupCount{1, 1, 1}; ze_result_t returnValue; ze_command_list_flags_t flags = ZE_COMMAND_LIST_FLAG_RELAXED_ORDERING; diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp index f737dcbdd8..4a89047d1c 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp @@ -13,6 +13,7 @@ #include "shared/source/helpers/register_offsets.h" #include "shared/source/indirect_heap/indirect_heap.h" #include "shared/source/memory_manager/internal_allocation_storage.h" +#include "shared/source/release_helper/release_helper.h" #include "shared/test/common/helpers/relaxed_ordering_commands_helper.h" #include "shared/test/common/helpers/unit_test_helper.h" #include "shared/test/common/libult/ult_command_stream_receiver.h" @@ -2671,7 +2672,8 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, InOrderCmdListTests, givenInOrderModeWhenProgrammin EXPECT_EQ(immCmdList->inOrderExecInfo->getBaseDeviceAddress() + counterOffset, address); EXPECT_EQ(2u, pcCmd->getImmediateData()); - const bool textureFlushRequired = device->getProductHelper().isPostImageWriteFlushRequired() && + auto releaseHelper = device->getNEODevice()->getReleaseHelper(); + const bool textureFlushRequired = releaseHelper && releaseHelper->isPostImageWriteFlushRequired() && kernel->kernelImmData->getKernelInfo()->kernelDescriptor.kernelAttributes.hasImageWriteArg; EXPECT_EQ(textureFlushRequired, pcCmd->getTextureCacheInvalidationEnable()); } else { diff --git a/shared/source/os_interface/product_helper.h b/shared/source/os_interface/product_helper.h index 69e6603b23..b33d790070 100644 --- a/shared/source/os_interface/product_helper.h +++ b/shared/source/os_interface/product_helper.h @@ -193,7 +193,6 @@ class ProductHelper { virtual uint32_t getInternalHeapsPreallocated() const = 0; virtual bool overrideAllocationCpuCacheable(const AllocationData &allocationData) const = 0; virtual bool is2MBLocalMemAlignmentEnabled() const = 0; - virtual bool isPostImageWriteFlushRequired() const = 0; virtual bool getFrontEndPropertyScratchSizeSupport() const = 0; virtual bool getFrontEndPropertyPrivateScratchSizeSupport() const = 0; diff --git a/shared/source/os_interface/product_helper.inl b/shared/source/os_interface/product_helper.inl index 1c66b1a386..84b64bf05c 100644 --- a/shared/source/os_interface/product_helper.inl +++ b/shared/source/os_interface/product_helper.inl @@ -225,11 +225,6 @@ bool ProductHelperHw::is2MBLocalMemAlignmentEnabled() const { return false; } -template -bool ProductHelperHw::isPostImageWriteFlushRequired() const { - return false; -} - template bool ProductHelperHw::isAdditionalStateBaseAddressWARequired(const HardwareInfo &hwInfo) const { return false; diff --git a/shared/source/os_interface/product_helper_hw.h b/shared/source/os_interface/product_helper_hw.h index a1ed267222..0eb324c6a9 100644 --- a/shared/source/os_interface/product_helper_hw.h +++ b/shared/source/os_interface/product_helper_hw.h @@ -132,7 +132,6 @@ class ProductHelperHw : public ProductHelper { uint32_t getInternalHeapsPreallocated() const override; bool overrideAllocationCpuCacheable(const AllocationData &allocationData) const override; bool is2MBLocalMemAlignmentEnabled() const override; - bool isPostImageWriteFlushRequired() const override; bool isPackedCopyFormatSupported() const override; bool getFrontEndPropertyScratchSizeSupport() const override; diff --git a/shared/source/release_helper/release_helper.h b/shared/source/release_helper/release_helper.h index 9acbf09014..00e6838da1 100644 --- a/shared/source/release_helper/release_helper.h +++ b/shared/source/release_helper/release_helper.h @@ -67,6 +67,7 @@ class ReleaseHelper { virtual bool programmAdditionalStallPriorToBarrierWithTimestamp() const = 0; virtual uint32_t computeSlmValues(uint32_t slmSize, bool isHeapless) const = 0; virtual bool isBlitImageAllowedForDepthFormat() const = 0; + virtual bool isPostImageWriteFlushRequired() const = 0; protected: ReleaseHelper(HardwareIpVersion hardwareIpVersion) : hardwareIpVersion(hardwareIpVersion) {} @@ -113,6 +114,7 @@ class ReleaseHelperHw : public ReleaseHelper { bool programmAdditionalStallPriorToBarrierWithTimestamp() const override; uint32_t computeSlmValues(uint32_t slmSize, bool isHeapless) const override; bool isBlitImageAllowedForDepthFormat() const override; + bool isPostImageWriteFlushRequired() const override; protected: ReleaseHelperHw(HardwareIpVersion hardwareIpVersion) : ReleaseHelper(hardwareIpVersion) {} diff --git a/shared/source/release_helper/release_helper_base.inl b/shared/source/release_helper/release_helper_base.inl index b66aa7940a..e2f07535f0 100644 --- a/shared/source/release_helper/release_helper_base.inl +++ b/shared/source/release_helper/release_helper_base.inl @@ -184,5 +184,8 @@ template bool ReleaseHelperHw::isBlitImageAllowedForDepthFormat() const { return true; } - +template +bool ReleaseHelperHw::isPostImageWriteFlushRequired() const { + return false; +} } // namespace NEO diff --git a/shared/source/release_helper/release_helper_common_xe_hpg.inl b/shared/source/release_helper/release_helper_common_xe_hpg.inl index 7658fb7657..e9bd0a7da9 100644 --- a/shared/source/release_helper/release_helper_common_xe_hpg.inl +++ b/shared/source/release_helper/release_helper_common_xe_hpg.inl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023-2024 Intel Corporation + * Copyright (C) 2023-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -63,5 +63,8 @@ const SizeToPreferredSlmValueArray &ReleaseHelperHw::getSizeToPreferred }}; return sizeToPreferredSlmValue; } - +template <> +bool ReleaseHelperHw::isPostImageWriteFlushRequired() const { + return true; +} } // namespace NEO diff --git a/shared/source/xe_hpg_core/os_agnostic_product_helper_xe_hpg_core.inl b/shared/source/xe_hpg_core/os_agnostic_product_helper_xe_hpg_core.inl index 6d4fd517e4..65a2937593 100644 --- a/shared/source/xe_hpg_core/os_agnostic_product_helper_xe_hpg_core.inl +++ b/shared/source/xe_hpg_core/os_agnostic_product_helper_xe_hpg_core.inl @@ -20,9 +20,4 @@ uint32_t ProductHelperHw::getMaxThreadsForWorkgroupInDSSOrSS(const H return getMaxThreadsForWorkgroup(hwInfo, maxNumEUsPerDualSubSlice); } -template <> -bool ProductHelperHw::isPostImageWriteFlushRequired() const { - return true; -} - } // namespace NEO diff --git a/shared/test/common/mocks/mock_release_helper.h b/shared/test/common/mocks/mock_release_helper.h index 958a04a78c..15ce302650 100644 --- a/shared/test/common/mocks/mock_release_helper.h +++ b/shared/test/common/mocks/mock_release_helper.h @@ -44,6 +44,7 @@ class MockReleaseHelper : public ReleaseHelper { ADDMETHOD_CONST_NOBASE(isDirectSubmissionLightSupported, bool, false, ()); ADDMETHOD_CONST_NOBASE(computeSlmValues, uint32_t, {}, (uint32_t slmSize, bool isHeapless)); ADDMETHOD_CONST_NOBASE(programmAdditionalStallPriorToBarrierWithTimestamp, bool, false, ()); + ADDMETHOD_CONST_NOBASE(isPostImageWriteFlushRequired, bool, false, ()); ADDMETHOD_CONST_NOBASE_VOIDRETURN(adjustRTDispatchGlobals, (void *rtDispatchGlobals, uint32_t rtStacksPerDss, bool heaplessEnabled, uint32_t maxBvhLevels)); const SizeToPreferredSlmValueArray &getSizeToPreferredSlmValue(bool isHeapless) const override { 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 14c87c04c8..aed00d13fa 100644 --- a/shared/test/unit_test/os_interface/product_helper_tests.cpp +++ b/shared/test/unit_test/os_interface/product_helper_tests.cpp @@ -1171,10 +1171,6 @@ HWTEST2_F(ProductHelperTest, givenProductHelperWhenOverrideDirectSubmissionTimeo EXPECT_EQ(std::chrono::microseconds{10000}, maxTimeout); } -HWTEST_F(ProductHelperTest, givenProductHelperWhenQueryIsPostImageWriteFlushRequiredThenFalseReturned) { - EXPECT_FALSE(productHelper->isPostImageWriteFlushRequired()); -} - HWTEST_F(ProductHelperTest, givenProductHelperWhenIsExposingSubdevicesAllowedThenTrueIsReturned) { EXPECT_TRUE(productHelper->isExposingSubdevicesAllowed()); } diff --git a/shared/test/unit_test/release_helper/release_helper_12_55_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_55_tests.cpp index c08fad167c..40dabca223 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_55_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_55_tests.cpp @@ -85,6 +85,15 @@ TEST_F(ReleaseHelper1255Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper1255Tests, whenIsPostImageWriteFlushRequiredCalledThenTrueReturned) { + for (auto &revision : getRevisions()) { + ipVersion.revision = revision; + releaseHelper = ReleaseHelper::create(ipVersion); + ASSERT_NE(nullptr, releaseHelper); + EXPECT_TRUE(releaseHelper->isPostImageWriteFlushRequired()); + } +} + TEST_F(ReleaseHelper1255Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_12_56_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_56_tests.cpp index 65fdf337d6..6e5d8f1a90 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_56_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_56_tests.cpp @@ -85,6 +85,15 @@ TEST_F(ReleaseHelper1256Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper1256Tests, whenIsPostImageWriteFlushRequiredCalledThenTrueReturned) { + for (auto &revision : getRevisions()) { + ipVersion.revision = revision; + releaseHelper = ReleaseHelper::create(ipVersion); + ASSERT_NE(nullptr, releaseHelper); + EXPECT_TRUE(releaseHelper->isPostImageWriteFlushRequired()); + } +} + TEST_F(ReleaseHelper1256Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_12_57_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_57_tests.cpp index b62c36b3d4..e8825dc7f7 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_57_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_57_tests.cpp @@ -84,6 +84,15 @@ TEST_F(ReleaseHelper1257Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper1257Tests, whenIsPostImageWriteFlushRequiredCalledThenTrueReturned) { + for (auto &revision : getRevisions()) { + ipVersion.revision = revision; + releaseHelper = ReleaseHelper::create(ipVersion); + ASSERT_NE(nullptr, releaseHelper); + EXPECT_TRUE(releaseHelper->isPostImageWriteFlushRequired()); + } +} + TEST_F(ReleaseHelper1257Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_12_60_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_60_tests.cpp index 2a6c0ef759..36aa532ed1 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_60_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_60_tests.cpp @@ -74,6 +74,10 @@ TEST_F(ReleaseHelper1260Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper1260Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper1260Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_12_61_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_61_tests.cpp index 58c930582c..8a6173466c 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_61_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_61_tests.cpp @@ -73,6 +73,10 @@ TEST_F(ReleaseHelper1261Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper1261Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper1261Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_12_70_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_70_tests.cpp index f40ab33d92..a60ec2411c 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_70_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_70_tests.cpp @@ -86,6 +86,10 @@ TEST_F(ReleaseHelper1270Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper1270Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper1270Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_12_71_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_71_tests.cpp index 00fc9e43c2..091955252f 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_71_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_71_tests.cpp @@ -87,6 +87,10 @@ TEST_F(ReleaseHelper1271Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper1271Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper1271Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_12_74_tests.cpp b/shared/test/unit_test/release_helper/release_helper_12_74_tests.cpp index e8277bdfbc..a4c2a5442e 100644 --- a/shared/test/unit_test/release_helper/release_helper_12_74_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_12_74_tests.cpp @@ -82,6 +82,10 @@ TEST_F(ReleaseHelper1274Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper1274Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper1274Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_20_01_tests.cpp b/shared/test/unit_test/release_helper/release_helper_20_01_tests.cpp index f2df31d6f7..68ed53fae9 100644 --- a/shared/test/unit_test/release_helper/release_helper_20_01_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_20_01_tests.cpp @@ -80,6 +80,10 @@ TEST_F(ReleaseHelper2001Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper2001Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper2001Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_20_02_tests.cpp b/shared/test/unit_test/release_helper/release_helper_20_02_tests.cpp index 6de945f6e8..6157fa9e8c 100644 --- a/shared/test/unit_test/release_helper/release_helper_20_02_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_20_02_tests.cpp @@ -80,6 +80,10 @@ TEST_F(ReleaseHelper2002Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper2002Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper2002Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_20_04_tests.cpp b/shared/test/unit_test/release_helper/release_helper_20_04_tests.cpp index b6037987ef..da7fa0db47 100644 --- a/shared/test/unit_test/release_helper/release_helper_20_04_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_20_04_tests.cpp @@ -86,6 +86,10 @@ TEST_F(ReleaseHelper2004Tests, whenGettingNumThreadsPerEuThenCorrectValueIsRetur whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey(); } +TEST_F(ReleaseHelper2004Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper2004Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_30_00_tests.cpp b/shared/test/unit_test/release_helper/release_helper_30_00_tests.cpp index 62e4984d26..54374b0a92 100644 --- a/shared/test/unit_test/release_helper/release_helper_30_00_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_30_00_tests.cpp @@ -84,6 +84,10 @@ TEST_F(ReleaseHelper3000Tests, whenProgrammAdditionalStallPriorToBarrierWithTime whenProgrammAdditionalStallPriorToBarrierWithTimestampCalledThenFalseReturned(); } +TEST_F(ReleaseHelper3000Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper3000Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_30_01_tests.cpp b/shared/test/unit_test/release_helper/release_helper_30_01_tests.cpp index bbd801e614..06fa5db602 100644 --- a/shared/test/unit_test/release_helper/release_helper_30_01_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_30_01_tests.cpp @@ -84,6 +84,10 @@ TEST_F(ReleaseHelper3001Tests, whenProgrammAdditionalStallPriorToBarrierWithTime whenProgrammAdditionalStallPriorToBarrierWithTimestampCalledThenFalseReturned(); } +TEST_F(ReleaseHelper3001Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper3001Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_30_03_tests.cpp b/shared/test/unit_test/release_helper/release_helper_30_03_tests.cpp index f8bb6e2fdc..9c3f7b04ac 100644 --- a/shared/test/unit_test/release_helper/release_helper_30_03_tests.cpp +++ b/shared/test/unit_test/release_helper/release_helper_30_03_tests.cpp @@ -84,6 +84,10 @@ TEST_F(ReleaseHelper3003Tests, whenProgrammAdditionalStallPriorToBarrierWithTime whenProgrammAdditionalStallPriorToBarrierWithTimestampCalledThenFalseReturned(); } +TEST_F(ReleaseHelper3003Tests, whenIsPostImageWriteFlushRequiredCalledThenFalseReturned) { + whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); +} + TEST_F(ReleaseHelper3003Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) { for (auto &revision : getRevisions()) { ipVersion.revision = revision; diff --git a/shared/test/unit_test/release_helper/release_helper_tests_base.cpp b/shared/test/unit_test/release_helper/release_helper_tests_base.cpp index 227ca0dfc5..10e03958d4 100644 --- a/shared/test/unit_test/release_helper/release_helper_tests_base.cpp +++ b/shared/test/unit_test/release_helper/release_helper_tests_base.cpp @@ -189,4 +189,13 @@ void ReleaseHelperTestsBase::whenProgrammAdditionalStallPriorToBarrierWithTimest ASSERT_NE(nullptr, releaseHelper); EXPECT_FALSE(releaseHelper->programmAdditionalStallPriorToBarrierWithTimestamp()); } +} + +void ReleaseHelperTestsBase::whenIsPostImageWriteFlushRequiredCalledThenFalseReturned() { + for (auto &revision : getRevisions()) { + ipVersion.revision = revision; + releaseHelper = ReleaseHelper::create(ipVersion); + ASSERT_NE(nullptr, releaseHelper); + EXPECT_FALSE(releaseHelper->isPostImageWriteFlushRequired()); + } } \ No newline at end of file diff --git a/shared/test/unit_test/release_helper/release_helper_tests_base.h b/shared/test/unit_test/release_helper/release_helper_tests_base.h index fbab94566e..3555096ee0 100644 --- a/shared/test/unit_test/release_helper/release_helper_tests_base.h +++ b/shared/test/unit_test/release_helper/release_helper_tests_base.h @@ -36,6 +36,7 @@ struct ReleaseHelperTestsBase : public ::testing::Test { void whenGettingThreadsPerEuConfigsThenCorrectValueIsReturnedBasedOnNumThreadPerEu(); void whenIsBlitImageAllowedForDepthFormatCalledThenTrueReturned(); void whenProgrammAdditionalStallPriorToBarrierWithTimestampCalledThenFalseReturned(); + void whenIsPostImageWriteFlushRequiredCalledThenFalseReturned(); virtual std::vector getRevisions() = 0; std::unique_ptr releaseHelper; diff --git a/shared/test/unit_test/xe_hpg_core/excludes_xe_hpg_core.cpp b/shared/test/unit_test/xe_hpg_core/excludes_xe_hpg_core.cpp index d1134ad13c..4f7430bbaa 100644 --- a/shared/test/unit_test/xe_hpg_core/excludes_xe_hpg_core.cpp +++ b/shared/test/unit_test/xe_hpg_core/excludes_xe_hpg_core.cpp @@ -11,7 +11,6 @@ HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenSamplerStateWhenAdjustSamplerStat HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenAskedIfBlitterForImagesIsSupportedThenFalseIsReturned, IGFX_XE_HPG_CORE); HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenAskedIfTile64With3DSurfaceOnBCSIsSupportedThenTrueIsReturned, IGFX_XE_HPG_CORE); HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenIsSystolicModeConfigurabledThenFalseIsReturned, IGFX_XE_HPG_CORE); -HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenQueryIsPostImageWriteFlushRequiredThenFalseReturned, IGFX_XE_HPG_CORE); HWTEST_EXCLUDE_PRODUCT(CommandEncodeStatesTest, givenEventAddressWhenEncodeThenMocsFromGmmHelperIsSet, IGFX_XE_HPG_CORE); HWTEST_EXCLUDE_PRODUCT(XeHPAndLaterPreemptionTests, GivenDebuggerUsedWhenProgrammingStateSipThenStateSipIsAdded, IGFX_XE_HPG_CORE); HWTEST_EXCLUDE_PRODUCT(ComputeModeRequirements, givenComputeModeCmdSizeWhenLargeGrfModeChangeIsRequiredThenSCMCommandSizeIsCalculated, IGFX_XE_HPG_CORE); diff --git a/shared/test/unit_test/xe_hpg_core/test_product_helper_xe_hpg_core.cpp b/shared/test/unit_test/xe_hpg_core/test_product_helper_xe_hpg_core.cpp index 4b2c784794..6678f9f382 100644 --- a/shared/test/unit_test/xe_hpg_core/test_product_helper_xe_hpg_core.cpp +++ b/shared/test/unit_test/xe_hpg_core/test_product_helper_xe_hpg_core.cpp @@ -18,8 +18,4 @@ using XeHpgProductHelper = ProductHelperTest; XE_HPG_CORETEST_F(XeHpgProductHelper, givenProductHelperWhenIsSystolicModeConfigurabledThenTrueIsReturned) { EXPECT_TRUE(productHelper->isSystolicModeConfigurable(pInHwInfo)); -} - -XE_HPG_CORETEST_F(XeHpgProductHelper, givenProductHelperWhenQueryIsPostImageWriteFlushRequiredThenTrueIsReturned) { - EXPECT_TRUE(productHelper->isPostImageWriteFlushRequired()); -} +} \ No newline at end of file