summaryrefslogtreecommitdiffstats
path: root/tools/render-test
diff options
context:
space:
mode:
authorJay Kwak <82421531+jkwak-work@users.noreply.github.com>2025-05-11 08:13:25 +0000
committerGitHub <noreply@github.com>2025-05-11 08:13:25 +0000
commitb46c342f47b61119a0dc517ce6eb75eab3398504 (patch)
treeb298a229eaca41fd8ea37461f774788f005f9c12 /tools/render-test
parent7cd502256dde2fc32a1dd77462a69b6f8e84c288 (diff)
Add a new option "-capability" to slang-test and render-test (#7054)
Diffstat (limited to 'tools/render-test')
-rw-r--r--tools/render-test/options.cpp13
-rw-r--r--tools/render-test/options.h2
-rw-r--r--tools/render-test/slang-support.cpp9
3 files changed, 24 insertions, 0 deletions
diff --git a/tools/render-test/options.cpp b/tools/render-test/options.cpp
index e50166017..e4163b312 100644
--- a/tools/render-test/options.cpp
+++ b/tools/render-test/options.cpp
@@ -170,6 +170,19 @@ static rhi::DeviceType _toRenderType(Slang::RenderApiType apiType)
{
outOptions.generateSPIRVDirectly = false;
}
+ else if (argValue == "-capability" || argValue == "-capabilities")
+ {
+ String capabilities;
+ SLANG_RETURN_ON_FAIL(reader.expectArg(capabilities));
+
+ List<UnownedStringSlice> values;
+ StringUtil::split(capabilities.getUnownedSlice(), ',', values);
+
+ for (const auto& value : values)
+ {
+ outOptions.capabilities.add(value);
+ }
+ }
else if (argValue == "-only-startup")
{
outOptions.onlyStartup = true;
diff --git a/tools/render-test/options.h b/tools/render-test/options.h
index 4c7e6faa1..ff938e8c4 100644
--- a/tools/render-test/options.h
+++ b/tools/render-test/options.h
@@ -95,6 +95,8 @@ struct Options
bool skipSPIRVValidation = false;
+ Slang::List<Slang::String> capabilities;
+
Options() { downstreamArgs.addName("slang"); }
static SlangResult parse(
diff --git a/tools/render-test/slang-support.cpp b/tools/render-test/slang-support.cpp
index c54abb1f8..2f39ed078 100644
--- a/tools/render-test/slang-support.cpp
+++ b/tools/render-test/slang-support.cpp
@@ -211,6 +211,15 @@ static SlangResult _compileProgramImpl(
sessionOptionEntries.add(entry);
}
+ for (auto& capability : options.capabilities)
+ {
+ slang::CompilerOptionEntry entry;
+ entry.name = slang::CompilerOptionName::Capability;
+ entry.value.kind = slang::CompilerOptionValueKind::String;
+ entry.value.stringValue0 = capability.getBuffer();
+ sessionOptionEntries.add(entry);
+ }
+
sessionDesc.compilerOptionEntryCount = sessionOptionEntries.getCount();
sessionDesc.compilerOptionEntries = sessionOptionEntries.getBuffer();