Skip to content

Commit 3f7af19

Browse files
Pass bindless options to compiler when bindless enabled
Signed-off-by: Maciej Plewka <[email protected]>
1 parent 61d61e8 commit 3f7af19

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

level_zero/core/source/module/module_imp.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "shared/source/compiler_interface/intermediate_representations.h"
1111
#include "shared/source/device/device.h"
1212
#include "shared/source/device_binary_format/device_binary_formats.h"
13+
#include "shared/source/helpers/api_specific_config.h"
1314
#include "shared/source/helpers/string.h"
1415
#include "shared/source/memory_manager/memory_manager.h"
1516
#include "shared/source/memory_manager/unified_memory_manager.h"
@@ -364,6 +365,10 @@ void ModuleImp::createBuildOptions(const char *pBuildFlags, std::string &apiOpti
364365
moveBuildOption(apiOptions, apiOptions, NEO::CompilerOptions::optDisable, BuildOptions::optDisable);
365366
moveBuildOption(internalBuildOptions, apiOptions, NEO::CompilerOptions::greaterThan4gbBuffersRequired, BuildOptions::greaterThan4GbRequired);
366367
moveBuildOption(internalBuildOptions, apiOptions, NEO::CompilerOptions::allowZebin, NEO::CompilerOptions::allowZebin);
368+
if (NEO::ApiSpecificConfig::getBindlessConfiguration()) {
369+
NEO::CompilerOptions::concatenateAppend(internalBuildOptions, NEO::CompilerOptions::bindlessBuffers.str());
370+
NEO::CompilerOptions::concatenateAppend(internalBuildOptions, NEO::CompilerOptions::bindlessImages.str());
371+
}
367372
createBuildExtraOptions(apiOptions, internalBuildOptions);
368373
}
369374
}

level_zero/core/test/unit_tests/sources/module/test_module.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,5 +602,35 @@ TEST(BuildOptions, givenSrcOptionNameInSrcNamesWhenMovingBuildOptionsThenOptionI
602602
EXPECT_EQ(std::string::npos, srcNames.find(NEO::CompilerOptions::optDisable.str()));
603603
}
604604

605+
TEST_F(ModuleTest, givenInternalOptionsWhenBindlessEnabledThenBindlesOptionsPassed) {
606+
DebugManagerStateRestore restorer;
607+
DebugManager.flags.UseBindlessMode.set(1);
608+
auto module = std::make_unique<ModuleImp>(device, nullptr);
609+
ASSERT_NE(nullptr, module);
610+
611+
std::string buildOptions;
612+
std::string internalBuildOptions;
613+
614+
module->createBuildOptions("", buildOptions, internalBuildOptions);
615+
616+
EXPECT_TRUE(NEO::CompilerOptions::contains(internalBuildOptions, NEO::CompilerOptions::bindlessBuffers));
617+
EXPECT_TRUE(NEO::CompilerOptions::contains(internalBuildOptions, NEO::CompilerOptions::bindlessImages));
618+
}
619+
620+
TEST_F(ModuleTest, givenInternalOptionsWhenBindlessDisabledThenBindlesOptionsNotPassed) {
621+
DebugManagerStateRestore restorer;
622+
DebugManager.flags.UseBindlessMode.set(0);
623+
auto module = std::make_unique<ModuleImp>(device, nullptr);
624+
ASSERT_NE(nullptr, module);
625+
626+
std::string buildOptions;
627+
std::string internalBuildOptions;
628+
629+
module->createBuildOptions("", buildOptions, internalBuildOptions);
630+
631+
EXPECT_FALSE(NEO::CompilerOptions::contains(internalBuildOptions, NEO::CompilerOptions::bindlessBuffers));
632+
EXPECT_FALSE(NEO::CompilerOptions::contains(internalBuildOptions, NEO::CompilerOptions::bindlessImages));
633+
}
634+
605635
} // namespace ult
606636
} // namespace L0

0 commit comments

Comments
 (0)