ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_geometry_shader4 / execution / 2darray-basic.shader_test
blob98ca3e781ad749bbbd6aa1207bba2036274d369d
1 #Basic test of gs 2d input arrays
2 [require]
3 GL >= 2.0
4 GLSL >= 1.20
5 GL_ARB_geometry_shader4
7 [vertex shader]
8 #version 120
10 attribute vec4 vertex;
11 attribute float offset;
13 varying float gs_input[6];
14 varying float gs_offset;
16 void main()
18         for (int i = 0; i < 6; i++)
19                 gs_input[i] = offset + float(i);
20         gs_offset = offset;
21         gl_Position = vertex;
24 [geometry shader]
25 #version 120
26 #extension GL_ARB_geometry_shader4: enable
28 uniform int zero;
30 varying in float gs_offset[];
31 varying in float gs_input[][6];
33 varying out float fs_ok;
35 void main()
37         bool ok = true;
39         for (int i = 0; i < gl_VerticesIn; i++) {
40                 for (int j = 0; j < 6; j++) {
41                         if (gs_input[i][j] != gs_offset[i] + float(j))
42                                 ok = false;
43                 }
44         }
46         for (int i = 0; i < gl_VerticesIn; i++) {
47                 fs_ok = float(ok);
48                 gl_Position = gl_PositionIn[i];
49                 EmitVertex();
50         }
53 [geometry layout]
54 input type GL_TRIANGLES
55 output type GL_TRIANGLE_STRIP
56 vertices out 3
58 [fragment shader]
59 #version 120
61 const int gs_VerticesIn = 3;
63 varying float fs_ok;
65 void main()
67         if (distance(fs_ok, 1.0) < 1e-6)
68                 gl_FragColor = vec4(0, 1, 0, 1);
69         else
70                 gl_FragColor = vec4(1, 0, 0, 1);
73 [vertex data]
74 vertex/float/2  offset/float/1
75 -1.0 -1.0       1.0
76  1.0 -1.0       2.0
77  1.0  1.0       3.0
78 -1.0  1.0       4.0
80 [test]
81 draw arrays GL_TRIANGLE_FAN 0 4
82 probe all rgb 0 1 0