Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / hlsl.reflection.vert
1 \r
2 cbuffer nameless {\r
3     float3 anonMember1;\r
4     float3x2 m23;\r
5     int scalarAfterm23;\r
6     float4 anonDeadMember2;\r
7     float4 anonMember3;\r
8     int scalarBeforeArray;\r
9     float floatArray[5];\r
10     int scalarAfterArray;\r
11     float2x2 m22[9];\r
12 };\r
13 \r
14 cbuffer c_nameless {\r
15     float3 c_anonMember1;\r
16     float3x2 c_m23;\r
17     int c_scalarAfterm23;\r
18     float4 c_anonDeadMember2;\r
19     float4 c_anonMember3;\r
20 };\r
21 \r
22 cbuffer namelessdead {\r
23     int a;\r
24 };\r
25 \r
26 struct N1 {\r
27     float a;\r
28 };\r
29 \r
30 struct N2 {\r
31     float b;\r
32     float c;\r
33     float d;\r
34 };\r
35 \r
36 struct N3 {\r
37     N1 n1;\r
38     N2 n2;\r
39 };\r
40 \r
41 cbuffer nested {\r
42     N3 foo;\r
43 }\r
44 \r
45 struct TS {\r
46     int a;\r
47     int dead;\r
48 };\r
49 \r
50 uniform TS s;\r
51 \r
52 uniform float uf1;\r
53 uniform float uf2;\r
54 uniform float ufDead3;\r
55 uniform float ufDead4;\r
56 \r
57 uniform float2x2 dm22[10];\r
58 \r
59 struct deep1 {\r
60     float2 va[3];\r
61     bool b;\r
62 };\r
63 \r
64 struct deep2 {\r
65     int i;\r
66     deep1 d1[4];\r
67 };\r
68 \r
69 struct deep3 {\r
70     float4 iv4;\r
71     deep2 d2;\r
72     int3 v3;\r
73 };\r
74 \r
75 uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2];\r
76 \r
77 const bool control = true;\r
78 \r
79 void deadFunction()\r
80 {\r
81     float4 v = anonDeadMember2;\r
82     float f = ufDead4;\r
83 }\r
84 \r
85 void liveFunction2()\r
86 {\r
87     float3 v = anonMember1;\r
88     float f = uf1;\r
89 }\r
90 \r
91 tbuffer abl {\r
92     float foo1;\r
93 }\r
94 \r
95 tbuffer abl2 {\r
96     float foo2;\r
97 }\r
98 \r
99 void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attributeFloat3, in float4 attributeFloat4, in float4x4 attributeMat4)\r
100 {\r
101     liveFunction2();\r
102 \r
103     if (! control)\r
104         deadFunction();\r
105 \r
106     float f;\r
107     int i;\r
108     if (control) {\r
109         liveFunction2();\r
110         f = anonMember3.z;\r
111         f = s.a;\r
112         f = m23[1].y + scalarAfterm23;\r
113         f = c_m23[1].y + c_scalarAfterm23;\r
114         f += scalarBeforeArray;\r
115         f += floatArray[2];\r
116         f += floatArray[4];\r
117         f += scalarAfterArray;\r
118         f += m22[i][1][0];\r
119         f += dm22[3][0][1];\r
120         f += m22[2][1].y;\r
121         f += foo.n1.a + foo.n2.b + foo.n2.c + foo.n2.d;\r
122         f += deepA[i].d2.d1[2].va[1].x;\r
123         f += deepB[1].d2.d1[i].va[1].x;\r
124         f += deepB[i].d2.d1[i].va[1].x;\r
125         deep3 d = deepC[1];\r
126         deep3 da[2] = deepD;\r
127     } else\r
128         f = ufDead3;\r
129 \r
130     f += foo1 + foo2;\r
131     f += foo2;\r
132 \r
133     f += attributeFloat;\r
134     f += attributeFloat2.x;\r
135     f += attributeFloat3.x;\r
136     f += attributeFloat4.x;\r
137     f += attributeMat4[0][1];\r
138 }\r