File: vs-findMSB.shader_test

package info (click to toggle)
piglit 0~git20200212-f4710c51b-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 106,972 kB
  • sloc: ansic: 263,763; xml: 48,941; python: 29,918; lisp: 19,789; cpp: 12,142; sh: 22; makefile: 20; pascal: 5
file content (132 lines) | stat: -rw-r--r-- 3,310 bytes parent folder | download | duplicates (4)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
[require]
GLSL >= 1.50
GL_ARB_gpu_shader5

[vertex shader]
#extension GL_ARB_gpu_shader5 : enable

in vec4 piglit_vertex;
out vec4 color;

uniform bool test_signed;
uniform ivec4 msb;
uniform ivec4 iinput;
uniform uvec4 uinput;

void main() {
	gl_Position = piglit_vertex;

	/* Green if both pass. */
	color = vec4(0.0, 1.0, 0.0, 1.0);

	if (test_signed && msb != findMSB(iinput))
		/* Red if findMSB(ivec4) fails. */
		color = vec4(1.0, 0.0, 0.0, 1.0);
	else if (!test_signed && msb != findMSB(uinput))
		/* Blue if findMSB(uvec4) fails. */
		color = vec4(0.0, 0.0, 1.0, 1.0);
}

[fragment shader]
in vec4 color;
out vec4 frag_color;

void main()
{
	frag_color = color;
}

[test]
# For a value of zero or negative one, -1 will be returned.
uniform int test_signed 1
uniform ivec4 msb -1 -1 -1 -1
uniform ivec4 iinput 0 -1 -1 0
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform int test_signed 0
uniform ivec4 msb -1 -1 -1 -1
uniform uvec4 uinput 0 0 0 0
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

# Signed inputs
uniform int test_signed 1

uniform ivec4 msb 0 1 1 2
uniform ivec4 iinput 1 2 3 4
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb 30 29 28 27
uniform ivec4 iinput 2147483647 1073741823 536870911 268435455
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

# Most significant bit in negative signed integers is actually a zero.
uniform ivec4 msb 0 1 2 3
uniform ivec4 iinput -2 -3 -5 -9
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb 30 30 29 28
uniform ivec4 iinput -2147483648 -1879048192 -1073741824 -536870912
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

# Unsigned inputs
uniform int test_signed 0

uniform ivec4 msb 0 1 1 2
uniform uvec4 uinput 1 2 3 4
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb 31 30 29 28
uniform uvec4 uinput 0xFFFFFFFF 0x7FFFFFFF 0x3FFFFFFF 0x1FFFFFFF
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

# Some implementations may handle negative powers of 2 incorrectly (giving an
# off-by-one result.  Try them all just to be sure.
uniform int test_signed 1

uniform ivec4 msb 30  29  28  27
uniform ivec4 iinput  0x80000000 -0x40000000 -0x20000000 -0x10000000
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb 26 25 24 23
uniform ivec4 iinput -0x08000000 -0x04000000 -0x02000000 -0x01000000
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb 22 21 20 19
uniform ivec4 iinput -0x00800000 -0x00400000 -0x00200000 -0x00100000
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb 18 17 16 15
uniform ivec4 iinput -0x00080000 -0x00040000 -0x00020000 -0x00010000
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb 14 13 12 11
uniform ivec4 iinput -0x00008000 -0x00004000 -0x00002000 -0x00001000
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb 10  9  8  7
uniform ivec4 iinput -0x00000800 -0x00000400 -0x00000200 -0x00000100
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb  6  5  4  3
uniform ivec4 iinput -0x00000080 -0x00000040 -0x00000020 -0x00000010
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0

uniform ivec4 msb  2  1  0 -1
uniform ivec4 iinput -0x00000008 -0x00000004 -0x00000002 -0x00000001
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0