summaryrefslogtreecommitdiff
path: root/source/slang-glslang
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-08-11 18:19:11 -0400
committerGitHub <noreply@github.com>2020-08-11 18:19:11 -0400
commitec095a3a736f88f095fc947659da1793c8ccc54a (patch)
tree4a4466c4fd49e7eef5f1e69480fd1185ba5ec1dd /source/slang-glslang
parentcc64c619baf9ca5cdeda3f2ec83f613e753a5934 (diff)
Bugfix: WaveActiveCountBits on glsl output. (#1488)
* Fix WaveActiveCountBits on glsl output. * Fix warning `could not be inlined because the return instruction is not at the end of the function. This could be fixed by running merge-return before inlining.` from glslang - because we weren't including the CreateMergeReturnPasss on default optimization, and it's assumed in InlineExhaustivePass. * Keep WaveActiveCountBits use the default WaveMask impl. * Fix WaveCountBits calculation. Use WaveActiveBallot instead of the _WaveActiveBallot.
Diffstat (limited to 'source/slang-glslang')
-rw-r--r--source/slang-glslang/slang-glslang.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/source/slang-glslang/slang-glslang.cpp b/source/slang-glslang/slang-glslang.cpp
index 1c756cb6c..80087997c 100644
--- a/source/slang-glslang/slang-glslang.cpp
+++ b/source/slang-glslang/slang-glslang.cpp
@@ -168,6 +168,8 @@ static void glslang_optimizeSPIRV(std::vector<unsigned int>& spirv, spv_target_e
break;
case SLANG_OPTIMIZATION_LEVEL_DEFAULT:
// Use a minimal set of performance settings
+ // If we run CreateInlineExhaustivePass, We need to run CreateMergeReturnPass first.
+ optimizer.RegisterPass(spvtools::CreateMergeReturnPass());
optimizer.RegisterPass(spvtools::CreateInlineExhaustivePass());
optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass());
optimizer.RegisterPass(spvtools::CreatePrivateToLocalPass());