GLSL: avoid collisions on existing vars for binding 0/0.
Bug: tint:1396
Change-Id: I870c3dd7772b1fdf9bf7adfdb34798a9eb170163
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/78020
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/transform/combine_samplers.cc b/src/transform/combine_samplers.cc
index ce20657..86ee8ae 100644
--- a/src/transform/combine_samplers.cc
+++ b/src/transform/combine_samplers.cc
@@ -137,6 +137,13 @@
for (auto* var : ctx.src->AST().GlobalVariables()) {
if (sem.Get(var->type)->IsAnyOf<sem::Texture, sem::Sampler>()) {
ctx.Remove(ctx.src->AST().GlobalDeclarations(), var);
+ } else if (auto binding_point = var->BindingPoint()) {
+ if (binding_point.group->value == 0 &&
+ binding_point.binding->value == 0) {
+ auto* decoration =
+ ctx.dst->Disable(ast::DisabledValidation::kBindingPointCollision);
+ ctx.InsertFront(var->decorations, decoration);
+ }
}
}
diff --git a/src/transform/combine_samplers_test.cc b/src/transform/combine_samplers_test.cc
index 60f836c..7d49756 100644
--- a/src/transform/combine_samplers_test.cc
+++ b/src/transform/combine_samplers_test.cc
@@ -633,7 +633,7 @@
}
)";
auto* expect = R"(
-@group(0) @binding(0) var<uniform> gcoords : vec2<f32>;
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<uniform> gcoords : vec2<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp : texture_2d<f32>;