aboutsummaryrefslogtreecommitdiff
path: root/tests/spec/glsl-es-1.00/execution/variable-index-write/fs-temp-array-mat3-col-row-wr.shader_test
blob: 96bc07be454178f4c10a5339513170fbefb64fd0 (plain)
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
# Test generated by:
# ../../variable-index-write.sh 1.00

[require]
GLSL ES >= 1.00
GL ES >= 2.0

[vertex shader]
attribute vec4 vertex;
mat4 projection = mat4(
    2.0/250.0, 0.0, 0.0, -1.0,
    0.0, 2.0/250.0, 0.0, -1.0,
    0.0, 0.0, -1.0, 0.0,
    0.0, 0.0, 0.0, 1.0);

void main()
{
    gl_Position = vertex;
    gl_Position *= projection;
}

[fragment shader]
uniform mat3 src_matrix;
uniform vec3 v;
uniform vec3 expect;
uniform int index;
uniform int row;
uniform int col;
uniform float value;

void main()
{
    mat3 dst_matrix[3];
    dst_matrix[0] = mat3(0.0);
    dst_matrix[1] = mat3(0.0);
    dst_matrix[2] = mat3(0.0);

    /* Patch the supplied matrix with the supplied value.  If the resulting
     * matrix is correct, it will transform the input vector to the expected
     * value.  Verify that the distance between the result and the expected
     * vector is less than epsilon.
     *
     * NOTE: This test assumes that reads of arrays using non-constant
     * indicies works correctly.  If reads and writes happen to fail in an
     * identical manner, this test may give false positives.
     */
    dst_matrix[1] = src_matrix;
    dst_matrix[1][col][row] = value;
    gl_FragColor = (distance(dst_matrix[1] * v, expect) < 1e-6)
        ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
}

[test]
clear color 0.5 0.5 0.5 0.5
clear

uniform int col 0
uniform int row 0
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 666.0 0.722190133917966 0.239853948232558 0.550143078409278 0.591962645398579 0.467616286531193 0.850846377186973 0.511303112962423 0.270815003356504
uniform float value 0.493944462129466
draw rect 60 5 10 10
probe rgb 65 10 0.0 1.0 0.0

uniform int row 1
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 0.493944462129466 666.0 0.239853948232558 0.550143078409278 0.591962645398579 0.467616286531193 0.850846377186973 0.511303112962423 0.270815003356504
uniform float value 0.722190133917966
draw rect 60 20 10 10
probe rgb 65 25 0.0 1.0 0.0

uniform int row 2
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 0.493944462129466 0.722190133917966 666.0 0.550143078409278 0.591962645398579 0.467616286531193 0.850846377186973 0.511303112962423 0.270815003356504
uniform float value 0.239853948232558
draw rect 60 35 10 10
probe rgb 65 40 0.0 1.0 0.0

uniform int col 1
uniform int row 0
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 0.493944462129466 0.722190133917966 0.239853948232558 666.0 0.591962645398579 0.467616286531193 0.850846377186973 0.511303112962423 0.270815003356504
uniform float value 0.550143078409278
draw rect 75 5 10 10
probe rgb 80 10 0.0 1.0 0.0

uniform int row 1
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 0.493944462129466 0.722190133917966 0.239853948232558 0.550143078409278 666.0 0.467616286531193 0.850846377186973 0.511303112962423 0.270815003356504
uniform float value 0.591962645398579
draw rect 75 20 10 10
probe rgb 80 25 0.0 1.0 0.0

uniform int row 2
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 0.493944462129466 0.722190133917966 0.239853948232558 0.550143078409278 0.591962645398579 666.0 0.850846377186973 0.511303112962423 0.270815003356504
uniform float value 0.467616286531193
draw rect 75 35 10 10
probe rgb 80 40 0.0 1.0 0.0

uniform int col 2
uniform int row 0
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 0.493944462129466 0.722190133917966 0.239853948232558 0.550143078409278 0.591962645398579 0.467616286531193 666.0 0.511303112962423 0.270815003356504
uniform float value 0.850846377186973
draw rect 90 5 10 10
probe rgb 95 10 0.0 1.0 0.0

uniform int row 1
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 0.493944462129466 0.722190133917966 0.239853948232558 0.550143078409278 0.591962645398579 0.467616286531193 0.850846377186973 666.0 0.270815003356504
uniform float value 0.511303112962423
draw rect 90 20 10 10
probe rgb 95 25 0.0 1.0 0.0

uniform int row 2
uniform vec3 v 0.681652305322399 0.210426138878113 0.185916924650237
uniform vec3 expect 0.610649606928364 0.711906885823636 0.312244778977868
uniform mat3x3 src_matrix 0.493944462129466 0.722190133917966 0.239853948232558 0.550143078409278 0.591962645398579 0.467616286531193 0.850846377186973 0.511303112962423 666.0
uniform float value 0.270815003356504
draw rect 90 35 10 10
probe rgb 95 40 0.0 1.0 0.0

clear