From 6d87dccd03894eed2dfab31e258dd405863a3fcc Mon Sep 17 00:00:00 2001 From: Mateusz Hoppe Date: Fri, 10 Dec 2021 10:49:05 +0000 Subject: [PATCH] Add debug variable to enable source level debugger - new flag ExperimentalEnableSourceLevelDebugger that allows communication with debugger library Related-To: NEO-6514 Signed-off-by: Mateusz Hoppe --- .../source_level_debugger_tests.cpp | 14 ++++++++++++++ opencl/test/unit_test/test_files/igdrcl.config | 3 ++- .../source/debug_settings/debug_variables_base.inl | 1 + shared/source/debugger/debugger.cpp | 2 +- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/opencl/test/unit_test/source_level_debugger/source_level_debugger_tests.cpp b/opencl/test/unit_test/source_level_debugger/source_level_debugger_tests.cpp index 39e934a1e5..bbbd5bd415 100644 --- a/opencl/test/unit_test/source_level_debugger/source_level_debugger_tests.cpp +++ b/opencl/test/unit_test/source_level_debugger/source_level_debugger_tests.cpp @@ -843,3 +843,17 @@ TEST(SourceLevelDebugger, givenDebugVarDumpElfWhenElfFileExistsWhileNotifyingDeb std::remove(fileName.c_str()); std::remove(fileName2.c_str()); } + +TEST(SourceLevelDebugger, givenDebuggerLibraryAvailableAndExperimentalEnableSourceLevelDebuggerThenDebuggerIsCreated) { + DebugManagerStateRestore stateRestore; + DebuggerLibraryRestorer restorer; + DebuggerLibrary::setDebuggerActive(true); + DebuggerLibrary::setLibraryAvailable(true); + + DebugManager.flags.ExperimentalEnableSourceLevelDebugger.set(1); + + auto hwInfo = *defaultHwInfo; + auto debugger = std::unique_ptr(Debugger::create(&hwInfo)); + ASSERT_NE(nullptr, debugger.get()); + EXPECT_TRUE(debugger->isLegacy()); +} \ No newline at end of file diff --git a/opencl/test/unit_test/test_files/igdrcl.config b/opencl/test/unit_test/test_files/igdrcl.config index 88559332c0..f827e023ac 100644 --- a/opencl/test/unit_test/test_files/igdrcl.config +++ b/opencl/test/unit_test/test_files/igdrcl.config @@ -363,4 +363,5 @@ EngineUsageHint = -1 AddStatePrefetchCmdToMemoryPrefetchAPI = -1 UpdateCrossThreadDataSize = 0 ForceBcsEngineIndex = -1 -ResolveDependenciesViaPipeControls = -1 \ No newline at end of file +ResolveDependenciesViaPipeControls = -1 +ExperimentalEnableSourceLevelDebugger = 0 \ No newline at end of file diff --git a/shared/source/debug_settings/debug_variables_base.inl b/shared/source/debug_settings/debug_variables_base.inl index 9048aa6d32..a26ebd7683 100644 --- a/shared/source/debug_settings/debug_variables_base.inl +++ b/shared/source/debug_settings/debug_variables_base.inl @@ -343,6 +343,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, AddStatePrefetchCmdToMemoryPrefetchAPI, -1, "Add DECLARE_DEBUG_VARIABLE(int32_t, ExperimentalSetWalkerPartitionCount, 0, "Experimental implementation: Set number of COMPUTE_WALKERs for a given Partition Type, 0 - do not set the feature.") DECLARE_DEBUG_VARIABLE(int32_t, ExperimentalSetWalkerPartitionType, -1, "Experimental implementation: Set COMPUTE_WALKER Partition Type. Valid values for types from 1 to 3") DECLARE_DEBUG_VARIABLE(int32_t, ExperimentalEnableCustomLocalMemoryAlignment, 0, "Align local memory allocations to a given value. Works only with allocations at least as big as the value. 0: no effect, 2097152: 2 megabytes, 1073741824: 1 gigabyte") +DECLARE_DEBUG_VARIABLE(bool, ExperimentalEnableSourceLevelDebugger, false, "Experimentally enable source level debugger.") /*DRIVER TOGGLES*/ DECLARE_DEBUG_VARIABLE(int32_t, ForceOCLVersion, 0, "Force specific OpenCL API version") diff --git a/shared/source/debugger/debugger.cpp b/shared/source/debugger/debugger.cpp index dee6ebb542..4033a39160 100644 --- a/shared/source/debugger/debugger.cpp +++ b/shared/source/debugger/debugger.cpp @@ -16,7 +16,7 @@ namespace NEO { std::unique_ptr Debugger::create(HardwareInfo *hwInfo) { std::unique_ptr sourceLevelDebugger; - if (hwInfo->capabilityTable.debuggerSupported) { + if (hwInfo->capabilityTable.debuggerSupported || DebugManager.flags.ExperimentalEnableSourceLevelDebugger.get()) { sourceLevelDebugger.reset(SourceLevelDebugger::create()); } if (sourceLevelDebugger) {