summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/atomic_uint.frag
blob: 1234435695ca51c1fb0075b24b8246a8e24c956e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#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