ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_geometry_shader4 / execution / clip-distance-in-bulk-read-aoa.shader_test
blob7765415d227fd8c9317065da9e1f72d7f65a1cfa
1 # This test checks that when ARB_arrays_of_arrays is supported, the
2 # geometry shader can read all of gl_ClipDistanceIn using a single
3 # bulk assignment.
5 [require]
6 GL >= 2.0
7 GLSL >= 1.30
8 GL_ARB_geometry_shader4
9 GL_ARB_arrays_of_arrays
11 [vertex shader]
12 #version 130
14 in vec4 vertex;
15 in float offset;
16 out float offset_to_gs;
17 out float gl_ClipDistance[gl_MaxClipDistances];
19 void main()
21   gl_Position = vertex;
22   offset_to_gs = offset;
23   for (int i = 0; i < gl_MaxClipDistances; i++) {
24     gl_ClipDistance[i] = offset + float(i);
25   }
28 [geometry shader]
29 #version 130
30 #extension GL_ARB_geometry_shader4: enable
31 #extension GL_ARB_arrays_of_arrays: enable
33 in float offset_to_gs[3];
34 in float gl_ClipDistanceIn[3][gl_MaxClipDistances];
35 flat out int ok_to_fs;
36 uniform float foo;
38 void main()
40   bool ok = true;
41   float clip_distance_copy[3][gl_MaxClipDistances] = gl_ClipDistanceIn;
43   /* Make sure the copy doesn't get optimized out */
44   clip_distance_copy[0][0] += foo;
46   for (int i = 0; i < 3; i++) {
47     for (int j = 0; j < gl_MaxClipDistances; j++) {
48       if (clip_distance_copy[i][j] != offset_to_gs[i] + float(j))
49         ok = false;
50     }
51   }
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 uniform float foo 0.0
86 draw arrays GL_TRIANGLE_FAN 0 4
87 probe all rgba 0.0 1.0 0.0 1.0