ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_tessellation_shader / execution / tcs-primitiveid-instanced.shader_test
blob30f7d73ee1352515aada37085c72db0342a17f3b
1 # Test that the gl_PrimitiveID input in the TCS starts at 0 for each instance
2 # in instanced draws.
4 [require]
5 GLSL >= 1.50
6 GL_ARB_tessellation_shader
8 [vertex shader]
9 #version 150
11 out int vs_tcs_id;
12 out int vs_tcs_instance;
14 void main()
16         vs_tcs_id = gl_VertexID;
17         vs_tcs_instance = gl_InstanceID;
20 [tessellation control shader]
21 #version 150
22 #extension GL_ARB_tessellation_shader : require
24 layout(vertices = 1) out;
25 in int vs_tcs_id[];
26 in int vs_tcs_instance[];
27 out vec4 tcs_tes_color[];
28 out vec2 tcs_tes_position[];
30 void main()
32         tcs_tes_color[gl_InvocationID] = vec4(
33                 0.5 + vs_tcs_id[gl_InvocationID] * 0.1,
34                 0.5 + vs_tcs_instance[gl_InvocationID] * 0.1,
35                 0.5 + gl_PrimitiveID * 0.1,
36                 0.5 + gl_InvocationID * 0.1
37         );
38         tcs_tes_position[gl_InvocationID].x = -1.0 + vs_tcs_id[gl_InvocationID];
39         tcs_tes_position[gl_InvocationID].y = -1.0 + vs_tcs_instance[gl_InvocationID];
41         gl_TessLevelInner[0] = 1.0;
42         gl_TessLevelInner[1] = 1.0;
44         gl_TessLevelOuter[0] = 1.0;
45         gl_TessLevelOuter[1] = 1.0;
46         gl_TessLevelOuter[2] = 1.0;
47         gl_TessLevelOuter[3] = 1.0;
50 [tessellation evaluation shader]
51 #version 150
52 #extension GL_ARB_tessellation_shader : require
54 layout(quads, equal_spacing) in;
56 in vec4 tcs_tes_color[];
57 in vec2 tcs_tes_position[];
59 out vec4 color;
61 void main()
63         gl_Position = vec4(tcs_tes_position[0].x + gl_TessCoord.x,
64                            tcs_tes_position[0].y + gl_TessCoord.y,
65                            0.0, 1.0);
66         color = tcs_tes_color[0];
69 [fragment shader]
70 #version 150
72 in vec4 color;
74 void main()
76         gl_FragColor = color;
79 [test]
80 clear color 0.0 0.0 0.0 0.0
81 clear
83 patch parameter vertices 1
84 draw arrays instanced GL_PATCHES 0 2 2
86 # First instance
87 relative probe rect rgba (0.0, 0.0, 0.5, 0.5) (0.5, 0.5, 0.5, 0.5)
88 relative probe rect rgba (0.5, 0.0, 0.5, 0.5) (0.6, 0.5, 0.6, 0.5)
90 # Second instance
91 relative probe rect rgba (0.0, 0.5, 0.5, 0.5) (0.5, 0.6, 0.5, 0.5)
92 relative probe rect rgba (0.5, 0.5, 0.5, 0.5) (0.6, 0.6, 0.6, 0.5)