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/textureGather/17baac.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.msl
index f976a05..b750434 100644
--- a/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.msl
@@ -1,34 +1,43 @@
#include <metal_stdlib>
using namespace metal;
-void textureGather_17baac(texture2d_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2, device float4* const tint_symbol_3) {
+float4 textureGather_17baac(texture2d_array<float, access::sample> tint_symbol_1, sampler tint_symbol_2) {
float4 res = tint_symbol_1.gather(tint_symbol_2, float2(1.0f), 1u, int2(0), component::y);
- *(tint_symbol_3) = res;
+ return res;
}
-struct tint_symbol {
- float4 value [[position]];
+fragment void fragment_main(device float4* tint_symbol_3 [[buffer(0)]], texture2d_array<float, access::sample> tint_symbol_4 [[texture(0)]], sampler tint_symbol_5 [[sampler(0)]]) {
+ *(tint_symbol_3) = textureGather_17baac(tint_symbol_4, tint_symbol_5);
+ return;
+}
+
+kernel void compute_main(device float4* tint_symbol_6 [[buffer(0)]], texture2d_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]]) {
+ *(tint_symbol_6) = textureGather_17baac(tint_symbol_7, tint_symbol_8);
+ return;
+}
+
+struct VertexOutput {
+ float4 pos;
+ float4 prevent_dce;
};
-float4 vertex_main_inner(texture2d_array<float, access::sample> tint_symbol_4, sampler tint_symbol_5, device float4* const tint_symbol_6) {
- textureGather_17baac(tint_symbol_4, tint_symbol_5, tint_symbol_6);
- return float4(0.0f);
+struct tint_symbol {
+ float4 prevent_dce [[user(locn0)]] [[flat]];
+ float4 pos [[position]];
+};
+
+VertexOutput vertex_main_inner(texture2d_array<float, access::sample> tint_symbol_9, sampler tint_symbol_10) {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ out.prevent_dce = textureGather_17baac(tint_symbol_9, tint_symbol_10);
+ return out;
}
-vertex tint_symbol vertex_main(texture2d_array<float, access::sample> tint_symbol_7 [[texture(0)]], sampler tint_symbol_8 [[sampler(0)]], device float4* tint_symbol_9 [[buffer(0)]]) {
- float4 const inner_result = vertex_main_inner(tint_symbol_7, tint_symbol_8, tint_symbol_9);
+vertex tint_symbol vertex_main(texture2d_array<float, access::sample> tint_symbol_11 [[texture(0)]], sampler tint_symbol_12 [[sampler(0)]]) {
+ VertexOutput const inner_result = vertex_main_inner(tint_symbol_11, tint_symbol_12);
tint_symbol wrapper_result = {};
- wrapper_result.value = inner_result;
+ wrapper_result.pos = inner_result.pos;
+ wrapper_result.prevent_dce = inner_result.prevent_dce;
return wrapper_result;
}
-fragment void fragment_main(texture2d_array<float, access::sample> tint_symbol_10 [[texture(0)]], sampler tint_symbol_11 [[sampler(0)]], device float4* tint_symbol_12 [[buffer(0)]]) {
- textureGather_17baac(tint_symbol_10, tint_symbol_11, tint_symbol_12);
- return;
-}
-
-kernel void compute_main(texture2d_array<float, access::sample> tint_symbol_13 [[texture(0)]], sampler tint_symbol_14 [[sampler(0)]], device float4* tint_symbol_15 [[buffer(0)]]) {
- textureGather_17baac(tint_symbol_13, tint_symbol_14, tint_symbol_15);
- return;
-}
-