From d2462ff8fb52c7bf56ecde14eb3dfedb942499a1 Mon Sep 17 00:00:00 2001 From: Filip Hazubski Date: Fri, 18 Mar 2022 12:12:26 +0000 Subject: [PATCH] Add debug flag to control ISA allocation padding Signed-off-by: Filip Hazubski --- opencl/test/unit_test/helpers/hw_helper_tests.cpp | 11 +++++++++++ opencl/test/unit_test/test_files/igdrcl.config | 1 + shared/source/debug_settings/debug_variables_base.inl | 5 +++-- shared/source/helpers/hw_helper_base.inl | 3 +++ shared/source/xe_hpc_core/hw_helper_xe_hpc_core.cpp | 5 ++++- .../xe_hpc_core/hw_helper_xe_hpc_core_tests.cpp | 2 +- 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/opencl/test/unit_test/helpers/hw_helper_tests.cpp b/opencl/test/unit_test/helpers/hw_helper_tests.cpp index cb566e9960..54328a20af 100644 --- a/opencl/test/unit_test/helpers/hw_helper_tests.cpp +++ b/opencl/test/unit_test/helpers/hw_helper_tests.cpp @@ -88,6 +88,17 @@ HWTEST_F(HwHelperTest, givenHwHelperWhenGettingISAPaddingThenCorrectValueIsRetur EXPECT_EQ(hwHelper.getPaddingForISAAllocation(), 512u); } +HWTEST_F(HwHelperTest, givenForceExtendedKernelIsaSizeSetWhenGettingISAPaddingThenCorrectValueIsReturned) { + DebugManagerStateRestore restore; + auto &hwHelper = HwHelper::get(pDevice->getHardwareInfo().platform.eRenderCoreFamily); + + auto defaultPadding = hwHelper.getPaddingForISAAllocation(); + for (int32_t valueToTest : {0, 1, 2, 10}) { + DebugManager.flags.ForceExtendedKernelIsaSize.set(valueToTest); + EXPECT_EQ(hwHelper.getPaddingForISAAllocation(), defaultPadding + MemoryConstants::pageSize * valueToTest); + } +} + HWTEST_F(HwHelperTest, WhenSettingRenderSurfaceStateForBufferThenL1CachePolicyIsSet) { using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE; using SURFACE_TYPE = typename RENDER_SURFACE_STATE::SURFACE_TYPE; diff --git a/opencl/test/unit_test/test_files/igdrcl.config b/opencl/test/unit_test/test_files/igdrcl.config index c741dd888f..6f733f327a 100644 --- a/opencl/test/unit_test/test_files/igdrcl.config +++ b/opencl/test/unit_test/test_files/igdrcl.config @@ -378,6 +378,7 @@ ExperimentalEnableSourceLevelDebugger = 0 Force2dImageAsArray = -1 ForceExtendedBufferSize = -1 ForceExtendedUSMBufferSize = -1 +ForceExtendedKernelIsaSize = -1 MakeIndirectAllocationsResidentAsPack = -1 MakeEachAllocationResident = -1 AssignBCSAtEnqueue = -1 diff --git a/shared/source/debug_settings/debug_variables_base.inl b/shared/source/debug_settings/debug_variables_base.inl index c6b8ab0347..a368442b2b 100644 --- a/shared/source/debug_settings/debug_variables_base.inl +++ b/shared/source/debug_settings/debug_variables_base.inl @@ -179,8 +179,9 @@ DECLARE_DEBUG_VARIABLE(int32_t, ClosNumCacheWays, -1, "-1: default, >= 0 Number DECLARE_DEBUG_VARIABLE(int32_t, EngineUsageHint, -1, "-1: default, >=0: engine usage value to use when creating command queue on user selected engine") DECLARE_DEBUG_VARIABLE(int32_t, ForceBcsEngineIndex, -1, "-1: default, >=0 Copy Engine index") DECLARE_DEBUG_VARIABLE(int32_t, Force2dImageAsArray, -1, "-1: default, 0: WA Disabled, 1: Forces surface state of 2dImage to array") -DECLARE_DEBUG_VARIABLE(int32_t, ForceExtendedBufferSize, -1, "-1: default, 0: disabled, >=1: Forces extended buffer size by specify pageSize number in clCreateBuffer, clCreateBufferWithProperties and clCreateBufferWithPropertiesINTEL calls") -DECLARE_DEBUG_VARIABLE(int32_t, ForceExtendedUSMBufferSize, -1, "-1: default, 0: disabled, >=1: Forces extended buffer size by specify pageSize number in USM calls") +DECLARE_DEBUG_VARIABLE(int32_t, ForceExtendedBufferSize, -1, "-1: default, 0: disabled, >=1: Forces extended buffer size by specified pageSize number in clCreateBuffer, clCreateBufferWithProperties and clCreateBufferWithPropertiesINTEL calls") +DECLARE_DEBUG_VARIABLE(int32_t, ForceExtendedUSMBufferSize, -1, "-1: default, 0: disabled, >=1: Forces extended buffer size by specified pageSize number in USM calls") +DECLARE_DEBUG_VARIABLE(int32_t, ForceExtendedKernelIsaSize, -1, "-1: default, 0: disabled, >=1: Forces extended kernel isa size by specified pageSize number") DECLARE_DEBUG_VARIABLE(int32_t, ForceSimdMessageSizeInWalker, -1, "-1: default, >=0 Program given value in Walker command for SIMD size") DECLARE_DEBUG_VARIABLE(int32_t, EnableRecoverablePageFaults, -1, "-1: default - ignore, 0: disable, 1: enable recoverable page faults on all VMs (on faultable hardware)") DECLARE_DEBUG_VARIABLE(int32_t, EnableImplicitMigrationOnFaultableHardware, -1, "-1: default - ignore, 0: disable, 1: enable implicit migration on faultable hardware (for all allocations)") diff --git a/shared/source/helpers/hw_helper_base.inl b/shared/source/helpers/hw_helper_base.inl index dedfe08e80..21620492ed 100644 --- a/shared/source/helpers/hw_helper_base.inl +++ b/shared/source/helpers/hw_helper_base.inl @@ -74,6 +74,9 @@ size_t HwHelperHw::getMaxBarrierRegisterPerSlice() const { template size_t HwHelperHw::getPaddingForISAAllocation() const { + if (DebugManager.flags.ForceExtendedKernelIsaSize.get() >= 1) { + return 512 + (MemoryConstants::pageSize * DebugManager.flags.ForceExtendedKernelIsaSize.get()); + } return 512; } 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 29a83c1e05..c426815e74 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 @@ -167,7 +167,10 @@ uint32_t HwHelperHw::getMaxNumSamplers() const { template <> size_t HwHelperHw::getPaddingForISAAllocation() const { - return 3584; + if (DebugManager.flags.ForceExtendedKernelIsaSize.get() >= 1) { + return 0xE00 + (MemoryConstants::pageSize * DebugManager.flags.ForceExtendedKernelIsaSize.get()); + } + return 0xE00; } template <> diff --git a/shared/test/unit_test/xe_hpc_core/hw_helper_xe_hpc_core_tests.cpp b/shared/test/unit_test/xe_hpc_core/hw_helper_xe_hpc_core_tests.cpp index 1d550a89f2..f642dcc540 100644 --- a/shared/test/unit_test/xe_hpc_core/hw_helper_xe_hpc_core_tests.cpp +++ b/shared/test/unit_test/xe_hpc_core/hw_helper_xe_hpc_core_tests.cpp @@ -56,7 +56,7 @@ XE_HPC_CORETEST_F(HwHelperXeHpcCoreTest, WhenGettingIsCpuImageTransferPreferredT XE_HPC_CORETEST_F(HwHelperXeHpcCoreTest, givenHwHelperWhenGettingISAPaddingThenCorrectValueIsReturned) { auto &hwHelper = NEO::HwHelper::get(defaultHwInfo->platform.eRenderCoreFamily); - EXPECT_EQ(hwHelper.getPaddingForISAAllocation(), 3584u); + EXPECT_EQ(hwHelper.getPaddingForISAAllocation(), 0xE00u); } XE_HPC_CORETEST_F(HwHelperXeHpcCoreTest, givenHwHelperWhenGettingIfRevisionSpecificBinaryBuiltinIsRequiredThenTrueIsReturned) {