summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-emit-spirv.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp
index 8e8e7327b..018f833aa 100644
--- a/source/slang/slang-emit-spirv.cpp
+++ b/source/slang/slang-emit-spirv.cpp
@@ -4850,7 +4850,15 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex
if (mode == SpvExecutionModeMax)
return;
- requireSPIRVExecutionMode(nullptr, getIRInstSpvID(entryPoint), mode);
+ // Vulkan spec requires DepthReplacing exec mode when storing to FragDepth,
+ // in addition to DepthLess/DepthGreater modes.
+ requireSPIRVExecutionMode(
+ nullptr,
+ getIRInstSpvID(entryPoint),
+ SpvExecutionModeDepthReplacing);
+
+ if (mode != SpvExecutionModeDepthReplacing)
+ requireSPIRVExecutionMode(nullptr, getIRInstSpvID(entryPoint), mode);
}
// Make user type name conform to `SPV_GOOGLE_user_type` spec.