File: interface-blocks-same-uniform-varying-name.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 (56 lines) | stat: -rw-r--r-- 1,287 bytes parent folder | download | duplicates (5)
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
# Tests that the same name can be used for 'different interfaces' where
# different in this case means uniform vs. varying.
#
# GLSLangSpec.1.50.11, 4.3.7 Interface Blocks:
# "A block name is allowed to have different definitions in different
#  interfaces."
#
# And clarified in GLSLangSpec.4.30.8, 4.3.9 Interface Blocks:
# "A block name is allowed to have different definitions in different
#  interfaces within the same shader, allowing, for example, an input
#  block and output block to have the same name."
#
# An input block and output block having the same name is only possible
# for a geometry shader, but a uniform interface name matching a varying
# interface name is possible without a geometry shader, and that is what
# we test here.
[require]
GLSL >= 1.50

[vertex shader]
in vec4 piglit_vertex;

uniform block {
    uniform vec4 color;
} ucolor;

out block {
    vec4 color;
} vcolor;

void main()
{
    gl_Position = piglit_vertex;
    vcolor.color = ucolor.color;
}

[fragment shader]

in block {
    vec4 color;
} vcolor;

void main()
{
    gl_FragColor = vcolor.color;
}

[test]
uniform vec4 block.color 1.0 0.0 1.0 0.0
draw rect -1 -1 2 2
probe all rgba 1.0 0.0 1.0 0.0

uniform vec4 block.color 0.0 1.0 0.0 1.0
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0