xref: /aosp_15_r20/external/angle/third_party/glslang/src/Test/spv.structCopy.comp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1#version 460
2layout(local_size_x = 512, local_size_y = 1) in;
3layout(std430) buffer;
4
5struct MyStruct {
6  uint a;
7  uint b;
8  uint c;
9};
10
11layout(binding = 0) buffer MyStructs {
12  uint count;
13  MyStruct data[];
14}
15my_structs;
16
17layout(binding = 1) buffer Output {
18  uint a;
19  uint b;
20  uint c;
21}
22o;
23
24shared MyStruct s[512];
25
26void main() {
27  s[0] = MyStruct(1, 2, 3);
28
29  uint id = gl_GlobalInvocationID.x;
30  MyStruct ms =
31      id > my_structs.count ? s[id - my_structs.count] : my_structs.data[id];
32
33  atomicAdd(o.a, ms.a);
34  atomicAdd(o.b, ms.b);
35  atomicAdd(o.c, ms.c);
36}
37
38