SPV: Implement OpImage functionality (emit before query).
authorJohn Kessenich <cepheus@frii.com>
Wed, 9 Dec 2015 02:32:47 +0000 (19:32 -0700)
committerJohn Kessenich <cepheus@frii.com>
Wed, 9 Dec 2015 02:32:47 +0000 (19:32 -0700)
SPIRV/GlslangToSpv.cpp
SPIRV/SpvBuilder.h
Test/baseResults/spv.130.frag.out
Test/baseResults/spv.140.frag.out
Test/baseResults/spv.newTexture.frag.out
Test/baseResults/spv.queryL.frag.out
glslang/Include/revision.h

index 4ed3af7..7d0d3ab 100755 (executable)
@@ -1855,6 +1855,9 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
 
     // Check for queries
     if (cracked.query) {
+        // a sampled image needs to have the image extracted first
+        if (builder.isSampledImage(params.sampler))
+            params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
         switch (node->getOp()) {
         case glslang::EOpImageQuerySize:
         case glslang::EOpTextureQuerySize:
index 5750b00..6e95e14 100755 (executable)
@@ -122,23 +122,24 @@ public:
     Id getContainedTypeId(Id typeId, int) const;
     StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); }
 
-    bool isPointer(Id resultId)     const { return isPointerType(getTypeId(resultId)); }
-    bool isScalar(Id resultId)      const { return isScalarType(getTypeId(resultId)); }
-    bool isVector(Id resultId)      const { return isVectorType(getTypeId(resultId)); }
-    bool isMatrix(Id resultId)      const { return isMatrixType(getTypeId(resultId)); }
-    bool isAggregate(Id resultId)   const { return isAggregateType(getTypeId(resultId)); }
-    bool isBoolType(Id typeId)      const { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
-
-    bool isPointerType(Id typeId)   const { return getTypeClass(typeId) == OpTypePointer; }
-    bool isScalarType(Id typeId)    const { return getTypeClass(typeId) == OpTypeFloat  || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
-    bool isVectorType(Id typeId)    const { return getTypeClass(typeId) == OpTypeVector; }
-    bool isMatrixType(Id typeId)    const { return getTypeClass(typeId) == OpTypeMatrix; }
-    bool isStructType(Id typeId)    const { return getTypeClass(typeId) == OpTypeStruct; }
-    bool isArrayType(Id typeId)     const { return getTypeClass(typeId) == OpTypeArray; }
-    bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId); }
-    bool isImageType(Id typeId)     const { return getTypeClass(typeId) == OpTypeImage; }
-    bool isSamplerType(Id typeId)   const { return getTypeClass(typeId) == OpTypeSampler; }
-    bool isSampledImageType(Id typeId)   const { return getTypeClass(typeId) == OpTypeSampledImage; }
+    bool isPointer(Id resultId)      const { return isPointerType(getTypeId(resultId)); }
+    bool isScalar(Id resultId)       const { return isScalarType(getTypeId(resultId)); }
+    bool isVector(Id resultId)       const { return isVectorType(getTypeId(resultId)); }
+    bool isMatrix(Id resultId)       const { return isMatrixType(getTypeId(resultId)); }
+    bool isAggregate(Id resultId)    const { return isAggregateType(getTypeId(resultId)); }
+    bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); }
+
+    bool isBoolType(Id typeId)         const { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
+    bool isPointerType(Id typeId)      const { return getTypeClass(typeId) == OpTypePointer; }
+    bool isScalarType(Id typeId)       const { return getTypeClass(typeId) == OpTypeFloat  || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
+    bool isVectorType(Id typeId)       const { return getTypeClass(typeId) == OpTypeVector; }
+    bool isMatrixType(Id typeId)       const { return getTypeClass(typeId) == OpTypeMatrix; }
+    bool isStructType(Id typeId)       const { return getTypeClass(typeId) == OpTypeStruct; }
+    bool isArrayType(Id typeId)        const { return getTypeClass(typeId) == OpTypeArray; }
+    bool isAggregateType(Id typeId)    const { return isArrayType(typeId) || isStructType(typeId); }
+    bool isImageType(Id typeId)        const { return getTypeClass(typeId) == OpTypeImage; }
+    bool isSamplerType(Id typeId)      const { return getTypeClass(typeId) == OpTypeSampler; }
+    bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; }
 
     bool isConstantOpCode(Op opcode) const;
     bool isConstant(Id resultId) const { return isConstantOpCode(getOpCode(resultId)); }
index e44bac9..1cf2a26 100644 (file)
@@ -7,12 +7,12 @@ Linked fragment stage:
 \r
 // Module Version 10000\r
 // Generated by (magic number): 80001\r
-// Id's are bound by 212\r
+// Id's are bound by 214\r
 \r
                               Capability Shader\r
                1:             ExtInstImport  "GLSL.std.450"\r
                               MemoryModel Logical GLSL450\r
-                              EntryPoint Fragment 4  "main" 78 17 68 98 182 183 184 185 185 171\r
+                              EntryPoint Fragment 4  "main" 79 17 68 99 184 185 186 187 187 173\r
                               ExecutionMode 4 OriginLowerLeft\r
                               Source GLSL 130\r
                               SourceExtension  "GL_ARB_gpu_shader5"\r
@@ -33,38 +33,38 @@ Linked fragment stage:
                               Name 55  "samp2DS"\r
                               Name 68  "io"\r
                               Name 72  "Sca"\r
-                              Name 78  "i"\r
-                              Name 86  "Isca"\r
-                              Name 98  "uo"\r
-                              Name 102  "Usca"\r
-                              Name 113  "a"\r
-                              Name 117  "Scas"\r
-                              Name 122  "f"\r
-                              Name 131  "c"\r
-                              Name 152  "a1"\r
-                              Name 155  "m43"\r
-                              Name 158  "b"\r
-                              Name 165  "sampC"\r
-                              Name 171  "gl_ClipDistance"\r
-                              Name 181  "b"\r
-                              Name 182  "fflat"\r
-                              Name 183  "fsmooth"\r
-                              Name 184  "fnop"\r
-                              Name 185  "gl_Color"\r
-                              Name 192  "bounds"\r
-                              Name 193  "s2D"\r
-                              Name 194  "s2DR"\r
-                              Name 198  "s2DRS"\r
-                              Name 202  "s1D"\r
-                              Name 203  "s2DS"\r
-                              Name 205  "f"\r
-                              Name 207  "v2"\r
-                              Name 209  "v3"\r
-                              Name 211  "v4"\r
-                              Decorate 171(gl_ClipDistance) BuiltIn ClipDistance\r
-                              Decorate 182(fflat) Flat\r
-                              Decorate 184(fnop) NoPerspective\r
-                              Decorate 192(bounds) Binding 0\r
+                              Name 79  "i"\r
+                              Name 87  "Isca"\r
+                              Name 99  "uo"\r
+                              Name 103  "Usca"\r
+                              Name 114  "a"\r
+                              Name 118  "Scas"\r
+                              Name 124  "f"\r
+                              Name 133  "c"\r
+                              Name 154  "a1"\r
+                              Name 157  "m43"\r
+                              Name 160  "b"\r
+                              Name 167  "sampC"\r
+                              Name 173  "gl_ClipDistance"\r
+                              Name 183  "b"\r
+                              Name 184  "fflat"\r
+                              Name 185  "fsmooth"\r
+                              Name 186  "fnop"\r
+                              Name 187  "gl_Color"\r
+                              Name 194  "bounds"\r
+                              Name 195  "s2D"\r
+                              Name 196  "s2DR"\r
+                              Name 200  "s2DRS"\r
+                              Name 204  "s1D"\r
+                              Name 205  "s2DS"\r
+                              Name 207  "f"\r
+                              Name 209  "v2"\r
+                              Name 211  "v3"\r
+                              Name 213  "v4"\r
+                              Decorate 173(gl_ClipDistance) BuiltIn ClipDistance\r
+                              Decorate 184(fflat) Flat\r
+                              Decorate 186(fnop) NoPerspective\r
+                              Decorate 194(bounds) Binding 0\r
                2:             TypeVoid\r
                3:             TypeFunction 2\r
               14:             TypeFloat 32\r
@@ -107,94 +107,94 @@ Linked fragment stage:
               71:             TypePointer UniformConstant 70\r
          72(Sca):     71(ptr) Variable UniformConstant\r
               74:     26(int) Constant 3\r
-              77:             TypePointer Input 15(fvec4)\r
-           78(i):     77(ptr) Variable Input\r
-              83:             TypeImage 26(int) Cube array sampled format:Unknown\r
-              84:             TypeSampledImage 83\r
-              85:             TypePointer UniformConstant 84\r
-        86(Isca):     85(ptr) Variable UniformConstant\r
-              89:   14(float) Constant 1060320051\r
-              90:             TypeVector 26(int) 4\r
-              95:             TypeInt 32 0\r
-              96:             TypeVector 95(int) 4\r
-              97:             TypePointer Output 96(ivec4)\r
-          98(uo):     97(ptr) Variable Output\r
-              99:             TypeImage 95(int) Cube array sampled format:Unknown\r
-             100:             TypeSampledImage 99\r
-             101:             TypePointer UniformConstant 100\r
-       102(Usca):    101(ptr) Variable UniformConstant\r
-             108:   14(float) Constant 1071225242\r
-             112:             TypePointer Private 39(fvec3)\r
-          113(a):    112(ptr) Variable Private\r
-             114:             TypeImage 14(float) Cube depth array sampled format:Unknown\r
-             115:             TypeSampledImage 114\r
-             116:             TypePointer UniformConstant 115\r
-       117(Scas):    116(ptr) Variable UniformConstant\r
-             121:             TypePointer Function 14(float)\r
-             125:     95(int) Constant 1\r
-             126:             TypePointer Input 14(float)\r
-             130:             TypePointer Function 90(ivec4)\r
-             134:   14(float) Constant 1036831949\r
-             135:   39(fvec3) ConstantComposite 134 134 134\r
-             136:   14(float) Constant 1045220557\r
+              78:             TypePointer Input 15(fvec4)\r
+           79(i):     78(ptr) Variable Input\r
+              84:             TypeImage 26(int) Cube array sampled format:Unknown\r
+              85:             TypeSampledImage 84\r
+              86:             TypePointer UniformConstant 85\r
+        87(Isca):     86(ptr) Variable UniformConstant\r
+              90:   14(float) Constant 1060320051\r
+              91:             TypeVector 26(int) 4\r
+              96:             TypeInt 32 0\r
+              97:             TypeVector 96(int) 4\r
+              98:             TypePointer Output 97(ivec4)\r
+          99(uo):     98(ptr) Variable Output\r
+             100:             TypeImage 96(int) Cube array sampled format:Unknown\r
+             101:             TypeSampledImage 100\r
+             102:             TypePointer UniformConstant 101\r
+       103(Usca):    102(ptr) Variable UniformConstant\r
+             109:   14(float) Constant 1071225242\r
+             113:             TypePointer Private 39(fvec3)\r
+          114(a):    113(ptr) Variable Private\r
+             115:             TypeImage 14(float) Cube depth array sampled format:Unknown\r
+             116:             TypeSampledImage 115\r
+             117:             TypePointer UniformConstant 116\r
+       118(Scas):    117(ptr) Variable UniformConstant\r
+             123:             TypePointer Function 14(float)\r
+             127:     96(int) Constant 1\r
+             128:             TypePointer Input 14(float)\r
+             132:             TypePointer Function 91(ivec4)\r
+             136:   14(float) Constant 1036831949\r
              137:   39(fvec3) ConstantComposite 136 136 136\r
-             153:             TypeMatrix 39(fvec3) 4\r
-             154:             TypePointer Function 153\r
-             159:   14(float) Constant 1073741824\r
-             162:             TypeImage 14(float) Cube sampled format:Unknown\r
-             163:             TypeSampledImage 162\r
-             164:             TypePointer UniformConstant 163\r
-      165(sampC):    164(ptr) Variable UniformConstant\r
-             168:     95(int) Constant 4\r
-             169:             TypeArray 14(float) 168\r
-             170:             TypePointer Input 169\r
-171(gl_ClipDistance):    170(ptr) Variable Input\r
-             174:             TypePointer Output 14(float)\r
-             180:             TypePointer Private 14(float)\r
-          181(b):    180(ptr) Variable Private\r
-      182(fflat):    126(ptr) Variable Input\r
-    183(fsmooth):    126(ptr) Variable Input\r
-       184(fnop):    126(ptr) Variable Input\r
-   185(gl_Color):     77(ptr) Variable Input\r
-             186:     95(int) Constant 3\r
-             187:             TypeArray 26(int) 186\r
-             188:     26(int) Constant 10\r
-             189:     26(int) Constant 23\r
-             190:     26(int) Constant 32\r
-             191:         187 ConstantComposite 188 189 190\r
-     192(bounds):     20(ptr) Variable UniformConstant\r
-        193(s2D):     20(ptr) Variable UniformConstant\r
-       194(s2DR):     46(ptr) Variable UniformConstant\r
-             195:             TypeImage 14(float) Rect depth sampled format:Unknown\r
-             196:             TypeSampledImage 195\r
-             197:             TypePointer UniformConstant 196\r
-      198(s2DRS):    197(ptr) Variable UniformConstant\r
-             199:             TypeImage 14(float) 1D sampled format:Unknown\r
-             200:             TypeSampledImage 199\r
-             201:             TypePointer UniformConstant 200\r
-        202(s1D):    201(ptr) Variable UniformConstant\r
-       203(s2DS):     54(ptr) Variable UniformConstant\r
-             204:             TypePointer UniformConstant 14(float)\r
-          205(f):    204(ptr) Variable UniformConstant\r
-             206:             TypePointer UniformConstant 23(fvec2)\r
-         207(v2):    206(ptr) Variable UniformConstant\r
-             208:             TypePointer UniformConstant 39(fvec3)\r
-         209(v3):    208(ptr) Variable UniformConstant\r
-             210:             TypePointer UniformConstant 15(fvec4)\r
-         211(v4):    210(ptr) Variable UniformConstant\r
+             138:   14(float) Constant 1045220557\r
+             139:   39(fvec3) ConstantComposite 138 138 138\r
+             155:             TypeMatrix 39(fvec3) 4\r
+             156:             TypePointer Function 155\r
+             161:   14(float) Constant 1073741824\r
+             164:             TypeImage 14(float) Cube sampled format:Unknown\r
+             165:             TypeSampledImage 164\r
+             166:             TypePointer UniformConstant 165\r
+      167(sampC):    166(ptr) Variable UniformConstant\r
+             170:     96(int) Constant 4\r
+             171:             TypeArray 14(float) 170\r
+             172:             TypePointer Input 171\r
+173(gl_ClipDistance):    172(ptr) Variable Input\r
+             176:             TypePointer Output 14(float)\r
+             182:             TypePointer Private 14(float)\r
+          183(b):    182(ptr) Variable Private\r
+      184(fflat):    128(ptr) Variable Input\r
+    185(fsmooth):    128(ptr) Variable Input\r
+       186(fnop):    128(ptr) Variable Input\r
+   187(gl_Color):     78(ptr) Variable Input\r
+             188:     96(int) Constant 3\r
+             189:             TypeArray 26(int) 188\r
+             190:     26(int) Constant 10\r
+             191:     26(int) Constant 23\r
+             192:     26(int) Constant 32\r
+             193:         189 ConstantComposite 190 191 192\r
+     194(bounds):     20(ptr) Variable UniformConstant\r
+        195(s2D):     20(ptr) Variable UniformConstant\r
+       196(s2DR):     46(ptr) Variable UniformConstant\r
+             197:             TypeImage 14(float) Rect depth sampled format:Unknown\r
+             198:             TypeSampledImage 197\r
+             199:             TypePointer UniformConstant 198\r
+      200(s2DRS):    199(ptr) Variable UniformConstant\r
+             201:             TypeImage 14(float) 1D sampled format:Unknown\r
+             202:             TypeSampledImage 201\r
+             203:             TypePointer UniformConstant 202\r
+        204(s1D):    203(ptr) Variable UniformConstant\r
+       205(s2DS):     54(ptr) Variable UniformConstant\r
+             206:             TypePointer UniformConstant 14(float)\r
+          207(f):    206(ptr) Variable UniformConstant\r
+             208:             TypePointer UniformConstant 23(fvec2)\r
+         209(v2):    208(ptr) Variable UniformConstant\r
+             210:             TypePointer UniformConstant 39(fvec3)\r
+         211(v3):    210(ptr) Variable UniformConstant\r
+             212:             TypePointer UniformConstant 15(fvec4)\r
+         213(v4):    212(ptr) Variable UniformConstant\r
          4(main):           2 Function None 3\r
                5:             Label\r
-             166:         163 Load 165(sampC)\r
-             167:   15(fvec4) ImageGather 166 137 30\r
-                              Store 17(o) 167\r
-             172:    126(ptr) AccessChain 171(gl_ClipDistance) 74\r
-             173:   14(float) Load 172\r
-             175:    174(ptr) AccessChain 17(o) 125\r
-                              Store 175 173\r
-             176:           2 FunctionCall 6(bar3()\r
-             177:           2 FunctionCall 8(bar4()\r
-             178:           2 FunctionCall 10(bar5()\r
-             179:           2 FunctionCall 12(bar6()\r
+             168:         165 Load 167(sampC)\r
+             169:   15(fvec4) ImageGather 168 139 30\r
+                              Store 17(o) 169\r
+             174:    128(ptr) AccessChain 173(gl_ClipDistance) 74\r
+             175:   14(float) Load 174\r
+             177:    176(ptr) AccessChain 17(o) 127\r
+                              Store 177 175\r
+             178:           2 FunctionCall 6(bar3()\r
+             179:           2 FunctionCall 8(bar4()\r
+             180:           2 FunctionCall 10(bar5()\r
+             181:           2 FunctionCall 12(bar6()\r
                               Return\r
                               FunctionEnd\r
         6(bar3():           2 Function None 3\r
@@ -232,74 +232,76 @@ Linked fragment stage:
                               FunctionEnd\r
        10(bar5():           2 Function None 3\r
               11:             Label\r
-          122(f):    121(ptr) Variable Function\r
-          131(c):    130(ptr) Variable Function\r
+          124(f):    123(ptr) Variable Function\r
+          133(c):    132(ptr) Variable Function\r
               73:          70 Load 72(Sca)\r
-              75:   66(ivec3) ImageQuerySizeLod 73 74\r
-                              Store 68(io) 75\r
-              76:          70 Load 72(Sca)\r
-              79:   15(fvec4) Load 78(i)\r
-              80:   15(fvec4) ImageSampleImplicitLod 76 79\r
-              81:   15(fvec4) Load 17(o)\r
-              82:   15(fvec4) FAdd 81 80\r
-                              Store 17(o) 82\r
-              87:          84 Load 86(Isca)\r
-              88:   15(fvec4) Load 78(i)\r
-              91:   90(ivec4) ImageSampleImplicitLod 87 88 Bias 89\r
-              92:   66(ivec3) VectorShuffle 91 91 0 1 2\r
-              93:   66(ivec3) Load 68(io)\r
-              94:   66(ivec3) IAdd 93 92\r
-                              Store 68(io) 94\r
-             103:         100 Load 102(Usca)\r
-             104:   15(fvec4) Load 78(i)\r
-             105:   96(ivec4) ImageSampleImplicitLod 103 104\r
-                              Store 98(uo) 105\r
-             106:          70 Load 72(Sca)\r
-             107:   15(fvec4) Load 78(i)\r
-             109:   15(fvec4) ImageSampleExplicitLod 106 107 Lod 108\r
-             110:   15(fvec4) Load 17(o)\r
-             111:   15(fvec4) FAdd 110 109\r
-                              Store 17(o) 111\r
-             118:         115 Load 117(Scas)\r
-             119:   66(ivec3) ImageQuerySizeLod 118 74\r
-             120:   39(fvec3) ConvertSToF 119\r
-                              Store 113(a) 120\r
-             123:         115 Load 117(Scas)\r
-             124:   15(fvec4) Load 78(i)\r
-             127:    126(ptr) AccessChain 78(i) 125\r
-             128:   14(float) Load 127\r
-             129:   14(float) ImageSampleDrefImplicitLod 123 124 128\r
-                              Store 122(f) 129\r
-             132:          84 Load 86(Isca)\r
-             133:   15(fvec4) Load 78(i)\r
-             138:   90(ivec4) ImageSampleExplicitLod 132 133 Grad 135 137\r
-                              Store 131(c) 138\r
-             139:   39(fvec3) Load 113(a)\r
-             140:   14(float) Load 122(f)\r
-             141:   90(ivec4) Load 131(c)\r
-             142:   15(fvec4) ConvertSToF 141\r
-             143:   15(fvec4) CompositeConstruct 140 140 140 140\r
-             144:   15(fvec4) FAdd 143 142\r
-             145:   14(float) CompositeExtract 139 0\r
-             146:   14(float) CompositeExtract 139 1\r
-             147:   14(float) CompositeExtract 139 2\r
-             148:   14(float) CompositeExtract 144 0\r
-             149:   15(fvec4) CompositeConstruct 145 146 147 148\r
-             150:   15(fvec4) Load 17(o)\r
-             151:   15(fvec4) FAdd 150 149\r
-                              Store 17(o) 151\r
+              75:          69 Image 73\r
+              76:   66(ivec3) ImageQuerySizeLod 75 74\r
+                              Store 68(io) 76\r
+              77:          70 Load 72(Sca)\r
+              80:   15(fvec4) Load 79(i)\r
+              81:   15(fvec4) ImageSampleImplicitLod 77 80\r
+              82:   15(fvec4) Load 17(o)\r
+              83:   15(fvec4) FAdd 82 81\r
+                              Store 17(o) 83\r
+              88:          85 Load 87(Isca)\r
+              89:   15(fvec4) Load 79(i)\r
+              92:   91(ivec4) ImageSampleImplicitLod 88 89 Bias 90\r
+              93:   66(ivec3) VectorShuffle 92 92 0 1 2\r
+              94:   66(ivec3) Load 68(io)\r
+              95:   66(ivec3) IAdd 94 93\r
+                              Store 68(io) 95\r
+             104:         101 Load 103(Usca)\r
+             105:   15(fvec4) Load 79(i)\r
+             106:   97(ivec4) ImageSampleImplicitLod 104 105\r
+                              Store 99(uo) 106\r
+             107:          70 Load 72(Sca)\r
+             108:   15(fvec4) Load 79(i)\r
+             110:   15(fvec4) ImageSampleExplicitLod 107 108 Lod 109\r
+             111:   15(fvec4) Load 17(o)\r
+             112:   15(fvec4) FAdd 111 110\r
+                              Store 17(o) 112\r
+             119:         116 Load 118(Scas)\r
+             120:         115 Image 119\r
+             121:   66(ivec3) ImageQuerySizeLod 120 74\r
+             122:   39(fvec3) ConvertSToF 121\r
+                              Store 114(a) 122\r
+             125:         116 Load 118(Scas)\r
+             126:   15(fvec4) Load 79(i)\r
+             129:    128(ptr) AccessChain 79(i) 127\r
+             130:   14(float) Load 129\r
+             131:   14(float) ImageSampleDrefImplicitLod 125 126 130\r
+                              Store 124(f) 131\r
+             134:          85 Load 87(Isca)\r
+             135:   15(fvec4) Load 79(i)\r
+             140:   91(ivec4) ImageSampleExplicitLod 134 135 Grad 137 139\r
+                              Store 133(c) 140\r
+             141:   39(fvec3) Load 114(a)\r
+             142:   14(float) Load 124(f)\r
+             143:   91(ivec4) Load 133(c)\r
+             144:   15(fvec4) ConvertSToF 143\r
+             145:   15(fvec4) CompositeConstruct 142 142 142 142\r
+             146:   15(fvec4) FAdd 145 144\r
+             147:   14(float) CompositeExtract 141 0\r
+             148:   14(float) CompositeExtract 141 1\r
+             149:   14(float) CompositeExtract 141 2\r
+             150:   14(float) CompositeExtract 146 0\r
+             151:   15(fvec4) CompositeConstruct 147 148 149 150\r
+             152:   15(fvec4) Load 17(o)\r
+             153:   15(fvec4) FAdd 152 151\r
+                              Store 17(o) 153\r
                               Return\r
                               FunctionEnd\r
        12(bar6():           2 Function None 3\r
               13:             Label\r
-         152(a1):    121(ptr) Variable Function\r
-        155(m43):    154(ptr) Variable Function\r
-          158(b):    121(ptr) Variable Function\r
-             156:    121(ptr) AccessChain 155(m43) 74 125\r
-             157:   14(float) Load 156\r
-                              Store 152(a1) 157\r
-             160:   14(float) Load 152(a1)\r
-             161:   14(float) FMul 159 160\r
-                              Store 158(b) 161\r
+         154(a1):    123(ptr) Variable Function\r
+        157(m43):    156(ptr) Variable Function\r
+          160(b):    123(ptr) Variable Function\r
+             158:    123(ptr) AccessChain 157(m43) 74 127\r
+             159:   14(float) Load 158\r
+                              Store 154(a1) 159\r
+             162:   14(float) Load 154(a1)\r
+             163:   14(float) FMul 161 162\r
+                              Store 160(b) 163\r
                               Return\r
                               FunctionEnd\r
index 9f9891c..672553e 100755 (executable)
@@ -5,7 +5,7 @@ Linked fragment stage:
 \r
 // Module Version 10000\r
 // Generated by (magic number): 80001\r
-// Id's are bound by 97\r
+// Id's are bound by 99\r
 \r
                               Capability Shader\r
                1:             ExtInstImport  "GLSL.std.450"\r
@@ -22,41 +22,41 @@ Linked fragment stage:
                               Name 33  "gl_ClipDistance"\r
                               Name 43  "k"\r
                               Name 55  "sampR"\r
-                              Name 62  "sampB"\r
-                              Name 84  "samp2Da"\r
-                              Name 88  "bn"\r
-                              MemberName 88(bn) 0  "matra"\r
-                              MemberName 88(bn) 1  "matca"\r
-                              MemberName 88(bn) 2  "matr"\r
-                              MemberName 88(bn) 3  "matc"\r
-                              MemberName 88(bn) 4  "matrdef"\r
-                              Name 90  ""\r
-                              Name 93  "bi"\r
-                              MemberName 93(bi) 0  "v"\r
-                              Name 96  "bname"\r
+                              Name 63  "sampB"\r
+                              Name 86  "samp2Da"\r
+                              Name 90  "bn"\r
+                              MemberName 90(bn) 0  "matra"\r
+                              MemberName 90(bn) 1  "matca"\r
+                              MemberName 90(bn) 2  "matr"\r
+                              MemberName 90(bn) 3  "matc"\r
+                              MemberName 90(bn) 4  "matrdef"\r
+                              Name 92  ""\r
+                              Name 95  "bi"\r
+                              MemberName 95(bi) 0  "v"\r
+                              Name 98  "bname"\r
                               Decorate 16(gl_FrontFacing) BuiltIn FrontFacing\r
                               Decorate 33(gl_ClipDistance) BuiltIn ClipDistance\r
-                              Decorate 87 ArrayStride 64\r
-                              Decorate 87 ArrayStride 64\r
-                              MemberDecorate 88(bn) 0 RowMajor\r
-                              MemberDecorate 88(bn) 0 Offset 0\r
-                              MemberDecorate 88(bn) 0 MatrixStride 16\r
-                              MemberDecorate 88(bn) 1 ColMajor\r
-                              MemberDecorate 88(bn) 1 Offset 256\r
-                              MemberDecorate 88(bn) 1 MatrixStride 16\r
-                              MemberDecorate 88(bn) 2 RowMajor\r
-                              MemberDecorate 88(bn) 2 Offset 512\r
-                              MemberDecorate 88(bn) 2 MatrixStride 16\r
-                              MemberDecorate 88(bn) 3 ColMajor\r
-                              MemberDecorate 88(bn) 3 Offset 576\r
-                              MemberDecorate 88(bn) 3 MatrixStride 16\r
-                              MemberDecorate 88(bn) 4 RowMajor\r
-                              MemberDecorate 88(bn) 4 Offset 640\r
-                              MemberDecorate 88(bn) 4 MatrixStride 16\r
-                              Decorate 88(bn) Block\r
-                              Decorate 92 ArrayStride 16\r
-                              MemberDecorate 93(bi) 0 Offset 0\r
-                              Decorate 93(bi) Block\r
+                              Decorate 89 ArrayStride 64\r
+                              Decorate 89 ArrayStride 64\r
+                              MemberDecorate 90(bn) 0 RowMajor\r
+                              MemberDecorate 90(bn) 0 Offset 0\r
+                              MemberDecorate 90(bn) 0 MatrixStride 16\r
+                              MemberDecorate 90(bn) 1 ColMajor\r
+                              MemberDecorate 90(bn) 1 Offset 256\r
+                              MemberDecorate 90(bn) 1 MatrixStride 16\r
+                              MemberDecorate 90(bn) 2 RowMajor\r
+                              MemberDecorate 90(bn) 2 Offset 512\r
+                              MemberDecorate 90(bn) 2 MatrixStride 16\r
+                              MemberDecorate 90(bn) 3 ColMajor\r
+                              MemberDecorate 90(bn) 3 Offset 576\r
+                              MemberDecorate 90(bn) 3 MatrixStride 16\r
+                              MemberDecorate 90(bn) 4 RowMajor\r
+                              MemberDecorate 90(bn) 4 Offset 640\r
+                              MemberDecorate 90(bn) 4 MatrixStride 16\r
+                              Decorate 90(bn) Block\r
+                              Decorate 94 ArrayStride 16\r
+                              MemberDecorate 95(bi) 0 Offset 0\r
+                              Decorate 95(bi) Block\r
                2:             TypeVoid\r
                3:             TypeFunction 2\r
                6:             TypeFloat 32\r
@@ -92,31 +92,31 @@ Linked fragment stage:
               53:             TypeSampledImage 52\r
               54:             TypePointer UniformConstant 53\r
        55(sampR):     54(ptr) Variable UniformConstant\r
-              57:             TypeVector 34(int) 2\r
-              59:             TypeImage 34(int) Buffer sampled format:Unknown\r
-              60:             TypeSampledImage 59\r
-              61:             TypePointer UniformConstant 60\r
-       62(sampB):     61(ptr) Variable UniformConstant\r
-              67:             TypeVector 6(float) 2\r
-              70:    6(float) Constant 1120403456\r
-              72:     29(int) Constant 3\r
-              80:             TypeImage 6(float) 2D sampled format:Unknown\r
-              81:             TypeSampledImage 80\r
-              82:             TypeArray 81 72\r
-              83:             TypePointer UniformConstant 82\r
-     84(samp2Da):     83(ptr) Variable UniformConstant\r
-              85:             TypeMatrix 26(fvec4) 4\r
-              86:     29(int) Constant 4\r
-              87:             TypeArray 85 86\r
-          88(bn):             TypeStruct 87 87 85 85 85\r
-              89:             TypePointer Uniform 88(bn)\r
-              90:     89(ptr) Variable Uniform\r
-              91:             TypeVector 6(float) 3\r
-              92:             TypeArray 91(fvec3) 50\r
-          93(bi):             TypeStruct 92\r
-              94:             TypeArray 93(bi) 86\r
-              95:             TypePointer Uniform 94\r
-       96(bname):     95(ptr) Variable Uniform\r
+              58:             TypeVector 34(int) 2\r
+              60:             TypeImage 34(int) Buffer sampled format:Unknown\r
+              61:             TypeSampledImage 60\r
+              62:             TypePointer UniformConstant 61\r
+       63(sampB):     62(ptr) Variable UniformConstant\r
+              69:             TypeVector 6(float) 2\r
+              72:    6(float) Constant 1120403456\r
+              74:     29(int) Constant 3\r
+              82:             TypeImage 6(float) 2D sampled format:Unknown\r
+              83:             TypeSampledImage 82\r
+              84:             TypeArray 83 74\r
+              85:             TypePointer UniformConstant 84\r
+     86(samp2Da):     85(ptr) Variable UniformConstant\r
+              87:             TypeMatrix 26(fvec4) 4\r
+              88:     29(int) Constant 4\r
+              89:             TypeArray 87 88\r
+          90(bn):             TypeStruct 89 89 87 87 87\r
+              91:             TypePointer Uniform 90(bn)\r
+              92:     91(ptr) Variable Uniform\r
+              93:             TypeVector 6(float) 3\r
+              94:             TypeArray 93(fvec3) 50\r
+          95(bi):             TypeStruct 94\r
+              96:             TypeArray 95(bi) 88\r
+              97:             TypePointer Uniform 96\r
+       98(bname):     97(ptr) Variable Uniform\r
          4(main):           2 Function None 3\r
                5:             Label\r
               13:     12(ptr) Variable Function\r
@@ -145,25 +145,27 @@ Linked fragment stage:
               51:     40(ptr) AccessChain 28(o) 50\r
                               Store 51 49\r
               56:          53 Load 55(sampR)\r
-              58:   57(ivec2) ImageQuerySize 56\r
-              63:          60 Load 62(sampB)\r
-              64:     34(int) ImageQuerySize 63\r
-              65:   57(ivec2) CompositeConstruct 64 64\r
-              66:   57(ivec2) IAdd 58 65\r
-              68:   67(fvec2) ConvertSToF 66\r
-              69:    6(float) CompositeExtract 68 0\r
-              71:    6(float) FDiv 69 70\r
-              73:     40(ptr) AccessChain 28(o) 72\r
-                              Store 73 71\r
-              74:    6(float) FunctionCall 8(foo()\r
-              75:     40(ptr) AccessChain 28(o) 50\r
-                              Store 75 74\r
+              57:          52 Image 56\r
+              59:   58(ivec2) ImageQuerySize 57\r
+              64:          61 Load 63(sampB)\r
+              65:          60 Image 64\r
+              66:     34(int) ImageQuerySize 65\r
+              67:   58(ivec2) CompositeConstruct 66 66\r
+              68:   58(ivec2) IAdd 59 67\r
+              70:   69(fvec2) ConvertSToF 68\r
+              71:    6(float) CompositeExtract 70 0\r
+              73:    6(float) FDiv 71 72\r
+              75:     40(ptr) AccessChain 28(o) 74\r
+                              Store 75 73\r
+              76:    6(float) FunctionCall 8(foo()\r
+              77:     40(ptr) AccessChain 28(o) 50\r
+                              Store 77 76\r
                               Return\r
                               FunctionEnd\r
          8(foo():    6(float) Function None 7\r
                9:             Label\r
-              76:    6(float) Load 11(i1)\r
-              77:    6(float) Load 24(i2)\r
-              78:    6(float) FAdd 76 77\r
-                              ReturnValue 78\r
+              78:    6(float) Load 11(i1)\r
+              79:    6(float) Load 24(i2)\r
+              80:    6(float) FAdd 78 79\r
+                              ReturnValue 80\r
                               FunctionEnd\r
index c0969db..90bf7ab 100755 (executable)
@@ -7,12 +7,12 @@ Linked fragment stage:
 \r
 // Module Version 10000\r
 // Generated by (magic number): 80001\r
-// Id's are bound by 277\r
+// Id's are bound by 278\r
 \r
                               Capability Shader\r
                1:             ExtInstImport  "GLSL.std.450"\r
                               MemoryModel Logical GLSL450\r
-                              EntryPoint Fragment 4  "main" 29 17 55 26 84 91 81 276 246\r
+                              EntryPoint Fragment 4  "main" 29 17 55 26 84 91 81 277 247\r
                               ExecutionMode 4 OriginLowerLeft\r
                               Source GLSL 430\r
                               Name 4  "main"\r
@@ -39,17 +39,17 @@ Linked fragment stage:
                               Name 227  "is2DArray"\r
                               Name 237  "iv2"\r
                               Name 241  "sCubeShadow"\r
-                              Name 246  "FragData"\r
-                              Name 258  "is2Dms"\r
-                              Name 262  "us2D"\r
-                              Name 266  "us3D"\r
-                              Name 270  "usCube"\r
-                              Name 274  "us2DArray"\r
-                              Name 276  "ic4D"\r
+                              Name 247  "FragData"\r
+                              Name 259  "is2Dms"\r
+                              Name 263  "us2D"\r
+                              Name 267  "us3D"\r
+                              Name 271  "usCube"\r
+                              Name 275  "us2DArray"\r
+                              Name 277  "ic4D"\r
                               Decorate 81(ic3D) Flat\r
                               Decorate 84(ic1D) Flat\r
                               Decorate 91(ic2D) Flat\r
-                              Decorate 276(ic4D) Flat\r
+                              Decorate 277(ic4D) Flat\r
                2:             TypeVoid\r
                3:             TypeFunction 2\r
                6:             TypeFloat 32\r
@@ -140,31 +140,31 @@ Linked fragment stage:
              240:             TypePointer UniformConstant 239\r
 241(sCubeShadow):    240(ptr) Variable UniformConstant\r
              243:     67(int) Constant 2\r
-             245:             TypePointer Output 7(fvec4)\r
-   246(FragData):    245(ptr) Variable Output\r
-             250:    6(float) Constant 0\r
-             255:             TypeImage 67(int) 2D multi-sampled sampled format:Unknown\r
-             256:             TypeSampledImage 255\r
-             257:             TypePointer UniformConstant 256\r
-     258(is2Dms):    257(ptr) Variable UniformConstant\r
-             259:             TypeImage 32(int) 2D sampled format:Unknown\r
-             260:             TypeSampledImage 259\r
-             261:             TypePointer UniformConstant 260\r
-       262(us2D):    261(ptr) Variable UniformConstant\r
-             263:             TypeImage 32(int) 3D sampled format:Unknown\r
-             264:             TypeSampledImage 263\r
-             265:             TypePointer UniformConstant 264\r
-       266(us3D):    265(ptr) Variable UniformConstant\r
-             267:             TypeImage 32(int) Cube sampled format:Unknown\r
-             268:             TypeSampledImage 267\r
-             269:             TypePointer UniformConstant 268\r
-     270(usCube):    269(ptr) Variable UniformConstant\r
-             271:             TypeImage 32(int) 2D array sampled format:Unknown\r
-             272:             TypeSampledImage 271\r
-             273:             TypePointer UniformConstant 272\r
-  274(us2DArray):    273(ptr) Variable UniformConstant\r
-             275:             TypePointer Input 162(ivec4)\r
-       276(ic4D):    275(ptr) Variable Input\r
+             246:             TypePointer Output 7(fvec4)\r
+   247(FragData):    246(ptr) Variable Output\r
+             251:    6(float) Constant 0\r
+             256:             TypeImage 67(int) 2D multi-sampled sampled format:Unknown\r
+             257:             TypeSampledImage 256\r
+             258:             TypePointer UniformConstant 257\r
+     259(is2Dms):    258(ptr) Variable UniformConstant\r
+             260:             TypeImage 32(int) 2D sampled format:Unknown\r
+             261:             TypeSampledImage 260\r
+             262:             TypePointer UniformConstant 261\r
+       263(us2D):    262(ptr) Variable UniformConstant\r
+             264:             TypeImage 32(int) 3D sampled format:Unknown\r
+             265:             TypeSampledImage 264\r
+             266:             TypePointer UniformConstant 265\r
+       267(us3D):    266(ptr) Variable UniformConstant\r
+             268:             TypeImage 32(int) Cube sampled format:Unknown\r
+             269:             TypeSampledImage 268\r
+             270:             TypePointer UniformConstant 269\r
+     271(usCube):    270(ptr) Variable UniformConstant\r
+             272:             TypeImage 32(int) 2D array sampled format:Unknown\r
+             273:             TypeSampledImage 272\r
+             274:             TypePointer UniformConstant 273\r
+  275(us2DArray):    274(ptr) Variable UniformConstant\r
+             276:             TypePointer Input 162(ivec4)\r
+       277(ic4D):    276(ptr) Variable Input\r
          4(main):           2 Function None 3\r
                5:             Label\r
             9(v):      8(ptr) Variable Function\r
@@ -345,15 +345,16 @@ Linked fragment stage:
              235:    7(fvec4) FAdd 234 233\r
                               Store 9(v) 235\r
              242:         239 Load 241(sCubeShadow)\r
-             244:   68(ivec2) ImageQuerySizeLod 242 243\r
-                              Store 237(iv2) 244\r
-             247:    7(fvec4) Load 9(v)\r
-             248:   68(ivec2) Load 237(iv2)\r
-             249:   15(fvec2) ConvertSToF 248\r
-             251:    6(float) CompositeExtract 249 0\r
-             252:    6(float) CompositeExtract 249 1\r
-             253:    7(fvec4) CompositeConstruct 251 252 250 250\r
-             254:    7(fvec4) FAdd 247 253\r
-                              Store 246(FragData) 254\r
+             244:         238 Image 242\r
+             245:   68(ivec2) ImageQuerySizeLod 244 243\r
+                              Store 237(iv2) 245\r
+             248:    7(fvec4) Load 9(v)\r
+             249:   68(ivec2) Load 237(iv2)\r
+             250:   15(fvec2) ConvertSToF 249\r
+             252:    6(float) CompositeExtract 250 0\r
+             253:    6(float) CompositeExtract 250 1\r
+             254:    7(fvec4) CompositeConstruct 252 253 251 251\r
+             255:    7(fvec4) FAdd 248 254\r
+                              Store 247(FragData) 255\r
                               Return\r
                               FunctionEnd\r
index e9a18e1..81e0ef3 100755 (executable)
@@ -7,7 +7,7 @@ Linked fragment stage:
 \r
 // Module Version 10000\r
 // Generated by (magic number): 80001\r
-// Id's are bound by 211\r
+// Id's are bound by 237\r
 \r
                               Capability Shader\r
                1:             ExtInstImport  "GLSL.std.450"\r
@@ -19,28 +19,28 @@ Linked fragment stage:
                               Name 9  "lod"\r
                               Name 13  "samp1D"\r
                               Name 16  "pf"\r
-                              Name 23  "isamp2D"\r
-                              Name 25  "pf2"\r
-                              Name 34  "usamp3D"\r
-                              Name 38  "pf3"\r
-                              Name 46  "sampCube"\r
-                              Name 55  "isamp1DA"\r
-                              Name 64  "usamp2DA"\r
-                              Name 73  "isampCubeA"\r
-                              Name 82  "samp1Ds"\r
-                              Name 91  "samp2Ds"\r
-                              Name 100  "sampCubes"\r
-                              Name 109  "samp1DAs"\r
-                              Name 118  "samp2DAs"\r
-                              Name 127  "sampCubeAs"\r
-                              Name 134  "levels"\r
-                              Name 140  "usamp2D"\r
-                              Name 148  "isamp3D"\r
-                              Name 156  "isampCube"\r
-                              Name 168  "samp2DA"\r
-                              Name 176  "usampCubeA"\r
-                              Name 206  "sampBuf"\r
-                              Name 210  "sampRect"\r
+                              Name 24  "isamp2D"\r
+                              Name 26  "pf2"\r
+                              Name 36  "usamp3D"\r
+                              Name 40  "pf3"\r
+                              Name 49  "sampCube"\r
+                              Name 59  "isamp1DA"\r
+                              Name 69  "usamp2DA"\r
+                              Name 79  "isampCubeA"\r
+                              Name 89  "samp1Ds"\r
+                              Name 99  "samp2Ds"\r
+                              Name 109  "sampCubes"\r
+                              Name 119  "samp1DAs"\r
+                              Name 129  "samp2DAs"\r
+                              Name 139  "sampCubeAs"\r
+                              Name 147  "levels"\r
+                              Name 154  "usamp2D"\r
+                              Name 163  "isamp3D"\r
+                              Name 172  "isampCube"\r
+                              Name 186  "samp2DA"\r
+                              Name 195  "usampCubeA"\r
+                              Name 232  "sampBuf"\r
+                              Name 236  "sampRect"\r
                2:             TypeVoid\r
                3:             TypeFunction 2\r
                6:             TypeFloat 32\r
@@ -51,230 +51,256 @@ Linked fragment stage:
               12:             TypePointer UniformConstant 11\r
       13(samp1D):     12(ptr) Variable UniformConstant\r
               15:             TypePointer Function 6(float)\r
-              19:             TypeInt 32 1\r
-              20:             TypeImage 19(int) 2D sampled format:Unknown\r
-              21:             TypeSampledImage 20\r
-              22:             TypePointer UniformConstant 21\r
-     23(isamp2D):     22(ptr) Variable UniformConstant\r
-              30:             TypeInt 32 0\r
-              31:             TypeImage 30(int) 3D sampled format:Unknown\r
-              32:             TypeSampledImage 31\r
-              33:             TypePointer UniformConstant 32\r
-     34(usamp3D):     33(ptr) Variable UniformConstant\r
-              36:             TypeVector 6(float) 3\r
-              37:             TypePointer Function 36(fvec3)\r
-              43:             TypeImage 6(float) Cube sampled format:Unknown\r
-              44:             TypeSampledImage 43\r
-              45:             TypePointer UniformConstant 44\r
-    46(sampCube):     45(ptr) Variable UniformConstant\r
-              52:             TypeImage 19(int) 1D array sampled format:Unknown\r
-              53:             TypeSampledImage 52\r
-              54:             TypePointer UniformConstant 53\r
-    55(isamp1DA):     54(ptr) Variable UniformConstant\r
-              61:             TypeImage 30(int) 2D array sampled format:Unknown\r
-              62:             TypeSampledImage 61\r
-              63:             TypePointer UniformConstant 62\r
-    64(usamp2DA):     63(ptr) Variable UniformConstant\r
-              70:             TypeImage 19(int) Cube array sampled format:Unknown\r
-              71:             TypeSampledImage 70\r
-              72:             TypePointer UniformConstant 71\r
-  73(isampCubeA):     72(ptr) Variable UniformConstant\r
-              79:             TypeImage 6(float) 1D depth sampled format:Unknown\r
-              80:             TypeSampledImage 79\r
-              81:             TypePointer UniformConstant 80\r
-     82(samp1Ds):     81(ptr) Variable UniformConstant\r
-              88:             TypeImage 6(float) 2D depth sampled format:Unknown\r
-              89:             TypeSampledImage 88\r
-              90:             TypePointer UniformConstant 89\r
-     91(samp2Ds):     90(ptr) Variable UniformConstant\r
-              97:             TypeImage 6(float) Cube depth sampled format:Unknown\r
-              98:             TypeSampledImage 97\r
-              99:             TypePointer UniformConstant 98\r
-  100(sampCubes):     99(ptr) Variable UniformConstant\r
-             106:             TypeImage 6(float) 1D depth array sampled format:Unknown\r
+              20:             TypeInt 32 1\r
+              21:             TypeImage 20(int) 2D sampled format:Unknown\r
+              22:             TypeSampledImage 21\r
+              23:             TypePointer UniformConstant 22\r
+     24(isamp2D):     23(ptr) Variable UniformConstant\r
+              32:             TypeInt 32 0\r
+              33:             TypeImage 32(int) 3D sampled format:Unknown\r
+              34:             TypeSampledImage 33\r
+              35:             TypePointer UniformConstant 34\r
+     36(usamp3D):     35(ptr) Variable UniformConstant\r
+              38:             TypeVector 6(float) 3\r
+              39:             TypePointer Function 38(fvec3)\r
+              46:             TypeImage 6(float) Cube sampled format:Unknown\r
+              47:             TypeSampledImage 46\r
+              48:             TypePointer UniformConstant 47\r
+    49(sampCube):     48(ptr) Variable UniformConstant\r
+              56:             TypeImage 20(int) 1D array sampled format:Unknown\r
+              57:             TypeSampledImage 56\r
+              58:             TypePointer UniformConstant 57\r
+    59(isamp1DA):     58(ptr) Variable UniformConstant\r
+              66:             TypeImage 32(int) 2D array sampled format:Unknown\r
+              67:             TypeSampledImage 66\r
+              68:             TypePointer UniformConstant 67\r
+    69(usamp2DA):     68(ptr) Variable UniformConstant\r
+              76:             TypeImage 20(int) Cube array sampled format:Unknown\r
+              77:             TypeSampledImage 76\r
+              78:             TypePointer UniformConstant 77\r
+  79(isampCubeA):     78(ptr) Variable UniformConstant\r
+              86:             TypeImage 6(float) 1D depth sampled format:Unknown\r
+              87:             TypeSampledImage 86\r
+              88:             TypePointer UniformConstant 87\r
+     89(samp1Ds):     88(ptr) Variable UniformConstant\r
+              96:             TypeImage 6(float) 2D depth sampled format:Unknown\r
+              97:             TypeSampledImage 96\r
+              98:             TypePointer UniformConstant 97\r
+     99(samp2Ds):     98(ptr) Variable UniformConstant\r
+             106:             TypeImage 6(float) Cube depth sampled format:Unknown\r
              107:             TypeSampledImage 106\r
              108:             TypePointer UniformConstant 107\r
-   109(samp1DAs):    108(ptr) Variable UniformConstant\r
-             115:             TypeImage 6(float) 2D depth array sampled format:Unknown\r
-             116:             TypeSampledImage 115\r
-             117:             TypePointer UniformConstant 116\r
-   118(samp2DAs):    117(ptr) Variable UniformConstant\r
-             124:             TypeImage 6(float) Cube depth array sampled format:Unknown\r
-             125:             TypeSampledImage 124\r
-             126:             TypePointer UniformConstant 125\r
- 127(sampCubeAs):    126(ptr) Variable UniformConstant\r
-             133:             TypePointer Function 19(int)\r
-             137:             TypeImage 30(int) 2D sampled format:Unknown\r
-             138:             TypeSampledImage 137\r
-             139:             TypePointer UniformConstant 138\r
-    140(usamp2D):    139(ptr) Variable UniformConstant\r
-             145:             TypeImage 19(int) 3D sampled format:Unknown\r
-             146:             TypeSampledImage 145\r
-             147:             TypePointer UniformConstant 146\r
-    148(isamp3D):    147(ptr) Variable UniformConstant\r
-             153:             TypeImage 19(int) Cube sampled format:Unknown\r
-             154:             TypeSampledImage 153\r
-             155:             TypePointer UniformConstant 154\r
-  156(isampCube):    155(ptr) Variable UniformConstant\r
-             165:             TypeImage 6(float) 2D array sampled format:Unknown\r
-             166:             TypeSampledImage 165\r
-             167:             TypePointer UniformConstant 166\r
-    168(samp2DA):    167(ptr) Variable UniformConstant\r
-             173:             TypeImage 30(int) Cube array sampled format:Unknown\r
-             174:             TypeSampledImage 173\r
-             175:             TypePointer UniformConstant 174\r
- 176(usampCubeA):    175(ptr) Variable UniformConstant\r
-             203:             TypeImage 6(float) Buffer sampled format:Unknown\r
-             204:             TypeSampledImage 203\r
-             205:             TypePointer UniformConstant 204\r
-    206(sampBuf):    205(ptr) Variable UniformConstant\r
-             207:             TypeImage 6(float) Rect sampled format:Unknown\r
-             208:             TypeSampledImage 207\r
-             209:             TypePointer UniformConstant 208\r
-   210(sampRect):    209(ptr) Variable UniformConstant\r
+  109(sampCubes):    108(ptr) Variable UniformConstant\r
+             116:             TypeImage 6(float) 1D depth array sampled format:Unknown\r
+             117:             TypeSampledImage 116\r
+             118:             TypePointer UniformConstant 117\r
+   119(samp1DAs):    118(ptr) Variable UniformConstant\r
+             126:             TypeImage 6(float) 2D depth array sampled format:Unknown\r
+             127:             TypeSampledImage 126\r
+             128:             TypePointer UniformConstant 127\r
+   129(samp2DAs):    128(ptr) Variable UniformConstant\r
+             136:             TypeImage 6(float) Cube depth array sampled format:Unknown\r
+             137:             TypeSampledImage 136\r
+             138:             TypePointer UniformConstant 137\r
+ 139(sampCubeAs):    138(ptr) Variable UniformConstant\r
+             146:             TypePointer Function 20(int)\r
+             151:             TypeImage 32(int) 2D sampled format:Unknown\r
+             152:             TypeSampledImage 151\r
+             153:             TypePointer UniformConstant 152\r
+    154(usamp2D):    153(ptr) Variable UniformConstant\r
+             160:             TypeImage 20(int) 3D sampled format:Unknown\r
+             161:             TypeSampledImage 160\r
+             162:             TypePointer UniformConstant 161\r
+    163(isamp3D):    162(ptr) Variable UniformConstant\r
+             169:             TypeImage 20(int) Cube sampled format:Unknown\r
+             170:             TypeSampledImage 169\r
+             171:             TypePointer UniformConstant 170\r
+  172(isampCube):    171(ptr) Variable UniformConstant\r
+             183:             TypeImage 6(float) 2D array sampled format:Unknown\r
+             184:             TypeSampledImage 183\r
+             185:             TypePointer UniformConstant 184\r
+    186(samp2DA):    185(ptr) Variable UniformConstant\r
+             192:             TypeImage 32(int) Cube array sampled format:Unknown\r
+             193:             TypeSampledImage 192\r
+             194:             TypePointer UniformConstant 193\r
+ 195(usampCubeA):    194(ptr) Variable UniformConstant\r
+             229:             TypeImage 6(float) Buffer sampled format:Unknown\r
+             230:             TypeSampledImage 229\r
+             231:             TypePointer UniformConstant 230\r
+    232(sampBuf):    231(ptr) Variable UniformConstant\r
+             233:             TypeImage 6(float) Rect sampled format:Unknown\r
+             234:             TypeSampledImage 233\r
+             235:             TypePointer UniformConstant 234\r
+   236(sampRect):    235(ptr) Variable UniformConstant\r
          4(main):           2 Function None 3\r
                5:             Label\r
           9(lod):      8(ptr) Variable Function\r
           16(pf):     15(ptr) Variable Function\r
-         25(pf2):      8(ptr) Variable Function\r
-         38(pf3):     37(ptr) Variable Function\r
-     134(levels):    133(ptr) Variable Function\r
+         26(pf2):      8(ptr) Variable Function\r
+         40(pf3):     39(ptr) Variable Function\r
+     147(levels):    146(ptr) Variable Function\r
               14:          11 Load 13(samp1D)\r
               17:    6(float) Load 16(pf)\r
-              18:    7(fvec2) ImageQueryLod 14 17\r
-                              Store 9(lod) 18\r
-              24:          21 Load 23(isamp2D)\r
-              26:    7(fvec2) Load 25(pf2)\r
-              27:    7(fvec2) ImageQueryLod 24 26\r
-              28:    7(fvec2) Load 9(lod)\r
-              29:    7(fvec2) FAdd 28 27\r
-                              Store 9(lod) 29\r
-              35:          32 Load 34(usamp3D)\r
-              39:   36(fvec3) Load 38(pf3)\r
-              40:    7(fvec2) ImageQueryLod 35 39\r
-              41:    7(fvec2) Load 9(lod)\r
-              42:    7(fvec2) FAdd 41 40\r
-                              Store 9(lod) 42\r
-              47:          44 Load 46(sampCube)\r
-              48:   36(fvec3) Load 38(pf3)\r
-              49:    7(fvec2) ImageQueryLod 47 48\r
-              50:    7(fvec2) Load 9(lod)\r
-              51:    7(fvec2) FAdd 50 49\r
-                              Store 9(lod) 51\r
-              56:          53 Load 55(isamp1DA)\r
-              57:    6(float) Load 16(pf)\r
-              58:    7(fvec2) ImageQueryLod 56 57\r
-              59:    7(fvec2) Load 9(lod)\r
-              60:    7(fvec2) FAdd 59 58\r
-                              Store 9(lod) 60\r
-              65:          62 Load 64(usamp2DA)\r
-              66:    7(fvec2) Load 25(pf2)\r
-              67:    7(fvec2) ImageQueryLod 65 66\r
-              68:    7(fvec2) Load 9(lod)\r
-              69:    7(fvec2) FAdd 68 67\r
-                              Store 9(lod) 69\r
-              74:          71 Load 73(isampCubeA)\r
-              75:   36(fvec3) Load 38(pf3)\r
-              76:    7(fvec2) ImageQueryLod 74 75\r
-              77:    7(fvec2) Load 9(lod)\r
-              78:    7(fvec2) FAdd 77 76\r
-                              Store 9(lod) 78\r
-              83:          80 Load 82(samp1Ds)\r
-              84:    6(float) Load 16(pf)\r
-              85:    7(fvec2) ImageQueryLod 83 84\r
-              86:    7(fvec2) Load 9(lod)\r
-              87:    7(fvec2) FAdd 86 85\r
-                              Store 9(lod) 87\r
-              92:          89 Load 91(samp2Ds)\r
-              93:    7(fvec2) Load 25(pf2)\r
-              94:    7(fvec2) ImageQueryLod 92 93\r
-              95:    7(fvec2) Load 9(lod)\r
-              96:    7(fvec2) FAdd 95 94\r
-                              Store 9(lod) 96\r
-             101:          98 Load 100(sampCubes)\r
-             102:   36(fvec3) Load 38(pf3)\r
-             103:    7(fvec2) ImageQueryLod 101 102\r
+              18:          10 Image 14\r
+              19:    7(fvec2) ImageQueryLod 18 17\r
+                              Store 9(lod) 19\r
+              25:          22 Load 24(isamp2D)\r
+              27:    7(fvec2) Load 26(pf2)\r
+              28:          21 Image 25\r
+              29:    7(fvec2) ImageQueryLod 28 27\r
+              30:    7(fvec2) Load 9(lod)\r
+              31:    7(fvec2) FAdd 30 29\r
+                              Store 9(lod) 31\r
+              37:          34 Load 36(usamp3D)\r
+              41:   38(fvec3) Load 40(pf3)\r
+              42:          33 Image 37\r
+              43:    7(fvec2) ImageQueryLod 42 41\r
+              44:    7(fvec2) Load 9(lod)\r
+              45:    7(fvec2) FAdd 44 43\r
+                              Store 9(lod) 45\r
+              50:          47 Load 49(sampCube)\r
+              51:   38(fvec3) Load 40(pf3)\r
+              52:          46 Image 50\r
+              53:    7(fvec2) ImageQueryLod 52 51\r
+              54:    7(fvec2) Load 9(lod)\r
+              55:    7(fvec2) FAdd 54 53\r
+                              Store 9(lod) 55\r
+              60:          57 Load 59(isamp1DA)\r
+              61:    6(float) Load 16(pf)\r
+              62:          56 Image 60\r
+              63:    7(fvec2) ImageQueryLod 62 61\r
+              64:    7(fvec2) Load 9(lod)\r
+              65:    7(fvec2) FAdd 64 63\r
+                              Store 9(lod) 65\r
+              70:          67 Load 69(usamp2DA)\r
+              71:    7(fvec2) Load 26(pf2)\r
+              72:          66 Image 70\r
+              73:    7(fvec2) ImageQueryLod 72 71\r
+              74:    7(fvec2) Load 9(lod)\r
+              75:    7(fvec2) FAdd 74 73\r
+                              Store 9(lod) 75\r
+              80:          77 Load 79(isampCubeA)\r
+              81:   38(fvec3) Load 40(pf3)\r
+              82:          76 Image 80\r
+              83:    7(fvec2) ImageQueryLod 82 81\r
+              84:    7(fvec2) Load 9(lod)\r
+              85:    7(fvec2) FAdd 84 83\r
+                              Store 9(lod) 85\r
+              90:          87 Load 89(samp1Ds)\r
+              91:    6(float) Load 16(pf)\r
+              92:          86 Image 90\r
+              93:    7(fvec2) ImageQueryLod 92 91\r
+              94:    7(fvec2) Load 9(lod)\r
+              95:    7(fvec2) FAdd 94 93\r
+                              Store 9(lod) 95\r
+             100:          97 Load 99(samp2Ds)\r
+             101:    7(fvec2) Load 26(pf2)\r
+             102:          96 Image 100\r
+             103:    7(fvec2) ImageQueryLod 102 101\r
              104:    7(fvec2) Load 9(lod)\r
              105:    7(fvec2) FAdd 104 103\r
                               Store 9(lod) 105\r
-             110:         107 Load 109(samp1DAs)\r
-             111:    6(float) Load 16(pf)\r
-             112:    7(fvec2) ImageQueryLod 110 111\r
-             113:    7(fvec2) Load 9(lod)\r
-             114:    7(fvec2) FAdd 113 112\r
-                              Store 9(lod) 114\r
-             119:         116 Load 118(samp2DAs)\r
-             120:    7(fvec2) Load 25(pf2)\r
-             121:    7(fvec2) ImageQueryLod 119 120\r
-             122:    7(fvec2) Load 9(lod)\r
-             123:    7(fvec2) FAdd 122 121\r
-                              Store 9(lod) 123\r
-             128:         125 Load 127(sampCubeAs)\r
-             129:   36(fvec3) Load 38(pf3)\r
-             130:    7(fvec2) ImageQueryLod 128 129\r
-             131:    7(fvec2) Load 9(lod)\r
-             132:    7(fvec2) FAdd 131 130\r
-                              Store 9(lod) 132\r
-             135:          11 Load 13(samp1D)\r
-             136:     19(int) ImageQueryLevels 135\r
-                              Store 134(levels) 136\r
-             141:         138 Load 140(usamp2D)\r
-             142:     19(int) ImageQueryLevels 141\r
-             143:     19(int) Load 134(levels)\r
-             144:     19(int) IAdd 143 142\r
-                              Store 134(levels) 144\r
-             149:         146 Load 148(isamp3D)\r
-             150:     19(int) ImageQueryLevels 149\r
-             151:     19(int) Load 134(levels)\r
-             152:     19(int) IAdd 151 150\r
-                              Store 134(levels) 152\r
-             157:         154 Load 156(isampCube)\r
-             158:     19(int) ImageQueryLevels 157\r
-             159:     19(int) Load 134(levels)\r
-             160:     19(int) IAdd 159 158\r
-                              Store 134(levels) 160\r
-             161:          53 Load 55(isamp1DA)\r
-             162:     19(int) ImageQueryLevels 161\r
-             163:     19(int) Load 134(levels)\r
-             164:     19(int) IAdd 163 162\r
-                              Store 134(levels) 164\r
-             169:         166 Load 168(samp2DA)\r
-             170:     19(int) ImageQueryLevels 169\r
-             171:     19(int) Load 134(levels)\r
-             172:     19(int) IAdd 171 170\r
-                              Store 134(levels) 172\r
-             177:         174 Load 176(usampCubeA)\r
-             178:     19(int) ImageQueryLevels 177\r
-             179:     19(int) Load 134(levels)\r
-             180:     19(int) IAdd 179 178\r
-                              Store 134(levels) 180\r
-             181:          80 Load 82(samp1Ds)\r
-             182:     19(int) ImageQueryLevels 181\r
-                              Store 134(levels) 182\r
-             183:          89 Load 91(samp2Ds)\r
-             184:     19(int) ImageQueryLevels 183\r
-             185:     19(int) Load 134(levels)\r
-             186:     19(int) IAdd 185 184\r
-                              Store 134(levels) 186\r
-             187:          98 Load 100(sampCubes)\r
-             188:     19(int) ImageQueryLevels 187\r
-             189:     19(int) Load 134(levels)\r
-             190:     19(int) IAdd 189 188\r
-                              Store 134(levels) 190\r
-             191:         107 Load 109(samp1DAs)\r
-             192:     19(int) ImageQueryLevels 191\r
-             193:     19(int) Load 134(levels)\r
-             194:     19(int) IAdd 193 192\r
-                              Store 134(levels) 194\r
-             195:         116 Load 118(samp2DAs)\r
-             196:     19(int) ImageQueryLevels 195\r
-             197:     19(int) Load 134(levels)\r
-             198:     19(int) IAdd 197 196\r
-                              Store 134(levels) 198\r
-             199:         125 Load 127(sampCubeAs)\r
-             200:     19(int) ImageQueryLevels 199\r
-             201:     19(int) Load 134(levels)\r
-             202:     19(int) IAdd 201 200\r
-                              Store 134(levels) 202\r
+             110:         107 Load 109(sampCubes)\r
+             111:   38(fvec3) Load 40(pf3)\r
+             112:         106 Image 110\r
+             113:    7(fvec2) ImageQueryLod 112 111\r
+             114:    7(fvec2) Load 9(lod)\r
+             115:    7(fvec2) FAdd 114 113\r
+                              Store 9(lod) 115\r
+             120:         117 Load 119(samp1DAs)\r
+             121:    6(float) Load 16(pf)\r
+             122:         116 Image 120\r
+             123:    7(fvec2) ImageQueryLod 122 121\r
+             124:    7(fvec2) Load 9(lod)\r
+             125:    7(fvec2) FAdd 124 123\r
+                              Store 9(lod) 125\r
+             130:         127 Load 129(samp2DAs)\r
+             131:    7(fvec2) Load 26(pf2)\r
+             132:         126 Image 130\r
+             133:    7(fvec2) ImageQueryLod 132 131\r
+             134:    7(fvec2) Load 9(lod)\r
+             135:    7(fvec2) FAdd 134 133\r
+                              Store 9(lod) 135\r
+             140:         137 Load 139(sampCubeAs)\r
+             141:   38(fvec3) Load 40(pf3)\r
+             142:         136 Image 140\r
+             143:    7(fvec2) ImageQueryLod 142 141\r
+             144:    7(fvec2) Load 9(lod)\r
+             145:    7(fvec2) FAdd 144 143\r
+                              Store 9(lod) 145\r
+             148:          11 Load 13(samp1D)\r
+             149:          10 Image 148\r
+             150:     20(int) ImageQueryLevels 149\r
+                              Store 147(levels) 150\r
+             155:         152 Load 154(usamp2D)\r
+             156:         151 Image 155\r
+             157:     20(int) ImageQueryLevels 156\r
+             158:     20(int) Load 147(levels)\r
+             159:     20(int) IAdd 158 157\r
+                              Store 147(levels) 159\r
+             164:         161 Load 163(isamp3D)\r
+             165:         160 Image 164\r
+             166:     20(int) ImageQueryLevels 165\r
+             167:     20(int) Load 147(levels)\r
+             168:     20(int) IAdd 167 166\r
+                              Store 147(levels) 168\r
+             173:         170 Load 172(isampCube)\r
+             174:         169 Image 173\r
+             175:     20(int) ImageQueryLevels 174\r
+             176:     20(int) Load 147(levels)\r
+             177:     20(int) IAdd 176 175\r
+                              Store 147(levels) 177\r
+             178:          57 Load 59(isamp1DA)\r
+             179:          56 Image 178\r
+             180:     20(int) ImageQueryLevels 179\r
+             181:     20(int) Load 147(levels)\r
+             182:     20(int) IAdd 181 180\r
+                              Store 147(levels) 182\r
+             187:         184 Load 186(samp2DA)\r
+             188:         183 Image 187\r
+             189:     20(int) ImageQueryLevels 188\r
+             190:     20(int) Load 147(levels)\r
+             191:     20(int) IAdd 190 189\r
+                              Store 147(levels) 191\r
+             196:         193 Load 195(usampCubeA)\r
+             197:         192 Image 196\r
+             198:     20(int) ImageQueryLevels 197\r
+             199:     20(int) Load 147(levels)\r
+             200:     20(int) IAdd 199 198\r
+                              Store 147(levels) 200\r
+             201:          87 Load 89(samp1Ds)\r
+             202:          86 Image 201\r
+             203:     20(int) ImageQueryLevels 202\r
+                              Store 147(levels) 203\r
+             204:          97 Load 99(samp2Ds)\r
+             205:          96 Image 204\r
+             206:     20(int) ImageQueryLevels 205\r
+             207:     20(int) Load 147(levels)\r
+             208:     20(int) IAdd 207 206\r
+                              Store 147(levels) 208\r
+             209:         107 Load 109(sampCubes)\r
+             210:         106 Image 209\r
+             211:     20(int) ImageQueryLevels 210\r
+             212:     20(int) Load 147(levels)\r
+             213:     20(int) IAdd 212 211\r
+                              Store 147(levels) 213\r
+             214:         117 Load 119(samp1DAs)\r
+             215:         116 Image 214\r
+             216:     20(int) ImageQueryLevels 215\r
+             217:     20(int) Load 147(levels)\r
+             218:     20(int) IAdd 217 216\r
+                              Store 147(levels) 218\r
+             219:         127 Load 129(samp2DAs)\r
+             220:         126 Image 219\r
+             221:     20(int) ImageQueryLevels 220\r
+             222:     20(int) Load 147(levels)\r
+             223:     20(int) IAdd 222 221\r
+                              Store 147(levels) 223\r
+             224:         137 Load 139(sampCubeAs)\r
+             225:         136 Image 224\r
+             226:     20(int) ImageQueryLevels 225\r
+             227:     20(int) Load 147(levels)\r
+             228:     20(int) IAdd 227 226\r
+                              Store 147(levels) 228\r
                               Return\r
                               FunctionEnd\r
index 4c5b5cb..a21eb50 100644 (file)
@@ -2,5 +2,5 @@
 // For the version, it uses the latest git tag followed by the number of commits.
 // For the date, it uses the current date (when then script is run).
 
-#define GLSLANG_REVISION "SPIRV99.824"
-#define GLSLANG_DATE "06-Dec-2015"
+#define GLSLANG_REVISION "SPIRV99.830"
+#define GLSLANG_DATE "08-Dec-2015"