From d11c3ff315d340e5c75cf00023535c397b0b6d9e Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Wed, 28 Sep 2022 00:07:01 -0400 Subject: [PATCH] only use dead input elimination on vertex shaders It can't be safely used unilaterally on other stages, since that will result in output/input mismatches between stages. They arn't having their output variables eliminated accordingly. --- SPIRV/SpvTools.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 8cc17cc..2529993 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -212,7 +212,8 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass()); if (options->optimizeSize) { optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); - optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); + if (intermediate.getStage() == EShLanguage::EShLangVertex) + optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); -- 2.7.4