generate OpLine before OpFunction
[platform/upstream/glslang.git] / Test / spv.layoutNested.vert
1 #version 450\r
2 \r
3 // should get 3 SPV types for S: no layout, 140, and 430, plus extras for interpolation or invariant differences\r
4 struct S\r
5 {\r
6         highp uvec3 a;\r
7         mediump mat2 b[4];\r
8         lowp uint c;\r
9 };\r
10 \r
11 layout(set = 0, binding = 0, std140) uniform Block140\r
12 {\r
13         mediump int u;\r
14         S s[2][3];\r
15         mediump vec2 v;\r
16 } inst140;\r
17 \r
18 layout(set = 0, binding = 1, std430) buffer Block430\r
19 {\r
20         mediump int u;\r
21         S s[2][3];\r
22         mediump vec2 v;\r
23 } inst430;\r
24 \r
25 S s;\r
26 \r
27 // should get 5 SPV types for T: no layout, 140/row, 140/col, 430/row, and 430/col\r
28 struct T {\r
29     mat2 m;\r
30     int a;\r
31 };\r
32 \r
33 T t;\r
34 \r
35 struct Nestor {\r
36     T nestorT;\r
37 };\r
38 \r
39 layout(set = 1, binding = 0, std140) uniform Bt1\r
40 {\r
41     layout(row_major) Nestor nt;\r
42 } Btn1;\r
43 \r
44 layout(set = 1, binding = 0, std140) uniform Bt2\r
45 {\r
46     layout(column_major) Nestor nt;\r
47 } Btn2;\r
48 \r
49 layout(row_major, set = 1, binding = 0, std140) uniform Bt3\r
50 {\r
51     layout(column_major) Nestor ntcol;\r
52     Nestor ntrow;                         // should be row major decoration version of Nestor\r
53 } Btn3;\r
54 \r
55 layout(set = 1, binding = 0, std430) buffer bBt1\r
56 {\r
57     layout(row_major) Nestor nt;\r
58 } bBtn1;\r
59 \r
60 layout(set = 1, binding = 0, std430) buffer bBt2\r
61 {\r
62     layout(column_major) Nestor nt;\r
63 } bBtn2;\r
64 \r
65 layout(set = 1, binding = 0, std430) buffer bBt3\r
66 {\r
67     layout(row_major) Nestor ntcol;\r
68     Nestor ntrow;                         // should be col major decoration version of Nestor\r
69 } bBtn3;\r
70 \r
71 void main()\r
72 {\r
73 }\r
74 \r
75 flat out S sout;\r
76 invariant out S soutinv;\r