Remove storage textures from vertex tests
The template change in test/tint/builtins/gen/gen.wgsl.tmpl removes the
remaining usages of storage textures in vertex shaders in Tint end2end
tests, replacing them instead with a VertexOutput object to prevent DCE.
The template is the only manually modified file in this change, the rest
were created with:
./tools/run gen
./tools/run tests --generate-expected
Binding numbers and entry point ordering had to be slightly shuffled to
work around: crbug.com/42250109
Bug: 344846829
Change-Id: I6c2c80b78168a13c6c545e7a0dc924d64997ff0e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/193260
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Natalie Chouinard <chouinard@google.com>
diff --git a/test/tint/builtins/gen/literal/textureLoad/e893d7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureLoad/e893d7.wgsl.expected.glsl
index 9e00a5f..fd5a92c 100644
--- a/test/tint/builtins/gen/literal/textureLoad/e893d7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/e893d7.wgsl.expected.glsl
@@ -1,44 +1,24 @@
#version 310 es
-
-layout(rgba16f) uniform highp readonly image2D arg_0;
-layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
- vec4 inner;
-} prevent_dce;
-
-void textureLoad_e893d7() {
- vec4 res = imageLoad(arg_0, ivec2(1));
- prevent_dce.inner = res;
-}
-
-vec4 vertex_main() {
- textureLoad_e893d7();
- return vec4(0.0f);
-}
-
-void main() {
- gl_PointSize = 1.0;
- vec4 inner_result = vertex_main();
- gl_Position = inner_result;
- gl_Position.y = -(gl_Position.y);
- gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
- return;
-}
-#version 310 es
precision highp float;
precision highp int;
layout(rgba16f) uniform highp readonly image2D arg_0;
+vec4 textureLoad_e893d7() {
+ vec4 res = imageLoad(arg_0, ivec2(1));
+ return res;
+}
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec4 inner;
} prevent_dce;
-void textureLoad_e893d7() {
- vec4 res = imageLoad(arg_0, ivec2(1));
- prevent_dce.inner = res;
-}
+struct VertexOutput {
+ vec4 pos;
+ vec4 prevent_dce;
+};
void fragment_main() {
- textureLoad_e893d7();
+ prevent_dce.inner = textureLoad_e893d7();
}
void main() {
@@ -48,17 +28,22 @@
#version 310 es
layout(rgba16f) uniform highp readonly image2D arg_0;
+vec4 textureLoad_e893d7() {
+ vec4 res = imageLoad(arg_0, ivec2(1));
+ return res;
+}
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec4 inner;
} prevent_dce;
-void textureLoad_e893d7() {
- vec4 res = imageLoad(arg_0, ivec2(1));
- prevent_dce.inner = res;
-}
+struct VertexOutput {
+ vec4 pos;
+ vec4 prevent_dce;
+};
void compute_main() {
- textureLoad_e893d7();
+ prevent_dce.inner = textureLoad_e893d7();
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -66,3 +51,33 @@
compute_main();
return;
}
+#version 310 es
+
+layout(location = 0) flat out vec4 prevent_dce_1;
+layout(rgba16f) uniform highp readonly image2D arg_0;
+vec4 textureLoad_e893d7() {
+ vec4 res = imageLoad(arg_0, ivec2(1));
+ return res;
+}
+
+struct VertexOutput {
+ vec4 pos;
+ vec4 prevent_dce;
+};
+
+VertexOutput vertex_main() {
+ VertexOutput tint_symbol = VertexOutput(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
+ tint_symbol.pos = vec4(0.0f);
+ tint_symbol.prevent_dce = textureLoad_e893d7();
+ return tint_symbol;
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ VertexOutput inner_result = vertex_main();
+ gl_Position = inner_result.pos;
+ prevent_dce_1 = inner_result.prevent_dce;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}