summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/420.tese
blob: 99c086ae8e98fc198a7d4df9656c0169aa30aa88 (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
#version 420 core

const mat2x2 a = mat2( vec2( 1.0, 0.0 ), vec2( 0.0, 1.0 ) );
mat2x2 b = { vec2( 1.0, 0.0 ), vec2( 0.0, 1.0 ) };
const mat2x2 c = { { 1.0, 0.0, }, { 0.0, 1.0 } };

float a2[2] = { 3.4, 4.2, 5.0 }; // illegal
vec2 b2 = { 1.0, 2.0, 3.0 }; // illegal
mat3x3 c2 = { vec3(0.0), vec3(1.0), vec3(2.0), vec3(3.0) }; // illegal
mat2x2 d = { 1.0, 0.0, 0.0, 1.0 }; // illegal, can't flatten nesting

struct {
    float a;
    int b;
} e = { 1.2, 2, };

struct {
    float a;
    int b;
} e2 = { 1, 3 }; // legal, first initializer is converted

struct {
    float a;
    int b;
} e3 = { 1.2, 2, 3 }; // illegal

int a3 = true; // illegal
vec4 b3[2] = { vec4(0.0), 1.0 }; // illegal
vec4 b4[2] = vec4[2](vec4(0.0), mat2x2(1.0)); // illegal
mat4x2 c3 = { vec3(0.0), vec3(1.0) }; // illegal

struct S1 {
    vec4 a;
    vec4 b;
};

struct {
    float s;
    float t;
} d2[] = { S1(vec4(0.0), vec4(1.1)) }; // illegal

float b5[] = { 3.4, 4.2, 5.0, 5.2, 1.1 };

struct S3 {
    float f;
    mat2x3 m23;
};

struct S4 {
    uvec2 uv2;
    S3 s[2];
};

const S4 constructed = S4(uvec2(1, 2), 
                          S3[2](S3(3.0, mat2x3(4.0)), 
                                S3(5.0, mat2x3(6.0))));

const S4 curlybad1 = { {1, 2},
                       { {3,   {4.0, 0, 0.0}, {0.0, 4.0, 0.0 } },       // ERROR, the mat2x3 isn't isolated
                         {5.0, {6, 0.0, 0.0}, {0.0, 6.0, 0.0 } } } }; 

const S4 curlyInit = { {1, 2},
                       { {3,   { {4.0, 0, 0.0}, {0.0, 4.0, 0.0 } } },
                         {5.0, { {6, 0.0, 0.0}, {0.0, 6.0, 0.0 } } } } }; 

float vc1, vc2, vc3;
vec3 av3 = vec3(vc1, vc2, vc3);
vec3 bv3 = { vc1, vc2, vc3 };

void main()
{
    memoryBarrier();

    if (constructed == curlybad1)
        ;
    if (constructed == curlyInit)
        ;
}