From 1bcceb10710c06e3eaae762596e6b7120bc48847 Mon Sep 17 00:00:00 2001 From: Kamil Kopryk Date: Mon, 14 Nov 2022 17:52:33 +0000 Subject: [PATCH] Move hwHelper ownership to RootDeviceEnvironment 5/n Related-To: NEO-6853 Signed-off-by: Kamil Kopryk UseRootDeviceEnvironment getHelper for - isFenceAllocationRequired Move common implementation to pvc_and_later file. --- opencl/test/unit_test/fixtures/cl_device_fixture.cpp | 1 + .../xe_hpc_core/hw_helper_tests_xe_hpc_core.cpp | 12 ++++++------ .../command_stream/command_stream_receiver.cpp | 6 ++++-- shared/source/helpers/hw_helper_pvc_and_later.inl | 10 ++++++++++ shared/source/xe_hpc_core/hw_helper_xe_hpc_core.cpp | 10 ---------- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/opencl/test/unit_test/fixtures/cl_device_fixture.cpp b/opencl/test/unit_test/fixtures/cl_device_fixture.cpp index 862bf7cbaa..6c4dc11851 100644 --- a/opencl/test/unit_test/fixtures/cl_device_fixture.cpp +++ b/opencl/test/unit_test/fixtures/cl_device_fixture.cpp @@ -49,5 +49,6 @@ HelperType &ClDeviceFixture::getHelper() const { } template ProductHelper &ClDeviceFixture::getHelper() const; +template CoreHelper &ClDeviceFixture::getHelper() const; } // namespace NEO diff --git a/opencl/test/unit_test/xe_hpc_core/hw_helper_tests_xe_hpc_core.cpp b/opencl/test/unit_test/xe_hpc_core/hw_helper_tests_xe_hpc_core.cpp index dd351a9125..65b0957895 100644 --- a/opencl/test/unit_test/xe_hpc_core/hw_helper_tests_xe_hpc_core.cpp +++ b/opencl/test/unit_test/xe_hpc_core/hw_helper_tests_xe_hpc_core.cpp @@ -590,32 +590,32 @@ XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, givenHwHelperWhenAskedIfFenceAllocatio DebugManagerStateRestore dbgRestore; auto hwInfo = *defaultHwInfo; - auto &helper = HwHelper::get(renderCoreFamily); + auto &coreHelper = getHelper(); DebugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(-1); DebugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(-1); DebugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(-1); - EXPECT_TRUE(helper.isFenceAllocationRequired(hwInfo)); + EXPECT_TRUE(coreHelper.isFenceAllocationRequired(hwInfo)); DebugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0); DebugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0); DebugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0); - EXPECT_FALSE(helper.isFenceAllocationRequired(hwInfo)); + EXPECT_FALSE(coreHelper.isFenceAllocationRequired(hwInfo)); DebugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(1); DebugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0); DebugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0); - EXPECT_TRUE(helper.isFenceAllocationRequired(hwInfo)); + EXPECT_TRUE(coreHelper.isFenceAllocationRequired(hwInfo)); DebugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0); DebugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(1); DebugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(0); - EXPECT_TRUE(helper.isFenceAllocationRequired(hwInfo)); + EXPECT_TRUE(coreHelper.isFenceAllocationRequired(hwInfo)); DebugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.set(0); DebugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.set(0); DebugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.set(1); - EXPECT_TRUE(helper.isFenceAllocationRequired(hwInfo)); + EXPECT_TRUE(coreHelper.isFenceAllocationRequired(hwInfo)); } XE_HPC_CORETEST_F(HwHelperTestsXeHpcCore, givenDontProgramGlobalFenceAsMiMemFenceCommandInCommandStreamWhenGettingSizeForAdditionalSynchronizationThenCorrectValueIsReturned) { diff --git a/shared/source/command_stream/command_stream_receiver.cpp b/shared/source/command_stream/command_stream_receiver.cpp index e507c6bf83..1128d70b76 100644 --- a/shared/source/command_stream/command_stream_receiver.cpp +++ b/shared/source/command_stream/command_stream_receiver.cpp @@ -722,8 +722,10 @@ bool CommandStreamReceiver::createWorkPartitionAllocation(const Device &device) } bool CommandStreamReceiver::createGlobalFenceAllocation() { - auto hwInfo = executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo(); - if (!HwHelper::get(hwInfo->platform.eRenderCoreFamily).isFenceAllocationRequired(*hwInfo)) { + auto &rootDevicEnvironment = *executionEnvironment.rootDeviceEnvironments[rootDeviceIndex].get(); + auto &coreHelper = rootDevicEnvironment.getHelper(); + auto &hwInfo = *rootDevicEnvironment.getHardwareInfo(); + if (!coreHelper.isFenceAllocationRequired(hwInfo)) { return true; } diff --git a/shared/source/helpers/hw_helper_pvc_and_later.inl b/shared/source/helpers/hw_helper_pvc_and_later.inl index 1983f499cf..3dee40077e 100644 --- a/shared/source/helpers/hw_helper_pvc_and_later.inl +++ b/shared/source/helpers/hw_helper_pvc_and_later.inl @@ -10,6 +10,16 @@ namespace NEO { +template <> +bool HwHelperHw::isFenceAllocationRequired(const HardwareInfo &hwInfo) const { + if ((DebugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.get() == 0) && + (DebugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.get() == 0) && + (DebugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.get() == 0)) { + return false; + } + return true; +} + template <> bool HwHelperHw::isCpuImageTransferPreferred(const HardwareInfo &hwInfo) const { return !hwInfo.capabilityTable.supportsImages; diff --git a/shared/source/xe_hpc_core/hw_helper_xe_hpc_core.cpp b/shared/source/xe_hpc_core/hw_helper_xe_hpc_core.cpp index 0396628580..7bbd9a6090 100644 --- a/shared/source/xe_hpc_core/hw_helper_xe_hpc_core.cpp +++ b/shared/source/xe_hpc_core/hw_helper_xe_hpc_core.cpp @@ -125,16 +125,6 @@ uint32_t HwHelperHw::getMinimalSIMDSize() { return 16u; } -template <> -bool HwHelperHw::isFenceAllocationRequired(const HardwareInfo &hwInfo) const { - if ((DebugManager.flags.ProgramGlobalFenceAsMiMemFenceCommandInCommandStream.get() == 0) && - (DebugManager.flags.ProgramGlobalFenceAsPostSyncOperationInComputeWalker.get() == 0) && - (DebugManager.flags.ProgramGlobalFenceAsKernelInstructionInEUKernel.get() == 0)) { - return false; - } - return true; -} - template <> uint32_t HwHelperHw::getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const { if (l3enabled) {