ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_geometry_shader4 / execution / clip-distance-in-values.shader_test
bloba9c476027dd28982c84815b41383ad70114c9eb8
1 # This test checks that values sent to gl_ClipDistance by the vertex
2 # shader are correctly received by the geometry shader.
4 [require]
5 GL >= 2.0
6 GLSL >= 1.30
7 GL_ARB_geometry_shader4
9 [vertex shader]
10 #version 130
12 in vec4 vertex;
13 in float offset;
14 out float offset_to_gs;
15 out float gl_ClipDistance[gl_MaxClipDistances];
17 void main()
19   gl_Position = vertex;
20   offset_to_gs = offset;
21   for (int i = 0; i < gl_MaxClipDistances; i++) {
22     gl_ClipDistance[i] = offset + float(i);
23   }
26 [geometry shader]
27 #version 130
28 #extension GL_ARB_geometry_shader4: enable
30 in float offset_to_gs[3];
31 in float gl_ClipDistanceIn[3][gl_MaxClipDistances];
32 flat out int ok_to_fs;
34 void main()
36   bool ok = true;
37   for (int i = 0; i < 3; i++) {
38     for (int j = 0; j < gl_MaxClipDistances; j++) {
39       if (gl_ClipDistanceIn[i][j] != offset_to_gs[i] + float(j))
40         ok = false;
41     }
42   }
43   for (int i = 0; i < 3; i++) {
44     gl_Position = gl_PositionIn[i];
45     ok_to_fs = int(ok);
46     EmitVertex();
47   }
50 [geometry layout]
51 input type GL_TRIANGLES
52 output type GL_TRIANGLE_STRIP
53 vertices out 3
55 [fragment shader]
56 #version 130
58 flat in int ok_to_fs;
60 void main()
62   if (ok_to_fs != 0)
63     gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
64   else
65     gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
68 [vertex data]
69 vertex/float/2  offset/float/1
70 -1.0 -1.0       1.0
71  1.0 -1.0       2.0
72  1.0  1.0       3.0
73 -1.0  1.0       4.0
75 [test]
76 draw arrays GL_TRIANGLE_FAN 0 4
77 probe all rgba 0.0 1.0 0.0 1.0