1617a3babSopenharmony_ci#version 450
2617a3babSopenharmony_ci
3617a3babSopenharmony_ci
4617a3babSopenharmony_ci
5617a3babSopenharmony_cilayout(binding = 0) uniform atomic_uint counter;
6617a3babSopenharmony_ci
7617a3babSopenharmony_cilayout(binding = 0, offset = 4) uniform atomic_uint countArr[4];
8617a3babSopenharmony_cishared uint value;
9617a3babSopenharmony_ci
10617a3babSopenharmony_ciint arrX[gl_WorkGroupSize.x];
11617a3babSopenharmony_ciint arrY[gl_WorkGroupSize.y];
12617a3babSopenharmony_ciint arrZ[gl_WorkGroupSize.z];
13617a3babSopenharmony_ci
14617a3babSopenharmony_ciuint func(atomic_uint c)
15617a3babSopenharmony_ci{
16617a3babSopenharmony_ci    return atomicCounterIncrement(c);
17617a3babSopenharmony_ci}
18617a3babSopenharmony_ci
19617a3babSopenharmony_civoid main()
20617a3babSopenharmony_ci{
21617a3babSopenharmony_ci    memoryBarrierAtomicCounter();
22617a3babSopenharmony_ci    func(counter);
23617a3babSopenharmony_ci    uint val = atomicCounter(countArr[2]);
24617a3babSopenharmony_ci    atomicCounterDecrement(counter);
25617a3babSopenharmony_ci    atomicCounterIncrement(counter);
26617a3babSopenharmony_ci}
27617a3babSopenharmony_ci
28617a3babSopenharmony_cishared int atomi;
29617a3babSopenharmony_cishared uint atomu;
30617a3babSopenharmony_ci
31617a3babSopenharmony_cilayout (std140, binding = 0) restrict buffer dataSSB
32617a3babSopenharmony_ci{
33617a3babSopenharmony_ci    float f;
34617a3babSopenharmony_ci    ivec4 n_frames_rendered;
35617a3babSopenharmony_ci} result;
36617a3babSopenharmony_ci
37617a3babSopenharmony_civoid atoms()
38617a3babSopenharmony_ci{
39617a3babSopenharmony_ci    int origi = atomicAdd(atomi, 3);
40617a3babSopenharmony_ci    uint origu = atomicAnd(atomu, value);
41617a3babSopenharmony_ci    origu = atomicOr(atomu, 7u);
42617a3babSopenharmony_ci    origu = atomicXor(atomu, 7u);
43617a3babSopenharmony_ci    origu = atomicMin(atomu, value);
44617a3babSopenharmony_ci    origi = atomicMax(atomi, 7);
45617a3babSopenharmony_ci    origi = atomicExchange(atomi, origi);
46617a3babSopenharmony_ci    origu = atomicCompSwap(atomu, 10u, value);
47617a3babSopenharmony_ci    atomicAdd(result.n_frames_rendered.z, 1);
48617a3babSopenharmony_ci}
49