Merge pull request #2892 from greg-lunarg/mb
[platform/upstream/glslang.git] / Test / 420.tese
1 #version 420 core\r
2 \r
3 const mat2x2 a = mat2( vec2( 1.0, 0.0 ), vec2( 0.0, 1.0 ) );\r
4 mat2x2 b = { vec2( 1.0, 0.0 ), vec2( 0.0, 1.0 ) };\r
5 const mat2x2 c = { { 1.0, 0.0, }, { 0.0, 1.0 } };\r
6 \r
7 float a2[2] = { 3.4, 4.2, 5.0 }; // illegal\r
8 vec2 b2 = { 1.0, 2.0, 3.0 }; // illegal\r
9 mat3x3 c2 = { vec3(0.0), vec3(1.0), vec3(2.0), vec3(3.0) }; // illegal\r
10 mat2x2 d = { 1.0, 0.0, 0.0, 1.0 }; // illegal, can't flatten nesting\r
11 \r
12 struct {\r
13     float a;\r
14     int b;\r
15 } e = { 1.2, 2, };\r
16 \r
17 struct {\r
18     float a;\r
19     int b;\r
20 } e2 = { 1, 3 }; // legal, first initializer is converted\r
21 \r
22 struct {\r
23     float a;\r
24     int b;\r
25 } e3 = { 1.2, 2, 3 }; // illegal\r
26 \r
27 int a3 = true; // illegal\r
28 vec4 b3[2] = { vec4(0.0), 1.0 }; // illegal\r
29 vec4 b4[2] = vec4[2](vec4(0.0), mat2x2(1.0)); // illegal\r
30 mat4x2 c3 = { vec3(0.0), vec3(1.0) }; // illegal\r
31 \r
32 struct S1 {\r
33     vec4 a;\r
34     vec4 b;\r
35 };\r
36 \r
37 struct {\r
38     float s;\r
39     float t;\r
40 } d2[] = { S1(vec4(0.0), vec4(1.1)) }; // illegal\r
41 \r
42 float b5[] = { 3.4, 4.2, 5.0, 5.2, 1.1 };\r
43 \r
44 struct S3 {\r
45     float f;\r
46     mat2x3 m23;\r
47 };\r
48 \r
49 struct S4 {\r
50     uvec2 uv2;\r
51     S3 s[2];\r
52 };\r
53 \r
54 struct Single1 { int f; };\r
55 Single1 single1 = { 10 };\r
56 \r
57 struct Single2 { uvec2 v; };\r
58 Single2 single2 = { { 1, 2 } };\r
59 \r
60 struct Single3 { Single1 s1; };\r
61 Single3 single3 = { { 3 } };\r
62 \r
63 struct Single4 { Single2 s1; };\r
64 Single4 single4 = { { { 4u, 5u } } };\r
65 \r
66 const S4 constructed = S4(uvec2(1, 2), \r
67                           S3[2](S3(3.0, mat2x3(4.0)), \r
68                                 S3(5.0, mat2x3(6.0))));\r
69 \r
70 const S4 curlybad1 = { {1, 2},\r
71                        { {3,   {4.0, 0, 0.0}, {0.0, 4.0, 0.0 } },       // ERROR, the mat2x3 isn't isolated\r
72                          {5.0, {6, 0.0, 0.0}, {0.0, 6.0, 0.0 } } } }; \r
73 \r
74 const S4 curlyInit = { {1, 2},\r
75                        { {3,   { {4.0, 0, 0.0}, {0.0, 4.0, 0.0 } } },\r
76                          {5.0, { {6, 0.0, 0.0}, {0.0, 6.0, 0.0 } } } } }; \r
77 \r
78 float vc1, vc2, vc3;\r
79 vec3 av3 = vec3(vc1, vc2, vc3);\r
80 vec3 bv3 = { vc1, vc2, vc3 };\r
81 \r
82 void main()\r
83 {\r
84     memoryBarrier();\r
85 \r
86     if (constructed == curlybad1)\r
87         ;\r
88     if (constructed == curlyInit)\r
89         ;\r
90 }\r