mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Unify bindless debug flags
Change-Id: I6a9313722eed01b935707e93cad532adddcc78af Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
This commit is contained in:

committed by
sys_ocldev

parent
bf32740f97
commit
2ebee73e4b
@ -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;
|
||||
}
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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(
|
||||
|
@ -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);
|
||||
}
|
@ -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;
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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")
|
||||
|
@ -9,6 +9,6 @@
|
||||
namespace NEO {
|
||||
struct ApiSpecificConfig {
|
||||
static bool getHeapConfiguration();
|
||||
static bool getBindelssConfiguration();
|
||||
static bool getBindlessConfiguration();
|
||||
};
|
||||
} // namespace NEO
|
@ -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";
|
||||
|
@ -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 = {};
|
||||
|
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user