[dawn] Enable substitute overrides for tint IR Compat (GL)
This was previously done for vk.
https://dawn-review.googlesource.com/c/dawn/+/223994
Bug: 382300469
Change-Id: Ia172fa59af23b47ead02b2fe117546033d7fe015
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/228394
Commit-Queue: Peter McNeeley <petermcneeley@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/dawn/native/opengl/ShaderModuleGL.cpp b/src/dawn/native/opengl/ShaderModuleGL.cpp
index 53738c8..7be9724 100644
--- a/src/dawn/native/opengl/ShaderModuleGL.cpp
+++ b/src/dawn/native/opengl/ShaderModuleGL.cpp
@@ -507,14 +507,6 @@
transformInputs.Add<tint::ast::transform::SingleEntryPoint::Config>(
r.entryPointName);
- if (r.substituteOverrideConfig) {
- // This needs to run after SingleEntryPoint transform which removes unused
- // overrides for current entry point.
- transformManager.Add<tint::ast::transform::SubstituteOverride>();
- transformInputs.Add<tint::ast::transform::SubstituteOverride::Config>(
- std::move(r.substituteOverrideConfig).value());
- }
-
tint::Program program;
tint::ast::transform::DataMap transformOutputs;
DAWN_TRY_ASSIGN(program,
@@ -534,6 +526,18 @@
"An error occurred while generating Tint IR\n%s",
ir.Failure().reason.Str());
+ if (r.substituteOverrideConfig) {
+ // this needs to run after SingleEntryPoint transform which removes unused
+ // overrides for the current entry point.
+ tint::core::ir::transform::SubstituteOverridesConfig cfg;
+ cfg.map = r.substituteOverrideConfig->map;
+ auto substituteOverridesResult =
+ tint::core::ir::transform::SubstituteOverrides(ir.Get(), cfg);
+ DAWN_INVALID_IF(substituteOverridesResult != tint::Success,
+ "Pipeline override substitution (IR) failed:\n%s",
+ substituteOverridesResult.Failure().reason.Str());
+ }
+
// Generate GLSL from Tint IR.
auto result =
tint::glsl::writer::Generate(ir.Get(), r.tintOptions, remappedEntryPoint);