Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / spv.atomic.comp
1 #version 450\r
2 \r
3 \r
4 \r
5 layout(binding = 0) uniform atomic_uint counter;\r
6 \r
7 layout(binding = 0, offset = 4) uniform atomic_uint countArr[4];\r
8 shared uint value;\r
9 \r
10 int arrX[gl_WorkGroupSize.x];\r
11 int arrY[gl_WorkGroupSize.y];\r
12 int arrZ[gl_WorkGroupSize.z];\r
13 \r
14 uint func(atomic_uint c)\r
15 {\r
16     return atomicCounterIncrement(c);\r
17 }\r
18 \r
19 void main()\r
20 {\r
21     memoryBarrierAtomicCounter();\r
22     func(counter);\r
23     uint val = atomicCounter(countArr[2]);\r
24     atomicCounterDecrement(counter);\r
25     atomicCounterIncrement(counter);\r
26 }\r
27 \r
28 shared int atomi;\r
29 shared uint atomu;\r
30 \r
31 layout (std140, binding = 0) restrict buffer dataSSB\r
32 {\r
33     float f;\r
34     ivec4 n_frames_rendered;\r
35 } result;\r
36 \r
37 void atoms()\r
38 {\r
39     int origi = atomicAdd(atomi, 3);\r
40     uint origu = atomicAnd(atomu, value);\r
41     origu = atomicOr(atomu, 7u);\r
42     origu = atomicXor(atomu, 7u);\r
43     origu = atomicMin(atomu, value);\r
44     origi = atomicMax(atomi, 7);\r
45     origi = atomicExchange(atomi, origi);\r
46     origu = atomicCompSwap(atomu, 10u, value);\r
47     atomicAdd(result.n_frames_rendered.z, 1);\r
48 }\r