Skip to content

Commit 107ab7c

Browse files
MSL: Avoid packed arrays in more cases.
Extend the array stride relaxation to non-packed arrays as well, as long as the array in question contains a single array element.
1 parent de3698f commit 107ab7c

12 files changed

Lines changed: 27 additions & 25 deletions

reference/opt/shaders-msl/asm/vert/packed-bool-to-uint.asm.vert

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant defaultUniformsVS& _9
2929
{
3030
main0_out out = {};
3131
out.gl_Position = _9.umatrix * float4(_9.uquad[int(gl_VertexIndex)].x, _9.uquad[int(gl_VertexIndex)].y, in.a_position.z, in.a_position.w);
32-
if (uint(_9.flags.flags[0]) != 0u)
32+
if (_9.flags.flags[0] != 0u)
3333
{
3434
out.gl_Position.z = 0.0;
3535
}

reference/opt/shaders-msl/asm/vert/packed-bool2-to-packed_uint2.asm.vert

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ using namespace metal;
55

66
struct Struct
77
{
8-
packed_uint2 flags[1];
8+
uint2 flags[1];
99
};
1010

1111
struct defaultUniformsVS
@@ -29,7 +29,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant defaultUniformsVS& _9
2929
{
3030
main0_out out = {};
3131
out.gl_Position = _9.umatrix * float4(_9.uquad[int(gl_VertexIndex)].x, _9.uquad[int(gl_VertexIndex)].y, in.a_position.z, in.a_position.w);
32-
if (_9.flags.flags[0][0u] != 0u)
32+
if (_9.flags.flags[0].x != 0u)
3333
{
3434
out.gl_Position.z = 0.0;
3535
}

reference/opt/shaders-msl/comp/struct-packing.comp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ struct SSBO1
6666

6767
struct S0_1
6868
{
69-
packed_float2 a[1];
69+
float2 a[1];
7070
char _m1_pad[8];
7171
float b;
7272
char _m0_final_padding[12];
@@ -124,13 +124,13 @@ constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
124124
kernel void main0(device SSBO1& ssbo_430 [[buffer(0)]], device SSBO0& ssbo_140 [[buffer(1)]])
125125
{
126126
Content_1 _60 = ssbo_140.content;
127-
ssbo_430.content.m0s[0].a[0] = float2(_60.m0s[0].a[0]);
127+
ssbo_430.content.m0s[0].a[0] = _60.m0s[0].a[0];
128128
ssbo_430.content.m0s[0].b = _60.m0s[0].b;
129129
ssbo_430.content.m1s[0].a = float3(_60.m1s[0].a);
130130
ssbo_430.content.m1s[0].b = _60.m1s[0].b;
131131
ssbo_430.content.m2s[0].a[0] = _60.m2s[0].a[0];
132132
ssbo_430.content.m2s[0].b = _60.m2s[0].b;
133-
ssbo_430.content.m0.a[0] = float2(_60.m0.a[0]);
133+
ssbo_430.content.m0.a[0] = _60.m0.a[0];
134134
ssbo_430.content.m0.b = _60.m0.b;
135135
ssbo_430.content.m1.a = float3(_60.m1.a);
136136
ssbo_430.content.m1.b = _60.m1.b;

reference/opt/shaders-msl/vert/packed-bool-to-uint.vert

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant defaultUniformsVS& _24
2929
{
3030
main0_out out = {};
3131
out.gl_Position = _24.umatrix * float4(_24.uquad[int(gl_VertexIndex)].x, _24.uquad[int(gl_VertexIndex)].y, in.a_position.z, in.a_position.w);
32-
if (uint(_24.flags.flags[0]) != 0u)
32+
if (_24.flags.flags[0] != 0u)
3333
{
3434
out.gl_Position.z = 0.0;
3535
}

reference/opt/shaders-msl/vert/packed-bool2-to-packed_uint2.vert

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ using namespace metal;
55

66
struct Struct
77
{
8-
packed_uint2 flags[1];
8+
uint2 flags[1];
99
};
1010

1111
struct defaultUniformsVS
@@ -29,7 +29,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant defaultUniformsVS& _25
2929
{
3030
main0_out out = {};
3131
out.gl_Position = _25.umatrix * float4(_25.uquad[int(gl_VertexIndex)].x, _25.uquad[int(gl_VertexIndex)].y, in.a_position.z, in.a_position.w);
32-
if (_25.flags.flags[0][0u] != 0u)
32+
if (_25.flags.flags[0].x != 0u)
3333
{
3434
out.gl_Position.z = 0.0;
3535
}

reference/shaders-msl-no-opt/comp/struct-packing-scalar.nocompat.invalid.vk.comp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ struct SSBO1
6161

6262
struct S0_1
6363
{
64-
packed_float2 a[1];
64+
float2 a[1];
6565
char _m1_pad[8];
6666
float b;
6767
char _m0_final_padding[12];
@@ -126,13 +126,13 @@ constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
126126

127127
kernel void main0(device SSBO1& ssbo_scalar [[buffer(0)]], device SSBO0& ssbo_140 [[buffer(1)]], device SSBO2& ssbo_scalar2 [[buffer(2)]])
128128
{
129-
ssbo_scalar.content.m0s[0].a[0] = float2(ssbo_140.content.m0s[0].a[0]);
129+
ssbo_scalar.content.m0s[0].a[0] = ssbo_140.content.m0s[0].a[0];
130130
ssbo_scalar.content.m0s[0].b = ssbo_140.content.m0s[0].b;
131131
ssbo_scalar.content.m1s[0].a = float3(ssbo_140.content.m1s[0].a);
132132
ssbo_scalar.content.m1s[0].b = ssbo_140.content.m1s[0].b;
133133
ssbo_scalar.content.m2s[0].a[0] = ssbo_140.content.m2s[0].a[0];
134134
ssbo_scalar.content.m2s[0].b = ssbo_140.content.m2s[0].b;
135-
ssbo_scalar.content.m0.a[0] = float2(ssbo_140.content.m0.a[0]);
135+
ssbo_scalar.content.m0.a[0] = ssbo_140.content.m0.a[0];
136136
ssbo_scalar.content.m0.b = ssbo_140.content.m0.b;
137137
ssbo_scalar.content.m1.a = float3(ssbo_140.content.m1.a);
138138
ssbo_scalar.content.m1.b = ssbo_140.content.m1.b;

reference/shaders-msl/asm/vert/packed-bool-to-uint.asm.vert

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant defaultUniformsVS& _9
2929
{
3030
main0_out out = {};
3131
out.gl_Position = _9.umatrix * float4(_9.uquad[int(gl_VertexIndex)].x, _9.uquad[int(gl_VertexIndex)].y, in.a_position.z, in.a_position.w);
32-
if (uint(_9.flags.flags[0]) != 0u)
32+
if (_9.flags.flags[0] != 0u)
3333
{
3434
out.gl_Position.z = 0.0;
3535
}

reference/shaders-msl/asm/vert/packed-bool2-to-packed_uint2.asm.vert

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ using namespace metal;
55

66
struct Struct
77
{
8-
packed_uint2 flags[1];
8+
uint2 flags[1];
99
};
1010

1111
struct defaultUniformsVS
@@ -29,7 +29,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant defaultUniformsVS& _9
2929
{
3030
main0_out out = {};
3131
out.gl_Position = _9.umatrix * float4(_9.uquad[int(gl_VertexIndex)].x, _9.uquad[int(gl_VertexIndex)].y, in.a_position.z, in.a_position.w);
32-
if (_9.flags.flags[0][0u] != 0u)
32+
if (_9.flags.flags[0].x != 0u)
3333
{
3434
out.gl_Position.z = 0.0;
3535
}

reference/shaders-msl/comp/struct-packing.comp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ struct SSBO1
6666

6767
struct S0_1
6868
{
69-
packed_float2 a[1];
69+
float2 a[1];
7070
char _m1_pad[8];
7171
float b;
7272
char _m0_final_padding[12];
@@ -124,13 +124,13 @@ constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
124124
kernel void main0(device SSBO1& ssbo_430 [[buffer(0)]], device SSBO0& ssbo_140 [[buffer(1)]])
125125
{
126126
Content_1 _60 = ssbo_140.content;
127-
ssbo_430.content.m0s[0].a[0] = float2(_60.m0s[0].a[0]);
127+
ssbo_430.content.m0s[0].a[0] = _60.m0s[0].a[0];
128128
ssbo_430.content.m0s[0].b = _60.m0s[0].b;
129129
ssbo_430.content.m1s[0].a = float3(_60.m1s[0].a);
130130
ssbo_430.content.m1s[0].b = _60.m1s[0].b;
131131
ssbo_430.content.m2s[0].a[0] = _60.m2s[0].a[0];
132132
ssbo_430.content.m2s[0].b = _60.m2s[0].b;
133-
ssbo_430.content.m0.a[0] = float2(_60.m0.a[0]);
133+
ssbo_430.content.m0.a[0] = _60.m0.a[0];
134134
ssbo_430.content.m0.b = _60.m0.b;
135135
ssbo_430.content.m1.a = float3(_60.m1.a);
136136
ssbo_430.content.m1.b = _60.m1.b;

reference/shaders-msl/vert/packed-bool-to-uint.vert

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant defaultUniformsVS& _24
2929
{
3030
main0_out out = {};
3131
out.gl_Position = _24.umatrix * float4(_24.uquad[int(gl_VertexIndex)].x, _24.uquad[int(gl_VertexIndex)].y, in.a_position.z, in.a_position.w);
32-
if (uint(_24.flags.flags[0]) != 0u)
32+
if (_24.flags.flags[0] != 0u)
3333
{
3434
out.gl_Position.z = 0.0;
3535
}

0 commit comments

Comments
 (0)