mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-04 05:31:27 +00:00
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>
40 lines
799 B
GLSL
40 lines
799 B
GLSL
#version 310 es
|
|
|
|
struct strided_arr {
|
|
vec2 el;
|
|
uint pad;
|
|
uint pad_1;
|
|
};
|
|
|
|
layout(binding = 0, std430) buffer SSBO_ssbo {
|
|
strided_arr m[2];
|
|
} ssbo;
|
|
|
|
mat2 arr_to_mat2x2_stride_16(strided_arr arr[2]) {
|
|
return mat2(arr[0u].el, arr[1u].el);
|
|
}
|
|
|
|
strided_arr[2] mat2x2_stride_16_to_arr(mat2 m) {
|
|
strided_arr tint_symbol_1 = strided_arr(m[0u], 0u, 0u);
|
|
strided_arr tint_symbol_2 = strided_arr(m[1u], 0u, 0u);
|
|
strided_arr tint_symbol_3[2] = strided_arr[2](tint_symbol_1, tint_symbol_2);
|
|
return tint_symbol_3;
|
|
}
|
|
|
|
void f_1() {
|
|
mat2 x_15 = arr_to_mat2x2_stride_16(ssbo.m);
|
|
strided_arr tint_symbol[2] = mat2x2_stride_16_to_arr(x_15);
|
|
ssbo.m = tint_symbol;
|
|
return;
|
|
}
|
|
|
|
void f() {
|
|
f_1();
|
|
}
|
|
|
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
void main() {
|
|
f();
|
|
return;
|
|
}
|