49 lines
1.4 KiB
GLSL
49 lines
1.4 KiB
GLSL
|
#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
|