File: fs-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 (122 lines) | stat: -rw-r--r-- 3,193 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
[require]
GLSL >= 1.50
GL_ARB_gpu_shader5

[vertex shader passthrough]
[fragment shader]
#extension GL_ARB_gpu_shader5 : enable

out vec4 color;

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

void main()
{
	/* 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);
}

[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