ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_tessellation_shader / execution / variable-indexing / tcs-patch-vec4-index-wr.shader_test
bloba05ad0697956035496383da5f33de9a0315348f4
1 [require]
2 GLSL >= 1.50
3 GL_ARB_tessellation_shader
5 [vertex shader]
6 #version 150
8 in vec4 piglit_vertex;
10 void main()
12     gl_Position = piglit_vertex;
15 [tessellation control shader]
16 #version 150
17 #extension GL_ARB_tessellation_shader : require
18 layout(vertices = 4) out;
20 uniform int index;
21 patch out ivec4 v;
23 void main()
25     if (gl_InvocationID == 0)
26         v = ivec4(-1);
28     barrier();
30     v[gl_InvocationID] = int(gl_InvocationID);
32     gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
33     gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 1.0);
34     gl_TessLevelInner = float[2](1.0, 1.0);
37 [tessellation evaluation shader]
38 #version 150
39 #extension GL_ARB_tessellation_shader : require
40 layout(quads, equal_spacing) in;
42 uniform int index;
43 patch in ivec4 v;
44 out vec4 fscolor;
46 #define INTERP_QUADj(INj, OUT) do { \
47     vec4 v[4]; \
48     for (int j = 0; j < 4; j++) v[j] = INj; \
49     OUT = mix(mix(v[0], v[1], gl_TessCoord[0]), mix(v[2], v[3], gl_TessCoord[0]), \
50               gl_TessCoord[1]); \
51 } while(false)
53 void main() {
54     bool pass = true;
56     for (int i = 0; i < 4; i++)
57         pass = pass && (v[i] == i);
59     fscolor = pass ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
61     INTERP_QUADj(gl_in[j].gl_Position, gl_Position);
64 [fragment shader]
65 #version 150
66 in vec4 fscolor;
67 out vec4 outcolor;
69 void main()
71     outcolor = fscolor;
74 [test]
75 clear color 0.5 0.5 0.5 0.5
76 clear
78 patch parameter vertices 4
80 draw rect patch -1 -1 0.09 0.09
81 #draw arrays GL_PATCHES 0 4
82 probe rgb 6 6 0.0 1.0 0.0