File: tcs-output-unmatched.shader_test

package info (click to toggle)
piglit 0~git20220119-124bca3c9-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 109,012 kB
  • sloc: ansic: 273,511; xml: 46,666; python: 33,098; lisp: 20,392; cpp: 12,480; sh: 22; makefile: 22; pascal: 5
file content (68 lines) | stat: -rw-r--r-- 1,332 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Test that TCS per-vertex outputs which are used only in
# TCS stage are not converted to local variables
# and indeed share data within the patch.

[require]
GLSL >= 1.50
GL_ARB_tessellation_shader
GL_ARB_separate_shader_objects
GL_ARB_shader_atomic_counters
INT GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS >= 1

[vertex shader passthrough]


[tessellation control shader]
#extension GL_ARB_tessellation_shader: require
#extension GL_ARB_separate_shader_objects: require
#extension GL_ARB_shader_atomic_counters: require
layout(vertices = 3) out;

layout(location = 0) out vec4 out_unused_in_tes[];

layout(binding = 0) uniform atomic_uint mismatches;

void main()
{
	out_unused_in_tes[gl_InvocationID] = gl_in[gl_InvocationID].gl_Position;

	barrier();

	if (out_unused_in_tes[0] != gl_in[0].gl_Position ||
		out_unused_in_tes[1] != gl_in[1].gl_Position ||
		out_unused_in_tes[2] != gl_in[2].gl_Position) {
		atomicCounterIncrement(mismatches);
	}
}


[tessellation evaluation shader]
#extension GL_ARB_tessellation_shader: require
layout(triangles) in;

void main()
{
	gl_Position = vec4(0);
}


[fragment shader]

void main()
{
	gl_FragColor = vec4(1.0);
}

[vertex data]
piglit_vertex/float/4
1 1 1 1
2 2 2 2
3 3 3 3

[test]
atomic counters 1

patch parameter vertices 3
draw arrays GL_PATCHES 0 3

probe atomic counter 0 == 0