xref: /aosp_15_r20/external/skia/tests/sksl/compute/AtomicDeclarations.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1diagnostic(off, derivative_uniformity);
2diagnostic(off, chromium.unreachable_code);
3struct ssbo {
4  ssboAtomic: atomic<u32>,
5  ssboAtomicArray: array<atomic<u32>, 2>,
6  ssboStructWithAtomicMember: S,
7  ssboStructWithAtomicMemberArray: array<_skArrayElement_S, 2>,
8  ssboNestedStructWithAtomicMember: NestedS,
9};
10@group(0) @binding(0) var<storage, read_write> _storage0 : ssbo;
11struct S {
12  structMemberAtomic: atomic<u32>,
13  structMemberAtomicArray: array<atomic<u32>, 2>,
14};
15struct NestedS {
16  nestedStructWithAtomicMember: S,
17};
18var<workgroup> wgAtomic: atomic<u32>;
19var<workgroup> wgAtomicArray: array<atomic<u32>, 2>;
20var<workgroup> wgNestedStructWithAtomicMember: NestedS;
21fn _skslMain() {
22  {
23    let _skTemp1 = atomicLoad(&wgAtomic);
24    let _skTemp2 = atomicAdd(&wgAtomicArray[1], _skTemp1);
25    let _skTemp3 = atomicLoad(&wgAtomicArray[1]);
26    let _skTemp4 = atomicAdd(&wgAtomicArray[0], _skTemp3);
27    let _skTemp5 = atomicAdd(&wgNestedStructWithAtomicMember.nestedStructWithAtomicMember.structMemberAtomic, 1u);
28  }
29}
30@compute @workgroup_size(64, 1, 1) fn main() {
31  _skslMain();
32}
33struct _skArrayElement_S {
34  @size(16) e : S
35};
36