writer/msl: Emit field designators for structures

This fixes constructors for structures that contain padding members
due to explicit layout attributes.

Also fix one test that was wrongly using an identity type constructor
for a structure.

Fixed: tint:853
Change-Id: I0a3e84fcd7c6a7f2ad92a4970ed11378e6ce2465
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/53240
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
James Price
2021-06-03 18:12:15 +00:00
committed by Tint LUCI CQ
parent 71786c99b3
commit 851b18b2f2
23 changed files with 102 additions and 71 deletions

View File

@@ -28,17 +28,17 @@ struct tint_symbol_5 {
};
vertex tint_symbol_2 vtx_main(tint_symbol_1 tint_symbol [[stage_in]], constant Uniforms& uniforms [[buffer(0)]]) {
VertexInput const input = {tint_symbol.cur_position, tint_symbol.color};
VertexInput const input = {.cur_position=tint_symbol.cur_position, .color=tint_symbol.color};
VertexOutput output = {};
output.Position = (uniforms.modelViewProjectionMatrix * input.cur_position);
output.vtxFragColor = input.color;
tint_symbol_2 const tint_symbol_6 = {output.vtxFragColor, output.Position};
tint_symbol_2 const tint_symbol_6 = {.vtxFragColor=output.vtxFragColor, .Position=output.Position};
return tint_symbol_6;
}
fragment tint_symbol_5 frag_main(tint_symbol_4 tint_symbol_3 [[stage_in]]) {
float4 const fragColor = tint_symbol_3.fragColor;
tint_symbol_5 const tint_symbol_7 = {fragColor};
tint_symbol_5 const tint_symbol_7 = {.value=fragColor};
return tint_symbol_7;
}

View File

@@ -11,7 +11,7 @@ void bar() {
fragment tint_symbol_1 tint_symbol() {
float2 a = float2();
bar();
tint_symbol_1 const tint_symbol_2 = {float4(0.400000006f, 0.400000006f, 0.800000012f, 1.0f)};
tint_symbol_1 const tint_symbol_2 = {.value=float4(0.400000006f, 0.400000006f, 0.800000012f, 1.0f)};
return tint_symbol_2;
}