From 98db084b594486bdc8f765f68e6b6be8910e3e85 Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Thu, 22 Sep 2022 14:59:14 +0000 Subject: [PATCH] Debug flag to append api module build options Signed-off-by: Dunajski, Bartosz --- level_zero/core/source/module/module_imp.cpp | 10 +++++++-- .../unit_tests/sources/module/test_module.cpp | 22 +++++++++++++++++++ .../debug_settings/debug_variables_base.inl | 1 + shared/test/common/test_files/igdrcl.config | 1 + 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/level_zero/core/source/module/module_imp.cpp b/level_zero/core/source/module/module_imp.cpp index 5c8baf369c..092f6bc40e 100644 --- a/level_zero/core/source/module/module_imp.cpp +++ b/level_zero/core/source/module/module_imp.cpp @@ -583,8 +583,14 @@ bool ModuleImp::initialize(const ze_module_desc_t *desc, NEO::Device *neoDevice) this->translationUnit->shouldSuppressRebuildWarning = NEO::CompilerOptions::extract(NEO::CompilerOptions::noRecompiledFromIr, buildFlagsInput); this->createBuildOptions(buildFlagsInput.c_str(), buildOptions, internalBuildOptions); - if (type == ModuleType::User && NEO::DebugManager.flags.InjectInternalBuildOptions.get() != "unk") { - NEO::CompilerOptions::concatenateAppend(internalBuildOptions, NEO::DebugManager.flags.InjectInternalBuildOptions.get()); + if (type == ModuleType::User) { + if (NEO::DebugManager.flags.InjectInternalBuildOptions.get() != "unk") { + NEO::CompilerOptions::concatenateAppend(internalBuildOptions, NEO::DebugManager.flags.InjectInternalBuildOptions.get()); + } + + if (NEO::DebugManager.flags.InjectApiBuildOptions.get() != "unk") { + NEO::CompilerOptions::concatenateAppend(buildOptions, NEO::DebugManager.flags.InjectApiBuildOptions.get()); + } } if (desc->format == ZE_MODULE_FORMAT_NATIVE) { diff --git a/level_zero/core/test/unit_tests/sources/module/test_module.cpp b/level_zero/core/test/unit_tests/sources/module/test_module.cpp index 94e49ece64..e259343e36 100644 --- a/level_zero/core/test/unit_tests/sources/module/test_module.cpp +++ b/level_zero/core/test/unit_tests/sources/module/test_module.cpp @@ -2889,6 +2889,28 @@ TEST_F(ModuleTest, GivenInjectInternalBuildOptionsWhenBuildingUserModuleThenInte EXPECT_TRUE(CompilerOptions::contains(cip->buildInternalOptions, "-abc")); }; +TEST_F(ModuleTest, GivenInjectApiBuildOptionsWhenBuildingUserModuleThenApiOptionsAreAppended) { + DebugManagerStateRestore dbgRestorer; + DebugManager.flags.InjectApiBuildOptions.set(" -abc"); + + auto cip = new NEO::MockCompilerInterfaceCaptureBuildOptions(); + device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[device->getRootDeviceIndex()]->compilerInterface.reset(cip); + + uint8_t binary[10]; + ze_module_desc_t moduleDesc = {}; + moduleDesc.format = ZE_MODULE_FORMAT_IL_SPIRV; + moduleDesc.pInputModule = binary; + moduleDesc.inputSize = 10; + + ModuleBuildLog *moduleBuildLog = nullptr; + + auto module = std::unique_ptr(new L0::ModuleImp(device, moduleBuildLog, ModuleType::User)); + ASSERT_NE(nullptr, module.get()); + module->initialize(&moduleDesc, device->getNEODevice()); + + EXPECT_TRUE(CompilerOptions::contains(cip->buildOptions, "-abc")); +}; + TEST_F(ModuleTest, GivenInjectInternalBuildOptionsWhenBuildingBuiltinModuleThenInternalOptionsAreNotAppended) { DebugManagerStateRestore dbgRestorer; DebugManager.flags.InjectInternalBuildOptions.set(" -abc"); diff --git a/shared/source/debug_settings/debug_variables_base.inl b/shared/source/debug_settings/debug_variables_base.inl index cab63483a5..0a9ee21e70 100644 --- a/shared/source/debug_settings/debug_variables_base.inl +++ b/shared/source/debug_settings/debug_variables_base.inl @@ -84,6 +84,7 @@ DECLARE_DEBUG_VARIABLE(std::string, FilterDeviceId, std::string("unk"), "Device DECLARE_DEBUG_VARIABLE(std::string, FilterBdfPath, std::string("unk"), "Linux-only, BDF path filter, only matching paths will be opened. Ignored when unk.") DECLARE_DEBUG_VARIABLE(std::string, LoadBinarySipFromFile, std::string("unk"), "Select binary file to load SIP kernel raw binary. When file named *_header.* exists, it is used as header") DECLARE_DEBUG_VARIABLE(std::string, InjectInternalBuildOptions, std::string("unk"), "Appends internal build options string to user modules") +DECLARE_DEBUG_VARIABLE(std::string, InjectApiBuildOptions, std::string("unk"), "Appends api build options string to user modules") DECLARE_DEBUG_VARIABLE(std::string, OverrideDeviceName, std::string("unk"), "Device name to override") DECLARE_DEBUG_VARIABLE(int64_t, OverrideMultiStoragePlacement, -1, "-1: disable, 0+: tile mask, each bit corresponds to tile") DECLARE_DEBUG_VARIABLE(int64_t, ForceCompressionDisabledForCompressedBlitCopies, -1, "-1: default, 0: disabled, 1: enabled. If compression is required, set AUX_CCS_E, but force CompressionEnable filed. 0 should result in uncompressed read/write") diff --git a/shared/test/common/test_files/igdrcl.config b/shared/test/common/test_files/igdrcl.config index 5fedac594e..5d9888869e 100644 --- a/shared/test/common/test_files/igdrcl.config +++ b/shared/test/common/test_files/igdrcl.config @@ -37,6 +37,7 @@ FilterDeviceId = unk FilterBdfPath = unk LoadBinarySipFromFile = unk InjectInternalBuildOptions = unk +InjectApiBuildOptions = unk OverrideCsrAllocationSize = -1 ForceL1Caching = -1 UseKmdMigration = -1