ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_tessellation_shader / execution / double-array-vs-tcs-tes.shader_test
blobda8397e6602098b0f9a4c15f135ff169b5ff80f1
1 # simple double array through vs->tcs->tes->fs.
2 [require]
3 GLSL >= 1.50
4 GL_ARB_tessellation_shader
5 GL_ARB_gpu_shader_fp64
7 [vertex shader]
8 #extension GL_ARB_gpu_shader_fp64: require
10 in vec4 vertex;
12 out VS {
13   double vs_var0[2];
16 void main()
18         gl_Position = vertex;
19         vs_var0[0] = 1.0LF;
20         vs_var0[1] = 2.0LF;
24 [tessellation control shader]
25 #extension GL_ARB_tessellation_shader: require
26 #extension GL_ARB_gpu_shader_fp64: require
27 layout(vertices = 3) out;
29 in VS {
30    double vs_var0[2];
31 } inp[];
33 out TCS {
34    double tcs_var0[2];
35 } outp[];
37 void main() {
38         gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
39         gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 0.0);
40         gl_TessLevelInner = float[2](0.0, 0.0);
41         outp[gl_InvocationID].tcs_var0[0] = inp[gl_InvocationID].vs_var0[0] + 2.0LF;
42         outp[gl_InvocationID].tcs_var0[1] = inp[gl_InvocationID].vs_var0[1] + 3.0LF;
46 [tessellation evaluation shader]
47 #extension GL_ARB_tessellation_shader: require
48 #extension GL_ARB_gpu_shader_fp64: require
49 layout(triangles) in;
51 in TCS {
52    double tcs_var0[2];
53 } inp[];
55 out TES {
56    flat double tes_var0[2];
59 void main() {
60         dvec2 temp;
61         gl_Position = gl_in[0].gl_Position * gl_TessCoord[0]
62                     + gl_in[1].gl_Position * gl_TessCoord[1]
63                     + gl_in[2].gl_Position * gl_TessCoord[2];
65         tes_var0[0] = inp[0].tcs_var0[0] + 3.0LF;
66         tes_var0[1] = inp[0].tcs_var0[1] + 4.0LF;
70 [fragment shader]
71 #extension GL_ARB_gpu_shader_fp64: require
72 in TES {
73    flat double tes_var0[2];
76 void main()
78         if (tes_var0[0] == 6.0LF && tes_var0[1] == 9.0LF)
79                 gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
80         else
81                 gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
84 [vertex data]
85 vertex/float/2
86 -1.0 -1.0
87  1.0 -1.0
88 -1.0  1.0
89 -1.0  1.0
90  1.0 -1.0
91  1.0  1.0
93 [test]
94 clear color 0.1 0.1 0.1 0.1
95 clear
96 patch parameter vertices 3
97 draw arrays GL_PATCHES 0 6
98 probe all rgba 0.0 1.0 0.0 1.0