ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_geometry_shader4 / execution / clip-distance-in-param-aoa.shader_test
blob4bc59ebe9072081a1e717891cc736709c22dd97a
1 # This test checks that when ARB_arrays_of_arrays is supported, the
2 # geometry shader can pass all of gl_ClipDistanceIn to a function.
4 [require]
5 GL >= 2.0
6 GLSL >= 1.30
7 GL_ARB_geometry_shader4
8 GL_ARB_arrays_of_arrays
10 [vertex shader]
11 #version 130
13 in vec4 vertex;
14 in float offset;
15 out float offset_to_gs;
16 out float gl_ClipDistance[gl_MaxClipDistances];
18 void main()
20   gl_Position = vertex;
21   offset_to_gs = offset;
22   for (int i = 0; i < gl_MaxClipDistances; i++) {
23     gl_ClipDistance[i] = offset + float(i);
24   }
27 [geometry shader]
28 #version 130
29 #extension GL_ARB_geometry_shader4: enable
31 in float offset_to_gs[3];
32 in float gl_ClipDistanceIn[3][gl_MaxClipDistances];
33 flat out int ok_to_fs;
35 bool test(float clip_distance_copy[3][gl_MaxClipDistances])
37   bool ok = true;
39   for (int i = 0; i < 3; i++) {
40     for (int j = 0; j < gl_MaxClipDistances; j++) {
41       if (clip_distance_copy[i][j] != offset_to_gs[i] + float(j))
42         ok = false;
43     }
44   }
46   return ok;
49 void main()
51   bool ok = test(gl_ClipDistanceIn);
52   for (int i = 0; i < 3; i++) {
53     gl_Position = gl_PositionIn[i];
54     ok_to_fs = int(ok);
55     EmitVertex();
56   }
59 [geometry layout]
60 input type GL_TRIANGLES
61 output type GL_TRIANGLE_STRIP
62 vertices out 3
64 [fragment shader]
65 #version 130
67 flat in int ok_to_fs;
69 void main()
71   if (ok_to_fs != 0)
72     gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
73   else
74     gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
77 [vertex data]
78 vertex/float/2  offset/float/1
79 -1.0 -1.0       1.0
80  1.0 -1.0       2.0
81  1.0  1.0       3.0
82 -1.0  1.0       4.0
84 [test]
85 draw arrays GL_TRIANGLE_FAN 0 4
86 probe all rgba 0.0 1.0 0.0 1.0