diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 9c8b8b932c93a7b786052f4b31b44cb94f809b7f..245715fc90612b695595e3bd19cf5541737d97d9 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -2745,9 +2745,10 @@ 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))
+        // OpImageQueryLod works on a sampled image, for other queries the image has to be extracted first
+        if (node->getOp() != glslang::EOpTextureQueryLod && 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:
diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index 9d061d29e010478d693729dfd4071c1b414e8b1a..ff18441c8bff70843ca95ec278d03d11f92c74a9 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -345,7 +345,7 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 150
+// Id's are bound by 141
 
                               Capability Shader
                               Capability Sampled1D
@@ -353,51 +353,51 @@ gl_FragCoord origin is upper left
                               Capability ImageQuery
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 141 145
+                              EntryPoint Fragment 4  "main" 132 136
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 8  "txval10"
                               Name 11  "g_tTex1df4a"
                               Name 15  "g_sSamp"
-                              Name 26  "txval11"
-                              Name 29  "g_tTex1di4a"
-                              Name 38  "txval12"
-                              Name 42  "g_tTex1du4a"
-                              Name 51  "txval20"
-                              Name 54  "g_tTex2df4a"
-                              Name 63  "txval21"
-                              Name 66  "g_tTex2di4a"
-                              Name 76  "txval22"
-                              Name 79  "g_tTex2du4a"
-                              Name 90  "txval40"
-                              Name 93  "g_tTexcdf4a"
-                              Name 103  "txval41"
-                              Name 106  "g_tTexcdi4a"
-                              Name 115  "txval42"
-                              Name 118  "g_tTexcdu4a"
-                              Name 131  "PS_OUTPUT"
-                              MemberName 131(PS_OUTPUT) 0  "Color"
-                              MemberName 131(PS_OUTPUT) 1  "Depth"
-                              Name 133  "psout"
-                              Name 141  "Color"
-                              Name 145  "Depth"
-                              Name 149  "g_tTex1df4"
+                              Name 25  "txval11"
+                              Name 28  "g_tTex1di4a"
+                              Name 36  "txval12"
+                              Name 40  "g_tTex1du4a"
+                              Name 48  "txval20"
+                              Name 51  "g_tTex2df4a"
+                              Name 59  "txval21"
+                              Name 62  "g_tTex2di4a"
+                              Name 71  "txval22"
+                              Name 74  "g_tTex2du4a"
+                              Name 84  "txval40"
+                              Name 87  "g_tTexcdf4a"
+                              Name 96  "txval41"
+                              Name 99  "g_tTexcdi4a"
+                              Name 107  "txval42"
+                              Name 110  "g_tTexcdu4a"
+                              Name 122  "PS_OUTPUT"
+                              MemberName 122(PS_OUTPUT) 0  "Color"
+                              MemberName 122(PS_OUTPUT) 1  "Depth"
+                              Name 124  "psout"
+                              Name 132  "Color"
+                              Name 136  "Depth"
+                              Name 140  "g_tTex1df4"
                               Decorate 11(g_tTex1df4a) DescriptorSet 0
                               Decorate 11(g_tTex1df4a) Binding 1
                               Decorate 15(g_sSamp) DescriptorSet 0
                               Decorate 15(g_sSamp) Binding 0
-                              Decorate 29(g_tTex1di4a) DescriptorSet 0
-                              Decorate 42(g_tTex1du4a) DescriptorSet 0
-                              Decorate 54(g_tTex2df4a) DescriptorSet 0
-                              Decorate 66(g_tTex2di4a) DescriptorSet 0
-                              Decorate 79(g_tTex2du4a) DescriptorSet 0
-                              Decorate 93(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 106(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 118(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 141(Color) Location 0
-                              Decorate 145(Depth) BuiltIn FragDepth
-                              Decorate 149(g_tTex1df4) DescriptorSet 0
-                              Decorate 149(g_tTex1df4) Binding 0
+                              Decorate 28(g_tTex1di4a) DescriptorSet 0
+                              Decorate 40(g_tTex1du4a) DescriptorSet 0
+                              Decorate 51(g_tTex2df4a) DescriptorSet 0
+                              Decorate 62(g_tTex2di4a) DescriptorSet 0
+                              Decorate 74(g_tTex2du4a) DescriptorSet 0
+                              Decorate 87(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 99(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 110(g_tTexcdu4a) DescriptorSet 0
+                              Decorate 132(Color) Location 0
+                              Decorate 136(Depth) BuiltIn FragDepth
+                              Decorate 140(g_tTex1df4) DescriptorSet 0
+                              Decorate 140(g_tTex1df4) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -410,153 +410,144 @@ gl_FragCoord origin is upper left
      15(g_sSamp):     14(ptr) Variable UniformConstant
               17:             TypeSampledImage 9
               19:    6(float) Constant 1036831949
-              21:             TypeVector 6(float) 2
-              23:             TypeInt 32 1
-              24:     23(int) Constant 0
-              27:             TypeImage 23(int) 1D array sampled format:Unknown
-              28:             TypePointer UniformConstant 27
- 29(g_tTex1di4a):     28(ptr) Variable UniformConstant
-              32:             TypeSampledImage 27
-              34:    6(float) Constant 1045220557
-              39:             TypeInt 32 0
-              40:             TypeImage 39(int) 1D array sampled format:Unknown
-              41:             TypePointer UniformConstant 40
- 42(g_tTex1du4a):     41(ptr) Variable UniformConstant
-              45:             TypeSampledImage 40
-              47:    6(float) Constant 1050253722
-              52:             TypeImage 6(float) 2D array sampled format:Unknown
-              53:             TypePointer UniformConstant 52
- 54(g_tTex2df4a):     53(ptr) Variable UniformConstant
-              57:             TypeSampledImage 52
-              59:   21(fvec2) ConstantComposite 19 34
-              64:             TypeImage 23(int) 2D array sampled format:Unknown
-              65:             TypePointer UniformConstant 64
- 66(g_tTex2di4a):     65(ptr) Variable UniformConstant
-              69:             TypeSampledImage 64
-              71:    6(float) Constant 1053609165
-              72:   21(fvec2) ConstantComposite 47 71
-              77:             TypeImage 39(int) 2D array sampled format:Unknown
-              78:             TypePointer UniformConstant 77
- 79(g_tTex2du4a):     78(ptr) Variable UniformConstant
-              82:             TypeSampledImage 77
-              84:    6(float) Constant 1056964608
-              85:    6(float) Constant 1058642330
-              86:   21(fvec2) ConstantComposite 84 85
-              91:             TypeImage 6(float) Cube array sampled format:Unknown
-              92:             TypePointer UniformConstant 91
- 93(g_tTexcdf4a):     92(ptr) Variable UniformConstant
-              96:             TypeSampledImage 91
-              98:             TypeVector 6(float) 3
-              99:   98(fvec3) ConstantComposite 19 34 47
-             104:             TypeImage 23(int) Cube array sampled format:Unknown
-             105:             TypePointer UniformConstant 104
-106(g_tTexcdi4a):    105(ptr) Variable UniformConstant
-             109:             TypeSampledImage 104
-             111:   98(fvec3) ConstantComposite 71 84 85
-             116:             TypeImage 39(int) Cube array sampled format:Unknown
-             117:             TypePointer UniformConstant 116
-118(g_tTexcdu4a):    117(ptr) Variable UniformConstant
-             121:             TypeSampledImage 116
-             123:    6(float) Constant 1060320051
-             124:    6(float) Constant 1061997773
-             125:    6(float) Constant 1063675494
-             126:   98(fvec3) ConstantComposite 123 124 125
-             130:             TypeVector 6(float) 4
-  131(PS_OUTPUT):             TypeStruct 130(fvec4) 6(float)
-             132:             TypePointer Function 131(PS_OUTPUT)
-             134:    6(float) Constant 1065353216
-             135:  130(fvec4) ConstantComposite 134 134 134 134
-             136:             TypePointer Function 130(fvec4)
-             138:     23(int) Constant 1
-             140:             TypePointer Output 130(fvec4)
-      141(Color):    140(ptr) Variable Output
-             144:             TypePointer Output 6(float)
-      145(Depth):    144(ptr) Variable Output
- 149(g_tTex1df4):     10(ptr) Variable UniformConstant
+              20:             TypeVector 6(float) 2
+              22:             TypeInt 32 1
+              23:     22(int) Constant 0
+              26:             TypeImage 22(int) 1D array sampled format:Unknown
+              27:             TypePointer UniformConstant 26
+ 28(g_tTex1di4a):     27(ptr) Variable UniformConstant
+              31:             TypeSampledImage 26
+              33:    6(float) Constant 1045220557
+              37:             TypeInt 32 0
+              38:             TypeImage 37(int) 1D array sampled format:Unknown
+              39:             TypePointer UniformConstant 38
+ 40(g_tTex1du4a):     39(ptr) Variable UniformConstant
+              43:             TypeSampledImage 38
+              45:    6(float) Constant 1050253722
+              49:             TypeImage 6(float) 2D array sampled format:Unknown
+              50:             TypePointer UniformConstant 49
+ 51(g_tTex2df4a):     50(ptr) Variable UniformConstant
+              54:             TypeSampledImage 49
+              56:   20(fvec2) ConstantComposite 19 33
+              60:             TypeImage 22(int) 2D array sampled format:Unknown
+              61:             TypePointer UniformConstant 60
+ 62(g_tTex2di4a):     61(ptr) Variable UniformConstant
+              65:             TypeSampledImage 60
+              67:    6(float) Constant 1053609165
+              68:   20(fvec2) ConstantComposite 45 67
+              72:             TypeImage 37(int) 2D array sampled format:Unknown
+              73:             TypePointer UniformConstant 72
+ 74(g_tTex2du4a):     73(ptr) Variable UniformConstant
+              77:             TypeSampledImage 72
+              79:    6(float) Constant 1056964608
+              80:    6(float) Constant 1058642330
+              81:   20(fvec2) ConstantComposite 79 80
+              85:             TypeImage 6(float) Cube array sampled format:Unknown
+              86:             TypePointer UniformConstant 85
+ 87(g_tTexcdf4a):     86(ptr) Variable UniformConstant
+              90:             TypeSampledImage 85
+              92:             TypeVector 6(float) 3
+              93:   92(fvec3) ConstantComposite 19 33 45
+              97:             TypeImage 22(int) Cube array sampled format:Unknown
+              98:             TypePointer UniformConstant 97
+ 99(g_tTexcdi4a):     98(ptr) Variable UniformConstant
+             102:             TypeSampledImage 97
+             104:   92(fvec3) ConstantComposite 67 79 80
+             108:             TypeImage 37(int) Cube array sampled format:Unknown
+             109:             TypePointer UniformConstant 108
+110(g_tTexcdu4a):    109(ptr) Variable UniformConstant
+             113:             TypeSampledImage 108
+             115:    6(float) Constant 1060320051
+             116:    6(float) Constant 1061997773
+             117:    6(float) Constant 1063675494
+             118:   92(fvec3) ConstantComposite 115 116 117
+             121:             TypeVector 6(float) 4
+  122(PS_OUTPUT):             TypeStruct 121(fvec4) 6(float)
+             123:             TypePointer Function 122(PS_OUTPUT)
+             125:    6(float) Constant 1065353216
+             126:  121(fvec4) ConstantComposite 125 125 125 125
+             127:             TypePointer Function 121(fvec4)
+             129:     22(int) Constant 1
+             131:             TypePointer Output 121(fvec4)
+      132(Color):    131(ptr) Variable Output
+             135:             TypePointer Output 6(float)
+      136(Depth):    135(ptr) Variable Output
+ 140(g_tTex1df4):     10(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
       8(txval10):      7(ptr) Variable Function
-     26(txval11):      7(ptr) Variable Function
-     38(txval12):      7(ptr) Variable Function
-     51(txval20):      7(ptr) Variable Function
-     63(txval21):      7(ptr) Variable Function
-     76(txval22):      7(ptr) Variable Function
-     90(txval40):      7(ptr) Variable Function
-    103(txval41):      7(ptr) Variable Function
-    115(txval42):      7(ptr) Variable Function
-      133(psout):    132(ptr) Variable Function
+     25(txval11):      7(ptr) Variable Function
+     36(txval12):      7(ptr) Variable Function
+     48(txval20):      7(ptr) Variable Function
+     59(txval21):      7(ptr) Variable Function
+     71(txval22):      7(ptr) Variable Function
+     84(txval40):      7(ptr) Variable Function
+     96(txval41):      7(ptr) Variable Function
+    107(txval42):      7(ptr) Variable Function
+      124(psout):    123(ptr) Variable Function
               12:           9 Load 11(g_tTex1df4a)
               16:          13 Load 15(g_sSamp)
               18:          17 SampledImage 12 16
-              20:           9 Image 18
-              22:   21(fvec2) ImageQueryLod 20 19
-              25:    6(float) CompositeExtract 22 0
-                              Store 8(txval10) 25
-              30:          27 Load 29(g_tTex1di4a)
-              31:          13 Load 15(g_sSamp)
-              33:          32 SampledImage 30 31
-              35:          27 Image 33
-              36:   21(fvec2) ImageQueryLod 35 34
-              37:    6(float) CompositeExtract 36 0
-                              Store 26(txval11) 37
-              43:          40 Load 42(g_tTex1du4a)
-              44:          13 Load 15(g_sSamp)
-              46:          45 SampledImage 43 44
-              48:          40 Image 46
-              49:   21(fvec2) ImageQueryLod 48 47
-              50:    6(float) CompositeExtract 49 0
-                              Store 38(txval12) 50
-              55:          52 Load 54(g_tTex2df4a)
-              56:          13 Load 15(g_sSamp)
-              58:          57 SampledImage 55 56
-              60:          52 Image 58
-              61:   21(fvec2) ImageQueryLod 60 59
-              62:    6(float) CompositeExtract 61 0
-                              Store 51(txval20) 62
-              67:          64 Load 66(g_tTex2di4a)
-              68:          13 Load 15(g_sSamp)
-              70:          69 SampledImage 67 68
-              73:          64 Image 70
-              74:   21(fvec2) ImageQueryLod 73 72
-              75:    6(float) CompositeExtract 74 0
-                              Store 63(txval21) 75
-              80:          77 Load 79(g_tTex2du4a)
-              81:          13 Load 15(g_sSamp)
-              83:          82 SampledImage 80 81
-              87:          77 Image 83
-              88:   21(fvec2) ImageQueryLod 87 86
-              89:    6(float) CompositeExtract 88 0
-                              Store 76(txval22) 89
-              94:          91 Load 93(g_tTexcdf4a)
-              95:          13 Load 15(g_sSamp)
-              97:          96 SampledImage 94 95
-             100:          91 Image 97
-             101:   21(fvec2) ImageQueryLod 100 99
-             102:    6(float) CompositeExtract 101 0
-                              Store 90(txval40) 102
-             107:         104 Load 106(g_tTexcdi4a)
-             108:          13 Load 15(g_sSamp)
-             110:         109 SampledImage 107 108
-             112:         104 Image 110
-             113:   21(fvec2) ImageQueryLod 112 111
-             114:    6(float) CompositeExtract 113 0
-                              Store 103(txval41) 114
-             119:         116 Load 118(g_tTexcdu4a)
-             120:          13 Load 15(g_sSamp)
-             122:         121 SampledImage 119 120
-             127:         116 Image 122
-             128:   21(fvec2) ImageQueryLod 127 126
-             129:    6(float) CompositeExtract 128 0
-                              Store 115(txval42) 129
-             137:    136(ptr) AccessChain 133(psout) 24
-                              Store 137 135
-             139:      7(ptr) AccessChain 133(psout) 138
-                              Store 139 134
-             142:    136(ptr) AccessChain 133(psout) 24
-             143:  130(fvec4) Load 142
-                              Store 141(Color) 143
-             146:      7(ptr) AccessChain 133(psout) 138
-             147:    6(float) Load 146
-                              Store 145(Depth) 147
+              21:   20(fvec2) ImageQueryLod 18 19
+              24:    6(float) CompositeExtract 21 0
+                              Store 8(txval10) 24
+              29:          26 Load 28(g_tTex1di4a)
+              30:          13 Load 15(g_sSamp)
+              32:          31 SampledImage 29 30
+              34:   20(fvec2) ImageQueryLod 32 33
+              35:    6(float) CompositeExtract 34 0
+                              Store 25(txval11) 35
+              41:          38 Load 40(g_tTex1du4a)
+              42:          13 Load 15(g_sSamp)
+              44:          43 SampledImage 41 42
+              46:   20(fvec2) ImageQueryLod 44 45
+              47:    6(float) CompositeExtract 46 0
+                              Store 36(txval12) 47
+              52:          49 Load 51(g_tTex2df4a)
+              53:          13 Load 15(g_sSamp)
+              55:          54 SampledImage 52 53
+              57:   20(fvec2) ImageQueryLod 55 56
+              58:    6(float) CompositeExtract 57 0
+                              Store 48(txval20) 58
+              63:          60 Load 62(g_tTex2di4a)
+              64:          13 Load 15(g_sSamp)
+              66:          65 SampledImage 63 64
+              69:   20(fvec2) ImageQueryLod 66 68
+              70:    6(float) CompositeExtract 69 0
+                              Store 59(txval21) 70
+              75:          72 Load 74(g_tTex2du4a)
+              76:          13 Load 15(g_sSamp)
+              78:          77 SampledImage 75 76
+              82:   20(fvec2) ImageQueryLod 78 81
+              83:    6(float) CompositeExtract 82 0
+                              Store 71(txval22) 83
+              88:          85 Load 87(g_tTexcdf4a)
+              89:          13 Load 15(g_sSamp)
+              91:          90 SampledImage 88 89
+              94:   20(fvec2) ImageQueryLod 91 93
+              95:    6(float) CompositeExtract 94 0
+                              Store 84(txval40) 95
+             100:          97 Load 99(g_tTexcdi4a)
+             101:          13 Load 15(g_sSamp)
+             103:         102 SampledImage 100 101
+             105:   20(fvec2) ImageQueryLod 103 104
+             106:    6(float) CompositeExtract 105 0
+                              Store 96(txval41) 106
+             111:         108 Load 110(g_tTexcdu4a)
+             112:          13 Load 15(g_sSamp)
+             114:         113 SampledImage 111 112
+             119:   20(fvec2) ImageQueryLod 114 118
+             120:    6(float) CompositeExtract 119 0
+                              Store 107(txval42) 120
+             128:    127(ptr) AccessChain 124(psout) 23
+                              Store 128 126
+             130:      7(ptr) AccessChain 124(psout) 129
+                              Store 130 125
+             133:    127(ptr) AccessChain 124(psout) 23
+             134:  121(fvec4) Load 133
+                              Store 132(Color) 134
+             137:      7(ptr) AccessChain 124(psout) 129
+             138:    6(float) Load 137
+                              Store 136(Depth) 138
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out
index 6d2b2b97d269ae23f9ac2fa01853efd4d4a7ac08..2236c66aa5e5982d4ee58a853e641582e29338e6 100755
--- a/Test/baseResults/spv.queryL.frag.out
+++ b/Test/baseResults/spv.queryL.frag.out
@@ -7,7 +7,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 237
+// Id's are bound by 224
 
                               Capability Shader
                               Capability SampledRect
@@ -24,48 +24,48 @@ Linked fragment stage:
                               Name 9  "lod"
                               Name 13  "samp1D"
                               Name 16  "pf"
-                              Name 24  "isamp2D"
-                              Name 26  "pf2"
-                              Name 36  "usamp3D"
-                              Name 40  "pf3"
-                              Name 49  "sampCube"
-                              Name 59  "isamp1DA"
-                              Name 69  "usamp2DA"
-                              Name 79  "isampCubeA"
-                              Name 89  "samp1Ds"
-                              Name 99  "samp2Ds"
-                              Name 109  "sampCubes"
-                              Name 119  "samp1DAs"
-                              Name 129  "samp2DAs"
-                              Name 139  "sampCubeAs"
-                              Name 147  "levels"
-                              Name 154  "usamp2D"
-                              Name 163  "isamp3D"
-                              Name 172  "isampCube"
-                              Name 186  "samp2DA"
-                              Name 195  "usampCubeA"
-                              Name 232  "sampBuf"
-                              Name 236  "sampRect"
+                              Name 23  "isamp2D"
+                              Name 25  "pf2"
+                              Name 34  "usamp3D"
+                              Name 38  "pf3"
+                              Name 46  "sampCube"
+                              Name 55  "isamp1DA"
+                              Name 64  "usamp2DA"
+                              Name 73  "isampCubeA"
+                              Name 82  "samp1Ds"
+                              Name 91  "samp2Ds"
+                              Name 100  "sampCubes"
+                              Name 109  "samp1DAs"
+                              Name 118  "samp2DAs"
+                              Name 127  "sampCubeAs"
+                              Name 134  "levels"
+                              Name 141  "usamp2D"
+                              Name 150  "isamp3D"
+                              Name 159  "isampCube"
+                              Name 173  "samp2DA"
+                              Name 182  "usampCubeA"
+                              Name 219  "sampBuf"
+                              Name 223  "sampRect"
                               Decorate 13(samp1D) DescriptorSet 0
-                              Decorate 24(isamp2D) DescriptorSet 0
-                              Decorate 36(usamp3D) DescriptorSet 0
-                              Decorate 49(sampCube) DescriptorSet 0
-                              Decorate 59(isamp1DA) DescriptorSet 0
-                              Decorate 69(usamp2DA) DescriptorSet 0
-                              Decorate 79(isampCubeA) DescriptorSet 0
-                              Decorate 89(samp1Ds) DescriptorSet 0
-                              Decorate 99(samp2Ds) DescriptorSet 0
-                              Decorate 109(sampCubes) DescriptorSet 0
-                              Decorate 119(samp1DAs) DescriptorSet 0
-                              Decorate 129(samp2DAs) DescriptorSet 0
-                              Decorate 139(sampCubeAs) DescriptorSet 0
-                              Decorate 154(usamp2D) DescriptorSet 0
-                              Decorate 163(isamp3D) DescriptorSet 0
-                              Decorate 172(isampCube) DescriptorSet 0
-                              Decorate 186(samp2DA) DescriptorSet 0
-                              Decorate 195(usampCubeA) DescriptorSet 0
-                              Decorate 232(sampBuf) DescriptorSet 0
-                              Decorate 236(sampRect) DescriptorSet 0
+                              Decorate 23(isamp2D) DescriptorSet 0
+                              Decorate 34(usamp3D) DescriptorSet 0
+                              Decorate 46(sampCube) DescriptorSet 0
+                              Decorate 55(isamp1DA) DescriptorSet 0
+                              Decorate 64(usamp2DA) DescriptorSet 0
+                              Decorate 73(isampCubeA) DescriptorSet 0
+                              Decorate 82(samp1Ds) DescriptorSet 0
+                              Decorate 91(samp2Ds) DescriptorSet 0
+                              Decorate 100(sampCubes) DescriptorSet 0
+                              Decorate 109(samp1DAs) DescriptorSet 0
+                              Decorate 118(samp2DAs) DescriptorSet 0
+                              Decorate 127(sampCubeAs) DescriptorSet 0
+                              Decorate 141(usamp2D) DescriptorSet 0
+                              Decorate 150(isamp3D) DescriptorSet 0
+                              Decorate 159(isampCube) DescriptorSet 0
+                              Decorate 173(samp2DA) DescriptorSet 0
+                              Decorate 182(usampCubeA) DescriptorSet 0
+                              Decorate 219(sampBuf) DescriptorSet 0
+                              Decorate 223(sampRect) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -76,256 +76,243 @@ Linked fragment stage:
               12:             TypePointer UniformConstant 11
       13(samp1D):     12(ptr) Variable UniformConstant
               15:             TypePointer Function 6(float)
-              20:             TypeInt 32 1
-              21:             TypeImage 20(int) 2D sampled format:Unknown
-              22:             TypeSampledImage 21
-              23:             TypePointer UniformConstant 22
-     24(isamp2D):     23(ptr) Variable UniformConstant
-              32:             TypeInt 32 0
-              33:             TypeImage 32(int) 3D sampled format:Unknown
-              34:             TypeSampledImage 33
-              35:             TypePointer UniformConstant 34
-     36(usamp3D):     35(ptr) Variable UniformConstant
-              38:             TypeVector 6(float) 3
-              39:             TypePointer Function 38(fvec3)
-              46:             TypeImage 6(float) Cube sampled format:Unknown
-              47:             TypeSampledImage 46
-              48:             TypePointer UniformConstant 47
-    49(sampCube):     48(ptr) Variable UniformConstant
-              56:             TypeImage 20(int) 1D array sampled format:Unknown
-              57:             TypeSampledImage 56
-              58:             TypePointer UniformConstant 57
-    59(isamp1DA):     58(ptr) Variable UniformConstant
-              66:             TypeImage 32(int) 2D array sampled format:Unknown
-              67:             TypeSampledImage 66
-              68:             TypePointer UniformConstant 67
-    69(usamp2DA):     68(ptr) Variable UniformConstant
-              76:             TypeImage 20(int) Cube array sampled format:Unknown
-              77:             TypeSampledImage 76
-              78:             TypePointer UniformConstant 77
-  79(isampCubeA):     78(ptr) Variable UniformConstant
-              86:             TypeImage 6(float) 1D depth sampled format:Unknown
-              87:             TypeSampledImage 86
-              88:             TypePointer UniformConstant 87
-     89(samp1Ds):     88(ptr) Variable UniformConstant
-              96:             TypeImage 6(float) 2D depth sampled format:Unknown
-              97:             TypeSampledImage 96
-              98:             TypePointer UniformConstant 97
-     99(samp2Ds):     98(ptr) Variable UniformConstant
-             106:             TypeImage 6(float) Cube depth sampled format:Unknown
+              19:             TypeInt 32 1
+              20:             TypeImage 19(int) 2D sampled format:Unknown
+              21:             TypeSampledImage 20
+              22:             TypePointer UniformConstant 21
+     23(isamp2D):     22(ptr) Variable UniformConstant
+              30:             TypeInt 32 0
+              31:             TypeImage 30(int) 3D sampled format:Unknown
+              32:             TypeSampledImage 31
+              33:             TypePointer UniformConstant 32
+     34(usamp3D):     33(ptr) Variable UniformConstant
+              36:             TypeVector 6(float) 3
+              37:             TypePointer Function 36(fvec3)
+              43:             TypeImage 6(float) Cube sampled format:Unknown
+              44:             TypeSampledImage 43
+              45:             TypePointer UniformConstant 44
+    46(sampCube):     45(ptr) Variable UniformConstant
+              52:             TypeImage 19(int) 1D array sampled format:Unknown
+              53:             TypeSampledImage 52
+              54:             TypePointer UniformConstant 53
+    55(isamp1DA):     54(ptr) Variable UniformConstant
+              61:             TypeImage 30(int) 2D array sampled format:Unknown
+              62:             TypeSampledImage 61
+              63:             TypePointer UniformConstant 62
+    64(usamp2DA):     63(ptr) Variable UniformConstant
+              70:             TypeImage 19(int) Cube array sampled format:Unknown
+              71:             TypeSampledImage 70
+              72:             TypePointer UniformConstant 71
+  73(isampCubeA):     72(ptr) Variable UniformConstant
+              79:             TypeImage 6(float) 1D depth sampled format:Unknown
+              80:             TypeSampledImage 79
+              81:             TypePointer UniformConstant 80
+     82(samp1Ds):     81(ptr) Variable UniformConstant
+              88:             TypeImage 6(float) 2D depth sampled format:Unknown
+              89:             TypeSampledImage 88
+              90:             TypePointer UniformConstant 89
+     91(samp2Ds):     90(ptr) Variable UniformConstant
+              97:             TypeImage 6(float) Cube depth sampled format:Unknown
+              98:             TypeSampledImage 97
+              99:             TypePointer UniformConstant 98
+  100(sampCubes):     99(ptr) Variable UniformConstant
+             106:             TypeImage 6(float) 1D depth array sampled format:Unknown
              107:             TypeSampledImage 106
              108:             TypePointer UniformConstant 107
-  109(sampCubes):    108(ptr) Variable UniformConstant
-             116:             TypeImage 6(float) 1D depth array sampled format:Unknown
-             117:             TypeSampledImage 116
-             118:             TypePointer UniformConstant 117
-   119(samp1DAs):    118(ptr) Variable UniformConstant
-             126:             TypeImage 6(float) 2D depth array sampled format:Unknown
-             127:             TypeSampledImage 126
-             128:             TypePointer UniformConstant 127
-   129(samp2DAs):    128(ptr) Variable UniformConstant
-             136:             TypeImage 6(float) Cube depth array sampled format:Unknown
-             137:             TypeSampledImage 136
-             138:             TypePointer UniformConstant 137
- 139(sampCubeAs):    138(ptr) Variable UniformConstant
-             146:             TypePointer Function 20(int)
-             151:             TypeImage 32(int) 2D sampled format:Unknown
-             152:             TypeSampledImage 151
-             153:             TypePointer UniformConstant 152
-    154(usamp2D):    153(ptr) Variable UniformConstant
-             160:             TypeImage 20(int) 3D sampled format:Unknown
-             161:             TypeSampledImage 160
-             162:             TypePointer UniformConstant 161
-    163(isamp3D):    162(ptr) Variable UniformConstant
-             169:             TypeImage 20(int) Cube sampled format:Unknown
-             170:             TypeSampledImage 169
-             171:             TypePointer UniformConstant 170
-  172(isampCube):    171(ptr) Variable UniformConstant
-             183:             TypeImage 6(float) 2D array sampled format:Unknown
-             184:             TypeSampledImage 183
-             185:             TypePointer UniformConstant 184
-    186(samp2DA):    185(ptr) Variable UniformConstant
-             192:             TypeImage 32(int) Cube array sampled format:Unknown
-             193:             TypeSampledImage 192
-             194:             TypePointer UniformConstant 193
- 195(usampCubeA):    194(ptr) Variable UniformConstant
-             229:             TypeImage 6(float) Buffer sampled format:Unknown
-             230:             TypeSampledImage 229
-             231:             TypePointer UniformConstant 230
-    232(sampBuf):    231(ptr) Variable UniformConstant
-             233:             TypeImage 6(float) Rect sampled format:Unknown
-             234:             TypeSampledImage 233
-             235:             TypePointer UniformConstant 234
-   236(sampRect):    235(ptr) Variable UniformConstant
+   109(samp1DAs):    108(ptr) Variable UniformConstant
+             115:             TypeImage 6(float) 2D depth array sampled format:Unknown
+             116:             TypeSampledImage 115
+             117:             TypePointer UniformConstant 116
+   118(samp2DAs):    117(ptr) Variable UniformConstant
+             124:             TypeImage 6(float) Cube depth array sampled format:Unknown
+             125:             TypeSampledImage 124
+             126:             TypePointer UniformConstant 125
+ 127(sampCubeAs):    126(ptr) Variable UniformConstant
+             133:             TypePointer Function 19(int)
+             138:             TypeImage 30(int) 2D sampled format:Unknown
+             139:             TypeSampledImage 138
+             140:             TypePointer UniformConstant 139
+    141(usamp2D):    140(ptr) Variable UniformConstant
+             147:             TypeImage 19(int) 3D sampled format:Unknown
+             148:             TypeSampledImage 147
+             149:             TypePointer UniformConstant 148
+    150(isamp3D):    149(ptr) Variable UniformConstant
+             156:             TypeImage 19(int) Cube sampled format:Unknown
+             157:             TypeSampledImage 156
+             158:             TypePointer UniformConstant 157
+  159(isampCube):    158(ptr) Variable UniformConstant
+             170:             TypeImage 6(float) 2D array sampled format:Unknown
+             171:             TypeSampledImage 170
+             172:             TypePointer UniformConstant 171
+    173(samp2DA):    172(ptr) Variable UniformConstant
+             179:             TypeImage 30(int) Cube array sampled format:Unknown
+             180:             TypeSampledImage 179
+             181:             TypePointer UniformConstant 180
+ 182(usampCubeA):    181(ptr) Variable UniformConstant
+             216:             TypeImage 6(float) Buffer sampled format:Unknown
+             217:             TypeSampledImage 216
+             218:             TypePointer UniformConstant 217
+    219(sampBuf):    218(ptr) Variable UniformConstant
+             220:             TypeImage 6(float) Rect sampled format:Unknown
+             221:             TypeSampledImage 220
+             222:             TypePointer UniformConstant 221
+   223(sampRect):    222(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
           9(lod):      8(ptr) Variable Function
           16(pf):     15(ptr) Variable Function
-         26(pf2):      8(ptr) Variable Function
-         40(pf3):     39(ptr) Variable Function
-     147(levels):    146(ptr) Variable Function
+         25(pf2):      8(ptr) Variable Function
+         38(pf3):     37(ptr) Variable Function
+     134(levels):    133(ptr) Variable Function
               14:          11 Load 13(samp1D)
               17:    6(float) Load 16(pf)
-              18:          10 Image 14
-              19:    7(fvec2) ImageQueryLod 18 17
-                              Store 9(lod) 19
-              25:          22 Load 24(isamp2D)
-              27:    7(fvec2) Load 26(pf2)
-              28:          21 Image 25
-              29:    7(fvec2) ImageQueryLod 28 27
-              30:    7(fvec2) Load 9(lod)
-              31:    7(fvec2) FAdd 30 29
-                              Store 9(lod) 31
-              37:          34 Load 36(usamp3D)
-              41:   38(fvec3) Load 40(pf3)
-              42:          33 Image 37
-              43:    7(fvec2) ImageQueryLod 42 41
-              44:    7(fvec2) Load 9(lod)
-              45:    7(fvec2) FAdd 44 43
-                              Store 9(lod) 45
-              50:          47 Load 49(sampCube)
-              51:   38(fvec3) Load 40(pf3)
-              52:          46 Image 50
-              53:    7(fvec2) ImageQueryLod 52 51
-              54:    7(fvec2) Load 9(lod)
-              55:    7(fvec2) FAdd 54 53
-                              Store 9(lod) 55
-              60:          57 Load 59(isamp1DA)
-              61:    6(float) Load 16(pf)
-              62:          56 Image 60
-              63:    7(fvec2) ImageQueryLod 62 61
-              64:    7(fvec2) Load 9(lod)
-              65:    7(fvec2) FAdd 64 63
-                              Store 9(lod) 65
-              70:          67 Load 69(usamp2DA)
-              71:    7(fvec2) Load 26(pf2)
-              72:          66 Image 70
-              73:    7(fvec2) ImageQueryLod 72 71
-              74:    7(fvec2) Load 9(lod)
-              75:    7(fvec2) FAdd 74 73
-                              Store 9(lod) 75
-              80:          77 Load 79(isampCubeA)
-              81:   38(fvec3) Load 40(pf3)
-              82:          76 Image 80
-              83:    7(fvec2) ImageQueryLod 82 81
-              84:    7(fvec2) Load 9(lod)
-              85:    7(fvec2) FAdd 84 83
-                              Store 9(lod) 85
-              90:          87 Load 89(samp1Ds)
-              91:    6(float) Load 16(pf)
-              92:          86 Image 90
-              93:    7(fvec2) ImageQueryLod 92 91
-              94:    7(fvec2) Load 9(lod)
-              95:    7(fvec2) FAdd 94 93
-                              Store 9(lod) 95
-             100:          97 Load 99(samp2Ds)
-             101:    7(fvec2) Load 26(pf2)
-             102:          96 Image 100
-             103:    7(fvec2) ImageQueryLod 102 101
+              18:    7(fvec2) ImageQueryLod 14 17
+                              Store 9(lod) 18
+              24:          21 Load 23(isamp2D)
+              26:    7(fvec2) Load 25(pf2)
+              27:    7(fvec2) ImageQueryLod 24 26
+              28:    7(fvec2) Load 9(lod)
+              29:    7(fvec2) FAdd 28 27
+                              Store 9(lod) 29
+              35:          32 Load 34(usamp3D)
+              39:   36(fvec3) Load 38(pf3)
+              40:    7(fvec2) ImageQueryLod 35 39
+              41:    7(fvec2) Load 9(lod)
+              42:    7(fvec2) FAdd 41 40
+                              Store 9(lod) 42
+              47:          44 Load 46(sampCube)
+              48:   36(fvec3) Load 38(pf3)
+              49:    7(fvec2) ImageQueryLod 47 48
+              50:    7(fvec2) Load 9(lod)
+              51:    7(fvec2) FAdd 50 49
+                              Store 9(lod) 51
+              56:          53 Load 55(isamp1DA)
+              57:    6(float) Load 16(pf)
+              58:    7(fvec2) ImageQueryLod 56 57
+              59:    7(fvec2) Load 9(lod)
+              60:    7(fvec2) FAdd 59 58
+                              Store 9(lod) 60
+              65:          62 Load 64(usamp2DA)
+              66:    7(fvec2) Load 25(pf2)
+              67:    7(fvec2) ImageQueryLod 65 66
+              68:    7(fvec2) Load 9(lod)
+              69:    7(fvec2) FAdd 68 67
+                              Store 9(lod) 69
+              74:          71 Load 73(isampCubeA)
+              75:   36(fvec3) Load 38(pf3)
+              76:    7(fvec2) ImageQueryLod 74 75
+              77:    7(fvec2) Load 9(lod)
+              78:    7(fvec2) FAdd 77 76
+                              Store 9(lod) 78
+              83:          80 Load 82(samp1Ds)
+              84:    6(float) Load 16(pf)
+              85:    7(fvec2) ImageQueryLod 83 84
+              86:    7(fvec2) Load 9(lod)
+              87:    7(fvec2) FAdd 86 85
+                              Store 9(lod) 87
+              92:          89 Load 91(samp2Ds)
+              93:    7(fvec2) Load 25(pf2)
+              94:    7(fvec2) ImageQueryLod 92 93
+              95:    7(fvec2) Load 9(lod)
+              96:    7(fvec2) FAdd 95 94
+                              Store 9(lod) 96
+             101:          98 Load 100(sampCubes)
+             102:   36(fvec3) Load 38(pf3)
+             103:    7(fvec2) ImageQueryLod 101 102
              104:    7(fvec2) Load 9(lod)
              105:    7(fvec2) FAdd 104 103
                               Store 9(lod) 105
-             110:         107 Load 109(sampCubes)
-             111:   38(fvec3) Load 40(pf3)
-             112:         106 Image 110
-             113:    7(fvec2) ImageQueryLod 112 111
-             114:    7(fvec2) Load 9(lod)
-             115:    7(fvec2) FAdd 114 113
-                              Store 9(lod) 115
-             120:         117 Load 119(samp1DAs)
-             121:    6(float) Load 16(pf)
-             122:         116 Image 120
-             123:    7(fvec2) ImageQueryLod 122 121
-             124:    7(fvec2) Load 9(lod)
-             125:    7(fvec2) FAdd 124 123
-                              Store 9(lod) 125
-             130:         127 Load 129(samp2DAs)
-             131:    7(fvec2) Load 26(pf2)
-             132:         126 Image 130
-             133:    7(fvec2) ImageQueryLod 132 131
-             134:    7(fvec2) Load 9(lod)
-             135:    7(fvec2) FAdd 134 133
-                              Store 9(lod) 135
-             140:         137 Load 139(sampCubeAs)
-             141:   38(fvec3) Load 40(pf3)
-             142:         136 Image 140
-             143:    7(fvec2) ImageQueryLod 142 141
-             144:    7(fvec2) Load 9(lod)
-             145:    7(fvec2) FAdd 144 143
-                              Store 9(lod) 145
-             148:          11 Load 13(samp1D)
-             149:          10 Image 148
-             150:     20(int) ImageQueryLevels 149
-                              Store 147(levels) 150
-             155:         152 Load 154(usamp2D)
-             156:         151 Image 155
-             157:     20(int) ImageQueryLevels 156
-             158:     20(int) Load 147(levels)
-             159:     20(int) IAdd 158 157
-                              Store 147(levels) 159
-             164:         161 Load 163(isamp3D)
-             165:         160 Image 164
-             166:     20(int) ImageQueryLevels 165
-             167:     20(int) Load 147(levels)
-             168:     20(int) IAdd 167 166
-                              Store 147(levels) 168
-             173:         170 Load 172(isampCube)
-             174:         169 Image 173
-             175:     20(int) ImageQueryLevels 174
-             176:     20(int) Load 147(levels)
-             177:     20(int) IAdd 176 175
-                              Store 147(levels) 177
-             178:          57 Load 59(isamp1DA)
-             179:          56 Image 178
-             180:     20(int) ImageQueryLevels 179
-             181:     20(int) Load 147(levels)
-             182:     20(int) IAdd 181 180
-                              Store 147(levels) 182
-             187:         184 Load 186(samp2DA)
-             188:         183 Image 187
-             189:     20(int) ImageQueryLevels 188
-             190:     20(int) Load 147(levels)
-             191:     20(int) IAdd 190 189
-                              Store 147(levels) 191
-             196:         193 Load 195(usampCubeA)
-             197:         192 Image 196
-             198:     20(int) ImageQueryLevels 197
-             199:     20(int) Load 147(levels)
-             200:     20(int) IAdd 199 198
-                              Store 147(levels) 200
-             201:          87 Load 89(samp1Ds)
-             202:          86 Image 201
-             203:     20(int) ImageQueryLevels 202
-                              Store 147(levels) 203
-             204:          97 Load 99(samp2Ds)
-             205:          96 Image 204
-             206:     20(int) ImageQueryLevels 205
-             207:     20(int) Load 147(levels)
-             208:     20(int) IAdd 207 206
-                              Store 147(levels) 208
-             209:         107 Load 109(sampCubes)
-             210:         106 Image 209
-             211:     20(int) ImageQueryLevels 210
-             212:     20(int) Load 147(levels)
-             213:     20(int) IAdd 212 211
-                              Store 147(levels) 213
-             214:         117 Load 119(samp1DAs)
-             215:         116 Image 214
-             216:     20(int) ImageQueryLevels 215
-             217:     20(int) Load 147(levels)
-             218:     20(int) IAdd 217 216
-                              Store 147(levels) 218
-             219:         127 Load 129(samp2DAs)
-             220:         126 Image 219
-             221:     20(int) ImageQueryLevels 220
-             222:     20(int) Load 147(levels)
-             223:     20(int) IAdd 222 221
-                              Store 147(levels) 223
-             224:         137 Load 139(sampCubeAs)
-             225:         136 Image 224
-             226:     20(int) ImageQueryLevels 225
-             227:     20(int) Load 147(levels)
-             228:     20(int) IAdd 227 226
-                              Store 147(levels) 228
+             110:         107 Load 109(samp1DAs)
+             111:    6(float) Load 16(pf)
+             112:    7(fvec2) ImageQueryLod 110 111
+             113:    7(fvec2) Load 9(lod)
+             114:    7(fvec2) FAdd 113 112
+                              Store 9(lod) 114
+             119:         116 Load 118(samp2DAs)
+             120:    7(fvec2) Load 25(pf2)
+             121:    7(fvec2) ImageQueryLod 119 120
+             122:    7(fvec2) Load 9(lod)
+             123:    7(fvec2) FAdd 122 121
+                              Store 9(lod) 123
+             128:         125 Load 127(sampCubeAs)
+             129:   36(fvec3) Load 38(pf3)
+             130:    7(fvec2) ImageQueryLod 128 129
+             131:    7(fvec2) Load 9(lod)
+             132:    7(fvec2) FAdd 131 130
+                              Store 9(lod) 132
+             135:          11 Load 13(samp1D)
+             136:          10 Image 135
+             137:     19(int) ImageQueryLevels 136
+                              Store 134(levels) 137
+             142:         139 Load 141(usamp2D)
+             143:         138 Image 142
+             144:     19(int) ImageQueryLevels 143
+             145:     19(int) Load 134(levels)
+             146:     19(int) IAdd 145 144
+                              Store 134(levels) 146
+             151:         148 Load 150(isamp3D)
+             152:         147 Image 151
+             153:     19(int) ImageQueryLevels 152
+             154:     19(int) Load 134(levels)
+             155:     19(int) IAdd 154 153
+                              Store 134(levels) 155
+             160:         157 Load 159(isampCube)
+             161:         156 Image 160
+             162:     19(int) ImageQueryLevels 161
+             163:     19(int) Load 134(levels)
+             164:     19(int) IAdd 163 162
+                              Store 134(levels) 164
+             165:          53 Load 55(isamp1DA)
+             166:          52 Image 165
+             167:     19(int) ImageQueryLevels 166
+             168:     19(int) Load 134(levels)
+             169:     19(int) IAdd 168 167
+                              Store 134(levels) 169
+             174:         171 Load 173(samp2DA)
+             175:         170 Image 174
+             176:     19(int) ImageQueryLevels 175
+             177:     19(int) Load 134(levels)
+             178:     19(int) IAdd 177 176
+                              Store 134(levels) 178
+             183:         180 Load 182(usampCubeA)
+             184:         179 Image 183
+             185:     19(int) ImageQueryLevels 184
+             186:     19(int) Load 134(levels)
+             187:     19(int) IAdd 186 185
+                              Store 134(levels) 187
+             188:          80 Load 82(samp1Ds)
+             189:          79 Image 188
+             190:     19(int) ImageQueryLevels 189
+                              Store 134(levels) 190
+             191:          89 Load 91(samp2Ds)
+             192:          88 Image 191
+             193:     19(int) ImageQueryLevels 192
+             194:     19(int) Load 134(levels)
+             195:     19(int) IAdd 194 193
+                              Store 134(levels) 195
+             196:          98 Load 100(sampCubes)
+             197:          97 Image 196
+             198:     19(int) ImageQueryLevels 197
+             199:     19(int) Load 134(levels)
+             200:     19(int) IAdd 199 198
+                              Store 134(levels) 200
+             201:         107 Load 109(samp1DAs)
+             202:         106 Image 201
+             203:     19(int) ImageQueryLevels 202
+             204:     19(int) Load 134(levels)
+             205:     19(int) IAdd 204 203
+                              Store 134(levels) 205
+             206:         116 Load 118(samp2DAs)
+             207:         115 Image 206
+             208:     19(int) ImageQueryLevels 207
+             209:     19(int) Load 134(levels)
+             210:     19(int) IAdd 209 208
+                              Store 134(levels) 210
+             211:         125 Load 127(sampCubeAs)
+             212:         124 Image 211
+             213:     19(int) ImageQueryLevels 212
+             214:     19(int) Load 134(levels)
+             215:     19(int) IAdd 214 213
+                              Store 134(levels) 215
                               Return
                               FunctionEnd