12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #version 420 core
- layout(binding = 0) uniform atomic_uint counter;
- uint func(atomic_uint c)
- {
- return atomicCounterIncrement(c);
- }
- uint func2(out atomic_uint c) // ERROR
- {
- return counter; // ERROR, type mismatch
- return atomicCounter(counter);
- }
- void main()
- {
- atomic_uint non_uniform_counter; // ERROR
- uint val = atomicCounter(counter);
- atomicCounterDecrement(counter);
- }
- layout(binding = 1, offset = 3) uniform atomic_uint countArr[4];
- uniform int i;
- void opac()
- {
- counter + counter; // ERROR
- -counter; // ERROR
- int a[3];
- a[counter]; // ERROR
- countArr[2];
- countArr[i];
- counter = 4; // ERROR
- }
- in atomic_uint acin; // ERROR
- atomic_uint acg; // ERROR
- uniform atomic_uint;
- uniform atomic_uint aNoBind; // ERROR, no binding
- layout(binding=0, offset=32) uniform atomic_uint aOffset;
- layout(binding=0, offset=4) uniform atomic_uint;
- layout(binding=0) uniform atomic_uint bar3; // offset is 4
- layout(binding=0) uniform atomic_uint ac[3]; // offset = 8
- layout(binding=0) uniform atomic_uint ad; // offset = 20
- layout(offset=8) uniform atomic_uint bar4; // ERROR, no binding
- layout(binding = 0, offset = 12) uniform atomic_uint overlap; // ERROR, overlapping offsets
- layout(binding = 20) uniform atomic_uint bigBind; // ERROR, binding too big
|