Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / spv.specConstant.vert
1 #version 400\r
2 \r
3 layout(constant_id = 16) const int arraySize = 5;\r
4 in vec4 ucol[arraySize];\r
5 \r
6 layout(constant_id = 17) const bool spBool = true;\r
7 layout(constant_id = 18) const float spFloat = 3.14;\r
8 layout(constant_id = 19) const double spDouble = 3.1415926535897932384626433832795;\r
9 layout(constant_id = 22) const uint scale = 2;\r
10 \r
11 layout(constant_id = 24) gl_MaxImageUnits;\r
12 \r
13 out vec4 color;\r
14 out int size;\r
15 \r
16 // parameter should be considered same type as ucol\r
17 void foo(vec4 p[arraySize]);\r
18 \r
19 void main()\r
20 {\r
21     color = ucol[2];\r
22     size = arraySize;\r
23     if (spBool)\r
24         color *= scale;\r
25     color += float(spDouble / spFloat);\r
26 \r
27     foo(ucol);\r
28 }\r
29 \r
30 layout(constant_id = 116) const int dupArraySize = 12;\r
31 in vec4 dupUcol[dupArraySize];\r
32 \r
33 layout(constant_id = 117) const bool spDupBool = true;\r
34 layout(constant_id = 118) const float spDupFloat = 3.14;\r
35 layout(constant_id = 119) const double spDupDouble = 3.1415926535897932384626433832795;\r
36 layout(constant_id = 122) const uint dupScale = 2;\r
37 \r
38 void foo(vec4 p[arraySize])\r
39 {\r
40     color += dupUcol[2];\r
41     size += dupArraySize;\r
42     if (spDupBool)\r
43         color *= dupScale;\r
44     color += float(spDupDouble / spDupFloat);\r
45 }\r
46 \r
47 int builtin_spec_constant()\r
48 {\r
49     int result = gl_MaxImageUnits;\r
50     return result;\r
51 }\r