mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-14 17:16:01 +00:00
This transform breaks up matNx2<f32> matrices used in uniform buffers into column vectors, which fixes std140 layout rules. Used by the SPIR-V and GLSL backends. Re-enable tests that were disabled for these cases. Bug: tint:1632 Change-Id: I596d016582b4189a0b413d762b3e7eabd3504b22 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/100907 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Ben Clayton <bclayton@chromium.org>
80 lines
981 B
GLSL
80 lines
981 B
GLSL
#version 310 es
|
|
|
|
struct Inner {
|
|
int x;
|
|
};
|
|
|
|
struct S {
|
|
ivec3 a;
|
|
int b;
|
|
uvec3 c;
|
|
uint d;
|
|
vec3 e;
|
|
float f;
|
|
ivec2 g;
|
|
ivec2 h;
|
|
mat2x3 i;
|
|
mat3x2 j;
|
|
Inner k;
|
|
Inner l[4];
|
|
};
|
|
|
|
struct S_std140 {
|
|
ivec3 a;
|
|
int b;
|
|
uvec3 c;
|
|
uint d;
|
|
vec3 e;
|
|
float f;
|
|
ivec2 g;
|
|
ivec2 h;
|
|
mat2x3 i;
|
|
vec2 j_0;
|
|
vec2 j_1;
|
|
vec2 j_2;
|
|
Inner k;
|
|
Inner l[4];
|
|
};
|
|
|
|
layout(binding = 0) uniform S_std140_1 {
|
|
ivec3 a;
|
|
int b;
|
|
uvec3 c;
|
|
uint d;
|
|
vec3 e;
|
|
float f;
|
|
ivec2 g;
|
|
ivec2 h;
|
|
mat2x3 i;
|
|
vec2 j_0;
|
|
vec2 j_1;
|
|
vec2 j_2;
|
|
Inner k;
|
|
Inner l[4];
|
|
} s;
|
|
|
|
mat3x2 load_s_j() {
|
|
return mat3x2(s.j_0, s.j_1, s.j_2);
|
|
}
|
|
|
|
void tint_symbol() {
|
|
ivec3 a = s.a;
|
|
int b = s.b;
|
|
uvec3 c = s.c;
|
|
uint d = s.d;
|
|
vec3 e = s.e;
|
|
float f = s.f;
|
|
ivec2 g = s.g;
|
|
ivec2 h = s.h;
|
|
mat2x3 i = s.i;
|
|
mat3x2 j = load_s_j();
|
|
Inner k = s.k;
|
|
Inner l[4] = s.l;
|
|
}
|
|
|
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
void main() {
|
|
tint_symbol();
|
|
return;
|
|
}
|