summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-check-shader.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/source/slang/slang-check-shader.cpp b/source/slang/slang-check-shader.cpp
index a360361f7..dc4f84920 100644
--- a/source/slang/slang-check-shader.cpp
+++ b/source/slang/slang-check-shader.cpp
@@ -549,10 +549,23 @@ void validateEntryPoint(EntryPoint* entryPoint, DiagnosticSink* sink)
targetOptionSet.hasOption(CompilerOptionName::Profile) &&
(targetOptionSet.getIntOption(CompilerOptionName::Profile) !=
SLANG_PROFILE_UNKNOWN);
- bool specificCapabilityRequested =
- targetOptionSet.hasOption(CompilerOptionName::Capability) &&
- (targetOptionSet.getIntOption(CompilerOptionName::Capability) !=
- SLANG_CAPABILITY_UNKNOWN);
+ bool specificCapabilityRequested = false;
+ for (auto atomVal : targetOptionSet.getArray(CompilerOptionName::Capability))
+ {
+ switch (atomVal.kind)
+ {
+ case CompilerOptionValueKind::Int:
+ if (atomVal.intValue != SLANG_CAPABILITY_UNKNOWN)
+ specificCapabilityRequested = true;
+ break;
+ case CompilerOptionValueKind::String:
+ // User made a specific capability request
+ specificCapabilityRequested = true;
+ break;
+ }
+ if (specificCapabilityRequested)
+ break;
+ }
if (auto declaredCapsMod =
entryPointFuncDecl->findModifier<ExplicitlyDeclaredCapabilityModifier>())