summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-check-shader.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/source/slang/slang-check-shader.cpp b/source/slang/slang-check-shader.cpp
index d04c72e15..fab1d3502 100644
--- a/source/slang/slang-check-shader.cpp
+++ b/source/slang/slang-check-shader.cpp
@@ -537,9 +537,17 @@ void validateEntryPoint(EntryPoint* entryPoint, DiagnosticSink* sink)
}
else
{
- // Only attempt to error if a user adds to slangc either `-profile` or `-capability`
- if ((target->getOptionSet().hasOption(CompilerOptionName::Capability) ||
- target->getOptionSet().hasOption(CompilerOptionName::Profile)) &&
+ auto& targetOptionSet = target->getOptionSet();
+ bool specificProfileRequested =
+ targetOptionSet.hasOption(CompilerOptionName::Profile) &&
+ (targetOptionSet.getIntOption(CompilerOptionName::Profile) !=
+ SLANG_PROFILE_UNKNOWN);
+ bool specificCapabilityRequested =
+ targetOptionSet.hasOption(CompilerOptionName::Capability) &&
+ (targetOptionSet.getIntOption(CompilerOptionName::Capability) !=
+ SLANG_CAPABILITY_UNKNOWN);
+ // Only attempt to error if a specific profile or capability is requested
+ if ((specificCapabilityRequested || specificProfileRequested) &&
targetCaps.atLeastOneSetImpliedInOther(
entryPointFuncDecl->inferredCapabilityRequirements) ==
CapabilitySet::ImpliesReturnFlags::NotImplied)