ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / oes_viewport_array / viewport-gs-writes-out-of-range.shader_test
blobea00b3f94b5df91ce7b8da476993a984cd51933f
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 out of 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=9) out;
24 const int vps[] = int[]( -1, 16, 2048 );
25 flat out int vp_written;
27 void main()
29         for (int vp = 0; vp < vps.length(); vp++) {
31                 for (int i = 0; i < 3; i++) {
32                         gl_Position = gl_in[i].gl_Position;
33                         vp_written = vps[vp];
34                         gl_ViewportIndex = vps[vp];
35                         EmitVertex();
36                 }
38                 EndPrimitive();
39         }
42 [fragment shader]
43 #version 310 es
44 #extension GL_OES_viewport_array: require
45 precision highp int;
46 precision highp float;
48 flat in int vp_written;
50 layout(binding = 0) uniform atomic_uint mismatches;
52 out vec4 color;
54 void main()
56         if (vp_written != gl_ViewportIndex)
57                 atomicCounterIncrement(mismatches);
59         color = vec4(0);
62 [test]
63 texture junk 2DArray 0 ( 64 , 64 , 1 )
64 fb tex layered 0
66 atomic counters 1
69 draw rect -1 -1 2 2
71 probe atomic counter 0 == 0