Skip to content

Commit 1d221f1

Browse files
When preprocess fails, return false from process
1 parent 04a7012 commit 1d221f1

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

libs/filamat/src/GLSLPostProcessor.cpp

+8-3
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,9 @@ bool GLSLPostProcessor::process(const std::string& inputShader, Config const& co
661661
}
662662
break;
663663
case MaterialBuilder::Optimization::PREPROCESSOR:
664-
preprocessOptimization(tShader, config, internalConfig);
664+
if (!preprocessOptimization(tShader, config, internalConfig)) {
665+
return false;
666+
}
665667
break;
666668
case MaterialBuilder::Optimization::SIZE:
667669
case MaterialBuilder::Optimization::PERFORMANCE:
@@ -691,7 +693,7 @@ bool GLSLPostProcessor::process(const std::string& inputShader, Config const& co
691693
return true;
692694
}
693695

694-
void GLSLPostProcessor::preprocessOptimization(glslang::TShader& tShader,
696+
bool GLSLPostProcessor::preprocessOptimization(glslang::TShader& tShader,
695697
GLSLPostProcessor::Config const& config, InternalConfig& internalConfig) const {
696698
using TargetApi = MaterialBuilder::TargetApi;
697699
assert_invariant(bool(internalConfig.spirvOutput) == (config.targetApi != TargetApi::OPENGL));
@@ -707,6 +709,7 @@ void GLSLPostProcessor::preprocessOptimization(glslang::TShader& tShader,
707709

708710
if (!ok) {
709711
slog.e << tShader.getInfoLog() << io::endl;
712+
return false;
710713
}
711714

712715
if (internalConfig.spirvOutput) {
@@ -728,6 +731,7 @@ void GLSLPostProcessor::preprocessOptimization(glslang::TShader& tShader,
728731
bool const linkOk = program.link(msg);
729732
if (!ok || !linkOk) {
730733
slog.e << spirvShader.getInfoLog() << io::endl;
734+
return false;
731735
} else {
732736
SpvOptions options;
733737
options.generateDebugInfo = mGenerateDebugInfo;
@@ -749,14 +753,15 @@ void GLSLPostProcessor::preprocessOptimization(glslang::TShader& tShader,
749753
}
750754
if (internalConfig.wgslOutput) {
751755
if (!spirvToWgsl(internalConfig.spirvOutput, internalConfig.wgslOutput)) {
752-
return;
756+
return false;
753757
}
754758
}
755759

756760

757761
if (internalConfig.glslOutput) {
758762
*internalConfig.glslOutput = glsl;
759763
}
764+
return true;
760765
}
761766

762767
bool GLSLPostProcessor::fullOptimization(const TShader& tShader,

libs/filamat/src/GLSLPostProcessor.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class GLSLPostProcessor {
107107
bool fullOptimization(const glslang::TShader& tShader,
108108
GLSLPostProcessor::Config const& config, InternalConfig& internalConfig) const;
109109

110-
void preprocessOptimization(glslang::TShader& tShader,
110+
bool preprocessOptimization(glslang::TShader& tShader,
111111
GLSLPostProcessor::Config const& config, InternalConfig& internalConfig) const;
112112

113113
/**

0 commit comments

Comments
 (0)