mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-09 21:47:47 +00:00
GLSL: implement host-visible memory padding.
Since GLSL ES does not support the offset= attribute, struct members with explicit @align or @size attributes require adding explicit padding members. This in turn requires rewriting any constructor calls to initialize the new padding to zero, handled in the same transform. Note that this is currently overly-verbose, and will add padding where GLSL doesn't technically need it (e.g., padding a vec3 out to 16 bytes). Bug: tint:1415 Change-Id: Ia9ba513066a0e84f4c43247fcbbe02f5fadd6630 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/101720 Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: Stephen White <senorblanco@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
26ffcd1768
commit
05d8b02b0f
@@ -17,7 +17,7 @@ struct Outer_std140 {
|
||||
Inner_std140 a[4];
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform a_block_ubo {
|
||||
layout(binding = 0, std140) uniform a_block_ubo {
|
||||
Outer_std140 inner[4];
|
||||
} a;
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ struct Outer_std140 {
|
||||
Inner_std140 a[4];
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform a_block_ubo {
|
||||
layout(binding = 0, std140) uniform a_block_ubo {
|
||||
Outer_std140 inner[4];
|
||||
} a;
|
||||
|
||||
|
||||
@@ -8,12 +8,14 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -8,12 +8,14 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -8,12 +8,14 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -2,18 +2,22 @@
|
||||
|
||||
struct S {
|
||||
int before;
|
||||
uint pad;
|
||||
mat2 m;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad_2;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
int after;
|
||||
uint pad_3;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
@@ -22,12 +26,12 @@ layout(binding = 1, std430) buffer s_block_ssbo {
|
||||
} s;
|
||||
|
||||
S conv_S(S_std140 val) {
|
||||
S tint_symbol = S(val.before, mat2(val.m_0, val.m_1), val.after);
|
||||
S tint_symbol = S(val.before, 0u, mat2(val.m_0, val.m_1), val.after, 0u);
|
||||
return tint_symbol;
|
||||
}
|
||||
|
||||
S[4] conv_arr_4_S(S_std140 val[4]) {
|
||||
S arr[4] = S[4](S(0, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0));
|
||||
S arr[4] = S[4](S(0, 0u, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0, 0u));
|
||||
{
|
||||
for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
||||
arr[i] = conv_S(val[i]);
|
||||
|
||||
@@ -8,12 +8,14 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -8,6 +8,16 @@ struct Inner_std140 {
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
uint pad;
|
||||
uint pad_1;
|
||||
uint pad_2;
|
||||
uint pad_3;
|
||||
uint pad_4;
|
||||
uint pad_5;
|
||||
uint pad_6;
|
||||
uint pad_7;
|
||||
uint pad_8;
|
||||
uint pad_9;
|
||||
};
|
||||
|
||||
struct Outer {
|
||||
@@ -18,7 +28,7 @@ struct Outer_std140 {
|
||||
Inner_std140 a[4];
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform a_block_ubo {
|
||||
layout(binding = 0, std140) uniform a_block_ubo {
|
||||
Outer_std140 inner[4];
|
||||
} a;
|
||||
|
||||
|
||||
@@ -8,6 +8,16 @@ struct Inner_std140 {
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
uint pad;
|
||||
uint pad_1;
|
||||
uint pad_2;
|
||||
uint pad_3;
|
||||
uint pad_4;
|
||||
uint pad_5;
|
||||
uint pad_6;
|
||||
uint pad_7;
|
||||
uint pad_8;
|
||||
uint pad_9;
|
||||
};
|
||||
|
||||
struct Outer {
|
||||
@@ -18,7 +28,7 @@ struct Outer_std140 {
|
||||
Inner_std140 a[4];
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform a_block_ubo {
|
||||
layout(binding = 0, std140) uniform a_block_ubo {
|
||||
Outer_std140 inner[4];
|
||||
} a;
|
||||
|
||||
|
||||
@@ -8,13 +8,17 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
uint pad_1;
|
||||
uint pad_2;
|
||||
int after;
|
||||
uint pad_3;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -8,13 +8,25 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
uint pad_1;
|
||||
uint pad_2;
|
||||
uint pad_3;
|
||||
uint pad_4;
|
||||
uint pad_5;
|
||||
uint pad_6;
|
||||
uint pad_7;
|
||||
uint pad_8;
|
||||
uint pad_9;
|
||||
uint pad_10;
|
||||
int after;
|
||||
uint pad_11;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -8,13 +8,25 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
uint pad_1;
|
||||
uint pad_2;
|
||||
uint pad_3;
|
||||
uint pad_4;
|
||||
uint pad_5;
|
||||
uint pad_6;
|
||||
uint pad_7;
|
||||
uint pad_8;
|
||||
uint pad_9;
|
||||
uint pad_10;
|
||||
int after;
|
||||
uint pad_11;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -2,19 +2,43 @@
|
||||
|
||||
struct S {
|
||||
int before;
|
||||
uint pad;
|
||||
mat3x2 m;
|
||||
uint pad_1;
|
||||
uint pad_2;
|
||||
uint pad_3;
|
||||
uint pad_4;
|
||||
uint pad_5;
|
||||
uint pad_6;
|
||||
uint pad_7;
|
||||
uint pad_8;
|
||||
uint pad_9;
|
||||
uint pad_10;
|
||||
int after;
|
||||
uint pad_11;
|
||||
};
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad_12;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
uint pad_13;
|
||||
uint pad_14;
|
||||
uint pad_15;
|
||||
uint pad_16;
|
||||
uint pad_17;
|
||||
uint pad_18;
|
||||
uint pad_19;
|
||||
uint pad_20;
|
||||
uint pad_21;
|
||||
uint pad_22;
|
||||
int after;
|
||||
uint pad_23;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
@@ -23,12 +47,12 @@ layout(binding = 1, std430) buffer s_block_ssbo {
|
||||
} s;
|
||||
|
||||
S conv_S(S_std140 val) {
|
||||
S tint_symbol = S(val.before, mat3x2(val.m_0, val.m_1, val.m_2), val.after);
|
||||
S tint_symbol = S(val.before, 0u, mat3x2(val.m_0, val.m_1, val.m_2), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, val.after, 0u);
|
||||
return tint_symbol;
|
||||
}
|
||||
|
||||
S[4] conv_arr_4_S(S_std140 val[4]) {
|
||||
S arr[4] = S[4](S(0, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0));
|
||||
S arr[4] = S[4](S(0, 0u, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0, 0u), S(0, 0u, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0, 0u), S(0, 0u, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0, 0u), S(0, 0u, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0, 0u));
|
||||
{
|
||||
for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
||||
arr[i] = conv_S(val[i]);
|
||||
|
||||
@@ -8,13 +8,25 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
uint pad_1;
|
||||
uint pad_2;
|
||||
uint pad_3;
|
||||
uint pad_4;
|
||||
uint pad_5;
|
||||
uint pad_6;
|
||||
uint pad_7;
|
||||
uint pad_8;
|
||||
uint pad_9;
|
||||
uint pad_10;
|
||||
int after;
|
||||
uint pad_11;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ struct Outer_std140 {
|
||||
Inner_std140 a[4];
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform a_block_ubo {
|
||||
layout(binding = 0, std140) uniform a_block_ubo {
|
||||
Outer_std140 inner[4];
|
||||
} a;
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ struct Outer_std140 {
|
||||
Inner_std140 a[4];
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform a_block_ubo {
|
||||
layout(binding = 0, std140) uniform a_block_ubo {
|
||||
Outer_std140 inner[4];
|
||||
} a;
|
||||
|
||||
|
||||
@@ -8,14 +8,16 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
vec2 m_3;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -8,14 +8,16 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
vec2 m_3;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -8,14 +8,16 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
vec2 m_3;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
@@ -2,20 +2,24 @@
|
||||
|
||||
struct S {
|
||||
int before;
|
||||
uint pad;
|
||||
mat4x2 m;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad_2;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
vec2 m_3;
|
||||
int after;
|
||||
uint pad_3;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
@@ -24,12 +28,12 @@ layout(binding = 1, std430) buffer s_block_ssbo {
|
||||
} s;
|
||||
|
||||
S conv_S(S_std140 val) {
|
||||
S tint_symbol = S(val.before, mat4x2(val.m_0, val.m_1, val.m_2, val.m_3), val.after);
|
||||
S tint_symbol = S(val.before, 0u, mat4x2(val.m_0, val.m_1, val.m_2, val.m_3), val.after, 0u);
|
||||
return tint_symbol;
|
||||
}
|
||||
|
||||
S[4] conv_arr_4_S(S_std140 val[4]) {
|
||||
S arr[4] = S[4](S(0, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0));
|
||||
S arr[4] = S[4](S(0, 0u, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0, 0u));
|
||||
{
|
||||
for(uint i = 0u; (i < 4u); i = (i + 1u)) {
|
||||
arr[i] = conv_S(val[i]);
|
||||
|
||||
@@ -8,14 +8,16 @@ struct S {
|
||||
|
||||
struct S_std140 {
|
||||
int before;
|
||||
uint pad;
|
||||
vec2 m_0;
|
||||
vec2 m_1;
|
||||
vec2 m_2;
|
||||
vec2 m_3;
|
||||
int after;
|
||||
uint pad_1;
|
||||
};
|
||||
|
||||
layout(binding = 0) uniform u_block_ubo {
|
||||
layout(binding = 0, std140) uniform u_block_ubo {
|
||||
S_std140 inner[4];
|
||||
} u;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user