| #version 420 core | |
| layout(binding = 0) uniform atomic_uint counter; | |
| layout(binding = 0, offset = 9) 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[2]; // 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 |