diff --git a/level_zero/core/source/helpers/api_specific_config_l0.cpp b/level_zero/core/source/helpers/api_specific_config_l0.cpp index 612bb6bc93..4a21762917 100644 --- a/level_zero/core/source/helpers/api_specific_config_l0.cpp +++ b/level_zero/core/source/helpers/api_specific_config_l0.cpp @@ -13,9 +13,9 @@ bool ApiSpecificConfig::getHeapConfiguration() { return DebugManager.flags.UseExternalAllocatorForSshAndDsh.get(); } -bool ApiSpecificConfig::getBindelssConfiguration() { - if (DebugManager.flags.UseBindlessBuiltins.get() != -1) { - return DebugManager.flags.UseBindlessBuiltins.get(); +bool ApiSpecificConfig::getBindlessConfiguration() { + if (DebugManager.flags.UseBindlessMode.get() != -1) { + return DebugManager.flags.UseBindlessMode.get(); } else { return false; } diff --git a/level_zero/core/test/unit_tests/sources/builtin/built_in_tests_l0.cpp b/level_zero/core/test/unit_tests/sources/builtin/built_in_tests_l0.cpp index 36aabbc775..1e45de1c2b 100644 --- a/level_zero/core/test/unit_tests/sources/builtin/built_in_tests_l0.cpp +++ b/level_zero/core/test/unit_tests/sources/builtin/built_in_tests_l0.cpp @@ -19,7 +19,7 @@ using namespace NEO; TEST(BuiltInTestsL0, givenUseBindlessBuiltinInApiDependentModeWhenBinExtensionPassedThenNameHasBindfulPrefix) { DebugManagerStateRestore dbgRestorer; - DebugManager.flags.UseBindlessBuiltins.set(-1); + DebugManager.flags.UseBindlessMode.set(-1); EBuiltInOps::Type builtin = EBuiltInOps::CopyBufferToBuffer; const std::string extension = ".bin"; const std::string platformName = "platformName"; diff --git a/opencl/source/helpers/api_specific_config_ocl.cpp b/opencl/source/helpers/api_specific_config_ocl.cpp index cbd86c704d..2eb0d8c69e 100644 --- a/opencl/source/helpers/api_specific_config_ocl.cpp +++ b/opencl/source/helpers/api_specific_config_ocl.cpp @@ -12,9 +12,9 @@ namespace NEO { bool ApiSpecificConfig::getHeapConfiguration() { return false; } -bool ApiSpecificConfig::getBindelssConfiguration() { - if (DebugManager.flags.UseBindlessBuiltins.get() != -1) { - return DebugManager.flags.UseBindlessBuiltins.get(); +bool ApiSpecificConfig::getBindlessConfiguration() { + if (DebugManager.flags.UseBindlessMode.get() != -1) { + return DebugManager.flags.UseBindlessMode.get(); } else { return false; } diff --git a/opencl/source/kernel/kernel.cpp b/opencl/source/kernel/kernel.cpp index afb0dcbab2..e56157b0d6 100644 --- a/opencl/source/kernel/kernel.cpp +++ b/opencl/source/kernel/kernel.cpp @@ -12,6 +12,7 @@ #include "shared/source/debug_settings/debug_settings_manager.h" #include "shared/source/gmm_helper/gmm_helper.h" #include "shared/source/helpers/aligned_memory.h" +#include "shared/source/helpers/api_specific_config.h" #include "shared/source/helpers/basic_math.h" #include "shared/source/helpers/debug_helpers.h" #include "shared/source/helpers/get_info.h" @@ -2457,17 +2458,15 @@ uint64_t Kernel::getKernelStartOffset( } void Kernel::patchBindlessSurfaceStateOffsets(const size_t sshOffset) { - const bool bindlessBuffers = DebugManager.flags.UseBindlessBuffers.get(); - const bool bindlessImages = DebugManager.flags.UseBindlessImages.get(); - const bool bindlessUsed = (bindlessBuffers || bindlessImages) && !isBuiltIn; + const bool bindlessUsed = ApiSpecificConfig::getBindlessConfiguration(); if (bindlessUsed) { auto &hardwareInfo = getDevice().getHardwareInfo(); auto &hwHelper = HwHelper::get(hardwareInfo.platform.eRenderCoreFamily); for (size_t i = 0; i < kernelInfo.kernelArgInfo.size(); i++) { - if ((kernelInfo.kernelArgInfo[i].isBuffer && bindlessBuffers) || - (kernelInfo.kernelArgInfo[i].isImage && bindlessImages)) { + if ((kernelInfo.kernelArgInfo[i].isBuffer) || + (kernelInfo.kernelArgInfo[i].isImage)) { auto patchLocation = ptrOffset(getCrossThreadData(), kernelInfo.kernelArgInfo[i].kernelArgPatchInfoVector[0].crossthreadOffset); diff --git a/opencl/source/program/program.cpp b/opencl/source/program/program.cpp index be8f0f8953..927ec074ac 100644 --- a/opencl/source/program/program.cpp +++ b/opencl/source/program/program.cpp @@ -13,6 +13,7 @@ #include "shared/source/device_binary_format/device_binary_formats.h" #include "shared/source/device_binary_format/elf/elf_encoder.h" #include "shared/source/device_binary_format/elf/ocl_elf.h" +#include "shared/source/helpers/api_specific_config.h" #include "shared/source/helpers/compiler_options_parser.h" #include "shared/source/helpers/debug_helpers.h" #include "shared/source/helpers/hw_helper.h" @@ -83,11 +84,8 @@ Program::Program(ExecutionEnvironment &executionEnvironment, Context *context, b CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::greaterThan4gbBuffersRequired); } - if (DebugManager.flags.UseBindlessBuffers.get()) { + if (ApiSpecificConfig::getBindlessConfiguration()) { CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessBuffers); - } - - if (DebugManager.flags.UseBindlessImages.get()) { CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessImages); } diff --git a/opencl/test/unit_test/built_ins/built_in_tests_ocl.cpp b/opencl/test/unit_test/built_ins/built_in_tests_ocl.cpp index 621e3c00b4..ac091bb865 100644 --- a/opencl/test/unit_test/built_ins/built_in_tests_ocl.cpp +++ b/opencl/test/unit_test/built_ins/built_in_tests_ocl.cpp @@ -19,7 +19,7 @@ using namespace NEO; TEST(BuiltInTestsOcl, givenUseBindlessBuiltinInApiDependentModeWhenBinExtensionPassedThenNameHasBindfulPrefix) { DebugManagerStateRestore dbgRestorer; - DebugManager.flags.UseBindlessBuiltins.set(-1); + DebugManager.flags.UseBindlessMode.set(-1); EBuiltInOps::Type builtin = EBuiltInOps::CopyBufferToBuffer; const std::string extension = ".bin"; const std::string platformName = "skl"; diff --git a/opencl/test/unit_test/fixtures/simple_arg_kernel_fixture.h b/opencl/test/unit_test/fixtures/simple_arg_kernel_fixture.h index 3a2bb76b25..b17d4ca908 100644 --- a/opencl/test/unit_test/fixtures/simple_arg_kernel_fixture.h +++ b/opencl/test/unit_test/fixtures/simple_arg_kernel_fixture.h @@ -298,8 +298,7 @@ class BindlessKernelFixture : public ProgramFixture { } void createKernel(const std::string &programName, const std::string &kernelName) { - DebugManager.flags.UseBindlessBuffers.set(true); - DebugManager.flags.UseBindlessImages.set(true); + DebugManager.flags.UseBindlessMode.set(1); cl_device_id deviceId = deviceCl; cl_context clContext = contextCl; CreateProgramFromBinary( diff --git a/opencl/test/unit_test/kernel/kernel_arg_buffer_tests.cpp b/opencl/test/unit_test/kernel/kernel_arg_buffer_tests.cpp index 56e5a859dd..f3fb4134ed 100644 --- a/opencl/test/unit_test/kernel/kernel_arg_buffer_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_arg_buffer_tests.cpp @@ -204,7 +204,7 @@ TEST_F(KernelArgBufferTest, givenNoCacheFlushBufferWhenSettingAsArgThenNotExpect HWTEST_F(KernelArgBufferTest, givenUsedBindlessBuffersWhenPatchingSurfaceStateOffsetsThenCorrectOffsetIsPatchedInCrossThreadData) { using DataPortBindlessSurfaceExtendedMessageDescriptor = typename FamilyType::DataPortBindlessSurfaceExtendedMessageDescriptor; DebugManagerStateRestore restorer; - DebugManager.flags.UseBindlessBuffers.set(1); + DebugManager.flags.UseBindlessMode.set(1); pKernelInfo->usesSsh = true; pKernelInfo->requiresSshForBuffers = true; @@ -232,7 +232,7 @@ HWTEST_F(KernelArgBufferTest, givenUsedBindlessBuffersWhenPatchingSurfaceStateOf TEST_F(KernelArgBufferTest, givenUsedBindlessBuffersAndNonBufferArgWhenPatchingSurfaceStateOffsetsThenCrossThreadDataIsNotPatched) { DebugManagerStateRestore restorer; - DebugManager.flags.UseBindlessBuffers.set(1); + DebugManager.flags.UseBindlessMode.set(1); pKernelInfo->usesSsh = true; pKernelInfo->requiresSshForBuffers = true; @@ -251,8 +251,7 @@ TEST_F(KernelArgBufferTest, givenUsedBindlessBuffersAndNonBufferArgWhenPatchingS TEST_F(KernelArgBufferTest, givenNotUsedBindlessBuffersAndBufferArgWhenPatchingSurfaceStateOffsetsThenCrossThreadDataIsNotPatched) { DebugManagerStateRestore restorer; - DebugManager.flags.UseBindlessBuffers.set(false); - DebugManager.flags.UseBindlessImages.set(true); + DebugManager.flags.UseBindlessMode.set(0); pKernelInfo->usesSsh = true; pKernelInfo->requiresSshForBuffers = true; @@ -269,10 +268,10 @@ TEST_F(KernelArgBufferTest, givenNotUsedBindlessBuffersAndBufferArgWhenPatchingS EXPECT_EQ(0xdeadu, *patchLocation); } -HWTEST_F(KernelArgBufferTest, givenUsedBindlessBuffersAndBuiltinKernelWhenPatchingSurfaceStateOffsetsThenOffsetIsNotPatched) { +HWTEST_F(KernelArgBufferTest, givenUsedBindlessBuffersAndBuiltinKernelWhenPatchingSurfaceStateOffsetsThenOffsetIsPatched) { using DataPortBindlessSurfaceExtendedMessageDescriptor = typename FamilyType::DataPortBindlessSurfaceExtendedMessageDescriptor; DebugManagerStateRestore restorer; - DebugManager.flags.UseBindlessBuffers.set(1); + DebugManager.flags.UseBindlessMode.set(1); pKernelInfo->usesSsh = true; pKernelInfo->requiresSshForBuffers = true; @@ -288,5 +287,5 @@ HWTEST_F(KernelArgBufferTest, givenUsedBindlessBuffersAndBuiltinKernelWhenPatchi uint32_t sshOffset = 0x1000; pKernel->patchBindlessSurfaceStateOffsets(sshOffset); - EXPECT_EQ(0xdeadu, *patchLocation); + EXPECT_NE(0xdeadu, *patchLocation); } \ No newline at end of file diff --git a/opencl/test/unit_test/kernel/kernel_image_arg_tests.cpp b/opencl/test/unit_test/kernel/kernel_image_arg_tests.cpp index 6b08fc2667..5ba9d3ecdf 100644 --- a/opencl/test/unit_test/kernel/kernel_image_arg_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_image_arg_tests.cpp @@ -348,7 +348,7 @@ TEST_F(KernelImageArgTest, givenNoCacheFlushImageWhenSettingAsArgThenExpectAlloc HWTEST_F(KernelImageArgTest, givenUsedBindlessImagesWhenPatchingSurfaceStateOffsetsThenCorrectOffsetIsPatchedInCrossThreadData) { using DataPortBindlessSurfaceExtendedMessageDescriptor = typename FamilyType::DataPortBindlessSurfaceExtendedMessageDescriptor; DebugManagerStateRestore restorer; - DebugManager.flags.UseBindlessImages.set(1); + DebugManager.flags.UseBindlessMode.set(1); pKernelInfo->usesSsh = true; @@ -381,7 +381,7 @@ HWTEST_F(KernelImageArgTest, givenUsedBindlessImagesWhenPatchingSurfaceStateOffs TEST_F(KernelImageArgTest, givenUsedBindlessImagesAndNonImageArgWhenPatchingSurfaceStateOffsetsThenCrossThreadDataIsNotPatched) { DebugManagerStateRestore restorer; - DebugManager.flags.UseBindlessImages.set(1); + DebugManager.flags.UseBindlessMode.set(1); pKernelInfo->usesSsh = true; @@ -406,8 +406,7 @@ TEST_F(KernelImageArgTest, givenUsedBindlessImagesAndNonImageArgWhenPatchingSurf TEST_F(KernelImageArgTest, givenNotUsedBindlessImagesAndImageArgWhenPatchingSurfaceStateOffsetsThenCrossThreadDataIsNotPatched) { DebugManagerStateRestore restorer; - DebugManager.flags.UseBindlessImages.set(false); - DebugManager.flags.UseBindlessBuffers.set(true); + DebugManager.flags.UseBindlessMode.set(0); pKernelInfo->usesSsh = true; diff --git a/opencl/test/unit_test/program/program_tests.cpp b/opencl/test/unit_test/program/program_tests.cpp index 8278233c80..cebb52e9ee 100644 --- a/opencl/test/unit_test/program/program_tests.cpp +++ b/opencl/test/unit_test/program/program_tests.cpp @@ -1809,31 +1809,15 @@ TEST_F(ProgramTests, WhenCreatingProgramThenBindlessIsEnabledOnlyIfDebugFlagIsEn DebugManagerStateRestore restorer; { - EXPECT_FALSE(DebugManager.flags.UseBindlessBuffers.get()); - EXPECT_FALSE(DebugManager.flags.UseBindlessImages.get()); + + DebugManager.flags.UseBindlessMode.set(0); MockProgram programNoBindless(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); EXPECT_FALSE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessBuffers)) << programNoBindless.getInternalOptions(); EXPECT_FALSE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessImages)) << programNoBindless.getInternalOptions(); } - { - DebugManager.flags.UseBindlessBuffers.set(true); - MockProgram programNoBindless(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); - EXPECT_TRUE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessBuffers)) << programNoBindless.getInternalOptions(); - EXPECT_FALSE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessImages)) << programNoBindless.getInternalOptions(); - } - { - DebugManager.flags.UseBindlessBuffers.set(false); - DebugManager.flags.UseBindlessImages.set(true); - MockProgram programNoBindless(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); - EXPECT_FALSE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessBuffers)) << programNoBindless.getInternalOptions(); - EXPECT_TRUE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessImages)) << programNoBindless.getInternalOptions(); - } - - { - DebugManager.flags.UseBindlessBuffers.set(true); - DebugManager.flags.UseBindlessImages.set(true); + DebugManager.flags.UseBindlessMode.set(1); MockProgram programNoBindless(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); EXPECT_TRUE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessBuffers)) << programNoBindless.getInternalOptions(); EXPECT_TRUE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessImages)) << programNoBindless.getInternalOptions(); diff --git a/opencl/test/unit_test/test_files/igdrcl.config b/opencl/test/unit_test/test_files/igdrcl.config index fd10b4bf14..d34fb6768d 100644 --- a/opencl/test/unit_test/test_files/igdrcl.config +++ b/opencl/test/unit_test/test_files/igdrcl.config @@ -118,8 +118,6 @@ AddClGlSharing = 0 EnableFormatQuery = 0 EnableFreeMemory = 0 ForceSamplerLowFilteringPrecision = 0 -UseBindlessBuffers = 0 -UseBindlessImages = 0 MakeAllBuffersResident = 0 EnableIntelVme = -1 EnableIntelAdvancedVme = -1 @@ -200,4 +198,4 @@ ProvideVerboseImplicitFlush = false PauseOnGpuMode = -1 PrintTagAllocationAddress = 0 DoNotFlushCaches = false -UseBindlessBuiltins = -1 +UseBindlessMode = -1 diff --git a/shared/source/built_ins/built_ins_storage.cpp b/shared/source/built_ins/built_ins_storage.cpp index be8f92b2e7..e2acb4278f 100644 --- a/shared/source/built_ins/built_ins_storage.cpp +++ b/shared/source/built_ins/built_ins_storage.cpp @@ -82,7 +82,7 @@ std::string createBuiltinResourceName(EBuiltInOps::Type builtin, const std::stri ret += "_"; } if (extension == ".bin") { - ret += ApiSpecificConfig::getBindelssConfiguration() ? "bindless_" : "bindful_"; + ret += ApiSpecificConfig::getBindlessConfiguration() ? "bindless_" : "bindful_"; } ret += getBuiltinAsString(builtin); diff --git a/shared/source/debug_settings/debug_variables_base.inl b/shared/source/debug_settings/debug_variables_base.inl index 1f24256fcd..dce63dbfd6 100644 --- a/shared/source/debug_settings/debug_variables_base.inl +++ b/shared/source/debug_settings/debug_variables_base.inl @@ -164,8 +164,6 @@ DECLARE_DEBUG_VARIABLE(bool, AddClGlSharing, false, "Add cl-gl extension") DECLARE_DEBUG_VARIABLE(bool, EnableFormatQuery, false, "Enable sharing format querying") DECLARE_DEBUG_VARIABLE(bool, EnableFreeMemory, false, "Enable freeMemory in memory manager") DECLARE_DEBUG_VARIABLE(bool, ForceSamplerLowFilteringPrecision, false, "Force Low Filtering Precision Sampler mode") -DECLARE_DEBUG_VARIABLE(bool, UseBindlessBuffers, false, "Force compiler to use bindless buffer addressing instead of stateful one") -DECLARE_DEBUG_VARIABLE(bool, UseBindlessImages, false, "Force compiler to use bindless image addressing instead of stateful one") DECLARE_DEBUG_VARIABLE(int32_t, EnableGemCloseWorker, -1, "Use asynchronous gem object closing, -1:default, 0:disable, 1:enable") DECLARE_DEBUG_VARIABLE(int32_t, EnableIntelVme, -1, "-1: default, 0: disabled, 1: Enables cl_intel_motion_estimation extension") DECLARE_DEBUG_VARIABLE(int32_t, EnableIntelAdvancedVme, -1, "-1: default, 0: disabled, 1: Enables cl_intel_advanced_motion_estimation extension") @@ -194,7 +192,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, ForceFineGrainedSVMSupport, -1, "-1: default, 0: DECLARE_DEBUG_VARIABLE(int32_t, ForceDeviceEnqueueSupport, -1, "-1: default, 0: disabled, 1: enabled") DECLARE_DEBUG_VARIABLE(int32_t, ForcePipeSupport, -1, "-1: default, 0: disabled, 1: enabled") DECLARE_DEBUG_VARIABLE(int32_t, UseAsyncDrmExec, -1, "-1: default, 0: Disabled 1: Enabled. If enabled, pass EXEC_OBJECT_ASYNC to exec ioctl.") -DECLARE_DEBUG_VARIABLE(int32_t, UseBindlessBuiltins, -1, "Use precompiled builtins in bindless mode, -1: api dependent, 0: disabled, 1: enabled") +DECLARE_DEBUG_VARIABLE(int32_t, UseBindlessMode, -1, "Use precompiled builtins in bindless mode, -1: api dependent, 0: disabled, 1: enabled") /*DRIVER TOGGLES*/ DECLARE_DEBUG_VARIABLE(int32_t, ForceOCLVersion, 0, "Force specific OpenCL API version") diff --git a/shared/source/helpers/api_specific_config.h b/shared/source/helpers/api_specific_config.h index 259355f32b..2a9f555b46 100644 --- a/shared/source/helpers/api_specific_config.h +++ b/shared/source/helpers/api_specific_config.h @@ -9,6 +9,6 @@ namespace NEO { struct ApiSpecificConfig { static bool getHeapConfiguration(); - static bool getBindelssConfiguration(); + static bool getBindlessConfiguration(); }; } // namespace NEO \ No newline at end of file diff --git a/shared/test/unit_test/built_ins/built_in_tests_shared.inl b/shared/test/unit_test/built_ins/built_in_tests_shared.inl index b16f0512bb..6e31c9e30a 100644 --- a/shared/test/unit_test/built_ins/built_in_tests_shared.inl +++ b/shared/test/unit_test/built_ins/built_in_tests_shared.inl @@ -18,7 +18,7 @@ namespace NEO { void givenUseBindlessBuiltinDisabledWhenBinExtensionPassedThenNameHasBindfulPrefix() { DebugManagerStateRestore dbgRestorer; - DebugManager.flags.UseBindlessBuiltins.set(0); + DebugManager.flags.UseBindlessMode.set(0); EBuiltInOps::Type builtin = EBuiltInOps::CopyBufferToBuffer; const std::string extension = ".bin"; const std::string platformName = "platformName"; @@ -45,7 +45,7 @@ void givenUseBindlessBuiltinDisabledWhenBinExtensionPassedThenNameHasBindfulPref void givenUseBindlessBuiltinEnabledWhenBinExtensionPassedThenNameHasBindlessPrefix() { DebugManagerStateRestore dbgRestorer; - DebugManager.flags.UseBindlessBuiltins.set(1); + DebugManager.flags.UseBindlessMode.set(1); EBuiltInOps::Type builtin = EBuiltInOps::CopyBufferToBuffer; const std::string extension = ".bin"; const std::string platformName = "skl"; diff --git a/shared/test/unit_test/gen8/state_base_address_tests_gen8.cpp b/shared/test/unit_test/gen8/state_base_address_tests_gen8.cpp index 3c60e68b27..dc65c8df6f 100644 --- a/shared/test/unit_test/gen8/state_base_address_tests_gen8.cpp +++ b/shared/test/unit_test/gen8/state_base_address_tests_gen8.cpp @@ -10,7 +10,7 @@ BDWTEST_F(SBATest, givenUsedBindlessBuffersWhenAppendStateBaseAddressParametersIsCalledThenSBACmdHasNotBindingSurfaceStateProgrammed) { using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS; - DebugManager.flags.UseBindlessBuffers.set(1); + DebugManager.flags.UseBindlessMode.set(1); STATE_BASE_ADDRESS stateBaseAddress = {}; STATE_BASE_ADDRESS stateBaseAddressReference = {}; diff --git a/shared/test/unit_test/helpers/api_specific_config_shared_tests.cpp b/shared/test/unit_test/helpers/api_specific_config_shared_tests.cpp index 044cc9e897..9b2393ebf8 100644 --- a/shared/test/unit_test/helpers/api_specific_config_shared_tests.cpp +++ b/shared/test/unit_test/helpers/api_specific_config_shared_tests.cpp @@ -12,9 +12,9 @@ namespace NEO { bool ApiSpecificConfig::getHeapConfiguration() { return DebugManager.flags.UseExternalAllocatorForSshAndDsh.get(); } -bool ApiSpecificConfig::getBindelssConfiguration() { - if (DebugManager.flags.UseBindlessBuiltins.get() != -1) { - return DebugManager.flags.UseBindlessBuiltins.get(); +bool ApiSpecificConfig::getBindlessConfiguration() { + if (DebugManager.flags.UseBindlessMode.get() != -1) { + return DebugManager.flags.UseBindlessMode.get(); } else { return false; }