writer/msl: Wrap each array type in a struct

This allows them to be used in various places that WGSL allows, such
as function return types and parameters, and as the type of the RHS of
an assignment.

Fixed: tint:814
Fixed: tint:820
Change-Id: Idb6a901b9a34e96bb9733cc158191e7b3bafaa0e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/52844
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
James Price
2021-06-02 17:23:03 +00:00
committed by Tint LUCI CQ
parent 5c0820c76b
commit 94ac078990
50 changed files with 1713 additions and 32 deletions

View File

@@ -0,0 +1,23 @@
float f1(float a[4]) {
return a[3];
}
float f2(float a[3][4]) {
return a[2][3];
}
float f3(float a[2][3][4]) {
return a[1][2][3];
}
[numthreads(1, 1, 1)]
void main() {
const float a1[4] = {0.0f, 0.0f, 0.0f, 0.0f};
const float a2[3][4] = {{0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}};
const float a3[2][3][4] = {{{0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}}, {{0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}}};
const float v1 = f1(a1);
const float v2 = f2(a2);
const float v3 = f3(a3);
return;
}