ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_tessellation_shader / execution / 1in-1out.shader_test
blobe8507ee6735c96e97e9ebf92d77988b07e115cdc
1 # Number of input CP = 1
2 # Number of output CP = 1
3 # Draw 256 patches.
5 # Each patch is tessellated like a quad with a 4x4 vertex pattern.
6 # (which is 3x3 sub-quads = 18 triangles)
8 [require]
9 GLSL >= 1.50
10 GL_ARB_tessellation_shader
12 [vertex shader]
13 #version 150
15 out vec3 inpos[16];
17 void main()
19   const int num = 16; // number of patches in one direction, num*num patches in total
21   for (int i = 0; i < 16; i++) {
22     inpos[i].xy = vec2(gl_VertexID % num, gl_VertexID / num) / num + vec2(i % 4, i / 4) / (3 * num);
23     inpos[i].z = float(gl_VertexID / 64);
24   }
27 [tessellation control shader]
28 #version 150
29 #extension GL_ARB_tessellation_shader : require
30 #extension GL_ARB_arrays_of_arrays : require
32 layout(vertices = 1) out;
33 in vec3 inpos[][16];
34 out vec3 outpos[][16];
36 void main()
38   gl_TessLevelInner[0] =
39   gl_TessLevelInner[1] =
40   gl_TessLevelOuter[0] =
41   gl_TessLevelOuter[1] =
42   gl_TessLevelOuter[2] =
43   gl_TessLevelOuter[3] = 3.0;
44   outpos[gl_InvocationID] = inpos[gl_InvocationID];
47 [tessellation evaluation shader]
48 #version 150
49 #extension GL_ARB_tessellation_shader : require
50 #extension GL_ARB_arrays_of_arrays : require
52 layout(quads, equal_spacing) in;
53 in vec3 outpos[][16];
54 out vec3 color;
56 void main()
58   ivec2 coord = ivec2(round(gl_TessCoord.xy * 3));
59   vec3 v = outpos[0][coord.y * 4 + coord.x];
60   gl_Position = vec4(v.xy * 2 - 1, 0, 1);
61   color = v.zzz - vec3(0, 1, 2);
64 [fragment shader]
65 #version 150
67 in vec3 color;
69 void main()
71   gl_FragColor = vec4(color, 1);
74 [test]
75 clear color 0.1 0.1 0.1 0.1
76 clear
77 patch parameter vertices 1
78 draw arrays GL_PATCHES 0 256
79 relative probe rect rgba (0, 0,    1, 0.24) (0, 0, 0, 1)
80 relative probe rect rgba (0, 0.26, 1, 0.24) (1, 0, 0, 1)
81 relative probe rect rgba (0, 0.5,  1, 0.24) (1, 1, 0, 1)
82 relative probe rect rgba (0, 0.76, 1, 0.24) (1, 1, 1, 1)