ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_shader_atomic_counters / execution / vs-simple-inc-dec-read.shader_test
blob16ea9db354527f2d3f89350edf0f83637ecb39b8
1 # Simple test of atomicCounterIncrement, atomicCounterDecrement and
2 # atomicCounter being used in the VS.
4 [require]
5 GLSL >= 1.40
6 GL_ARB_shader_atomic_counters
7 INT GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS >= 2
9 [vertex shader]
10 #version 140
11 #extension GL_ARB_shader_atomic_counters: require
13 layout(binding = 0) uniform atomic_uint a0;
14 layout(binding = 0) uniform atomic_uint a1;
16 in vec4 piglit_vertex;
17 out vec4 vcolor;
19 void main()
21         bool passed = true;
22         uint v0, v1;
24         /* Test that incrementing, followed by a read of an atomic
25          * counter results in a larger value.
26          *
27          * Note: atomicCounterIncrement return the old value
28          */
29         v0 = atomicCounterIncrement(a0);
30         v1 = atomicCounter(a0);
31         if (v1 <= v0)
32                 passed = false;
34         /* Skip one decrement since it may be the 0 => 0xffffffff
35          * transition.
36          */
37         atomicCounterDecrement(a1);
39         /* Test that a read, followed by a decrement of an atomic
40          * counter results in a smaller value.
41          *
42          * Note: atomicCounterDecrement return the new value
43          */
44         v0 = atomicCounter(a1);
45         v1 = atomicCounterDecrement(a1);
46         if (v1 >= v0)
47                 passed = false;
49         if (passed)
50                 vcolor = vec4(0.0, 1.0, 0.0, 1.0);
51         else
52                 vcolor = vec4(1.0, 0.0, 0.0, 1.0);
54         gl_Position = piglit_vertex;
57 [fragment shader]
58 #version 140
59 in vec4 vcolor;
60 out vec4 fcolor;
62 void main()
64         fcolor = vcolor;
67 [test]
68 atomic counters 2
70 draw rect -1 -1 2 2
71 probe all rgba 0.0 1.0 0.0 1.0