mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-05-15 20:01:22 +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>
59 lines
1.8 KiB
GLSL
59 lines
1.8 KiB
GLSL
#version 310 es
|
|
|
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
void unused_entry_point() {
|
|
return;
|
|
}
|
|
struct S {
|
|
ivec4 arr[4];
|
|
};
|
|
|
|
ivec4 src_private[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
|
|
shared ivec4 src_workgroup[4];
|
|
layout(binding = 0, std140) uniform src_uniform_block_ubo {
|
|
S inner;
|
|
} src_uniform;
|
|
|
|
layout(binding = 1, std430) buffer src_uniform_block_ssbo {
|
|
S inner;
|
|
} src_storage;
|
|
|
|
layout(binding = 2, std430) buffer src_uniform_block_ssbo_1 {
|
|
S inner;
|
|
} dst;
|
|
|
|
layout(binding = 3, std430) buffer S_nested_ssbo {
|
|
int arr[4][3][2];
|
|
} dst_nested;
|
|
|
|
ivec4[4] ret_arr() {
|
|
ivec4 tint_symbol_2[4] = ivec4[4](ivec4(0), ivec4(0), ivec4(0), ivec4(0));
|
|
return tint_symbol_2;
|
|
}
|
|
|
|
S ret_struct_arr() {
|
|
S tint_symbol_3 = S(ivec4[4](ivec4(0), ivec4(0), ivec4(0), ivec4(0)));
|
|
return tint_symbol_3;
|
|
}
|
|
|
|
void foo(ivec4 src_param[4]) {
|
|
ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
|
|
ivec4 tint_symbol_4[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
|
|
dst.inner.arr = tint_symbol_4;
|
|
dst.inner.arr = src_param;
|
|
ivec4 tint_symbol[4] = ret_arr();
|
|
dst.inner.arr = tint_symbol;
|
|
ivec4 src_let[4] = ivec4[4](ivec4(0), ivec4(0), ivec4(0), ivec4(0));
|
|
dst.inner.arr = src_let;
|
|
dst.inner.arr = src_function;
|
|
dst.inner.arr = src_private;
|
|
dst.inner.arr = src_workgroup;
|
|
S tint_symbol_1 = ret_struct_arr();
|
|
dst.inner.arr = tint_symbol_1.arr;
|
|
dst.inner.arr = src_uniform.inner.arr;
|
|
dst.inner.arr = src_storage.inner.arr;
|
|
int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));
|
|
dst_nested.arr = src_nested;
|
|
}
|
|
|