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/var/bitcast/160c09.wgsl.expected.msl b/test/tint/builtins/gen/var/bitcast/160c09.wgsl.expected.msl
index 31b8573..a4bd30c 100644
--- a/test/tint/builtins/gen/var/bitcast/160c09.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/bitcast/160c09.wgsl.expected.msl
@@ -1,34 +1,43 @@
#include <metal_stdlib>
using namespace metal;
-void bitcast_160c09(device uint4* const tint_symbol_1) {
+uint4 bitcast_160c09() {
uint4 res = uint4(1u);
- *(tint_symbol_1) = res;
+ return res;
}
-struct tint_symbol {
- float4 value [[position]];
+fragment void fragment_main(device uint4* tint_symbol_1 [[buffer(0)]]) {
+ *(tint_symbol_1) = bitcast_160c09();
+ return;
+}
+
+kernel void compute_main(device uint4* tint_symbol_2 [[buffer(0)]]) {
+ *(tint_symbol_2) = bitcast_160c09();
+ return;
+}
+
+struct VertexOutput {
+ float4 pos;
+ uint4 prevent_dce;
};
-float4 vertex_main_inner(device uint4* const tint_symbol_2) {
- bitcast_160c09(tint_symbol_2);
- return float4(0.0f);
+struct tint_symbol {
+ uint4 prevent_dce [[user(locn0)]] [[flat]];
+ float4 pos [[position]];
+};
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ out.prevent_dce = bitcast_160c09();
+ return out;
}
-vertex tint_symbol vertex_main(device uint4* tint_symbol_3 [[buffer(0)]]) {
- float4 const inner_result = vertex_main_inner(tint_symbol_3);
+vertex tint_symbol vertex_main() {
+ VertexOutput const inner_result = vertex_main_inner();
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(device uint4* tint_symbol_4 [[buffer(0)]]) {
- bitcast_160c09(tint_symbol_4);
- return;
-}
-
-kernel void compute_main(device uint4* tint_symbol_5 [[buffer(0)]]) {
- bitcast_160c09(tint_symbol_5);
- return;
-}
-