ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / oes_viewport_array / viewport-gs-writes-in-range.shader_test
blob98508b800e84babfff8ac374f059a5727537a557
1 [require]
2 GL ES >= 3.1
3 GLSL ES >= 3.10
4 GL_OES_geometry_shader
5 GL_OES_viewport_array
8 # Ensure that the fragment stage reads the same value for gl_ViewportIndex as was
9 # written by the geometry stage.
11 # This test covers the case where the value written is in range.
14 [vertex shader passthrough]
16 [geometry shader]
17 #version 310 es
18 #extension GL_OES_geometry_shader: require
19 #extension GL_OES_viewport_array: require
21 layout(triangles) in;
22 layout(triangle_strip, max_vertices=48) out;
24 flat out int vp_written;
26 void main()
28         for (int vp = 0; vp < 16; vp++) {
30                 for (int i = 0; i < 3; i++) {
31                         gl_Position = gl_in[i].gl_Position;
32                         vp_written = vp;
33                         gl_ViewportIndex = vp;
34                         EmitVertex();
35                 }
37                 EndPrimitive();
38         }
41 [fragment shader]
42 #version 310 es
43 #extension GL_OES_viewport_array: require
44 precision highp int;
45 precision highp float;
47 flat in int vp_written;
49 layout(binding = 0) uniform atomic_uint matches;
50 layout(binding = 0) uniform atomic_uint mismatches;
52 out vec4 color;
54 void main()
56         if (vp_written == gl_ViewportIndex)
57                 atomicCounterIncrement(matches);
58         else
59                 atomicCounterIncrement(mismatches);
61         color = vec4(0);
64 [test]
65 texture junk 2DArray 0 ( 64 , 64 , 1 )
66 fb tex layered 0
68 atomic counters 2
71 draw rect -1 -1 2 2
73 probe atomic counter 0 != 0
74 probe atomic counter 1 == 0