GLSL/SPV: If a texture is used with a shadow sampler, force 'shadow'.
authorJohn Kessenich <cepheus@frii.com>
Sat, 21 Jul 2018 01:04:15 +0000 (19:04 -0600)
committerJohn Kessenich <cepheus@frii.com>
Mon, 23 Jul 2018 21:58:32 +0000 (15:58 -0600)
Fixes #854. But, only good if we are not trying to use the same
texture for both shadow and non-shadow constructors.

Force the type of the texture to have 'shadow' set when it is
constructed with a samplerShadow.

Test/baseResults/spv.separate.frag.out
glslang/MachineIndependent/ParseHelper.cpp

index a834efd..346de53 100644 (file)
@@ -28,33 +28,33 @@ spv.separate.frag
                               Name 84  "itexCubeArray"
                               Name 91  "utexCubeArray"
                               Name 98  "tex1DArray"
-                              Name 106  "itex1DArray"
-                              Name 113  "utex1D"
-                              Name 120  "itex1D"
-                              Name 127  "utex1DArray"
-                              Name 134  "texBuffer"
-                              Name 146  "tex2DArray"
-                              Name 158  "itex2D"
-                              Name 165  "itex3D"
-                              Name 172  "itexCube"
-                              Name 179  "itex2DArray"
-                              Name 186  "utex2D"
-                              Name 193  "utex3D"
-                              Name 200  "utexCube"
-                              Name 207  "utex2DArray"
-                              Name 214  "itex2DRect"
-                              Name 221  "utex2DRect"
-                              Name 228  "itexBuffer"
-                              Name 235  "utexBuffer"
-                              Name 242  "tex2DMS"
-                              Name 249  "itex2DMS"
-                              Name 256  "utex2DMS"
-                              Name 263  "tex2DMSArray"
-                              Name 270  "itex2DMSArray"
-                              Name 277  "utex2DMSArray"
-                              Name 284  "tex1D"
-                              Name 294  "tex3D"
-                              Name 305  "tex2DRect"
+                              Name 105  "itex1DArray"
+                              Name 112  "utex1D"
+                              Name 119  "itex1D"
+                              Name 126  "utex1DArray"
+                              Name 133  "texBuffer"
+                              Name 145  "tex2DArray"
+                              Name 157  "itex2D"
+                              Name 164  "itex3D"
+                              Name 171  "itexCube"
+                              Name 178  "itex2DArray"
+                              Name 185  "utex2D"
+                              Name 192  "utex3D"
+                              Name 199  "utexCube"
+                              Name 206  "utex2DArray"
+                              Name 213  "itex2DRect"
+                              Name 220  "utex2DRect"
+                              Name 227  "itexBuffer"
+                              Name 234  "utexBuffer"
+                              Name 241  "tex2DMS"
+                              Name 248  "itex2DMS"
+                              Name 255  "utex2DMS"
+                              Name 262  "tex2DMSArray"
+                              Name 269  "itex2DMSArray"
+                              Name 276  "utex2DMSArray"
+                              Name 283  "tex1D"
+                              Name 293  "tex3D"
+                              Name 304  "tex2DRect"
                               Decorate 14(t2d) DescriptorSet 0
                               Decorate 18(s) DescriptorSet 0
                               Decorate 31(t3d) DescriptorSet 0
@@ -67,33 +67,33 @@ spv.separate.frag
                               Decorate 84(itexCubeArray) DescriptorSet 0
                               Decorate 91(utexCubeArray) DescriptorSet 0
                               Decorate 98(tex1DArray) DescriptorSet 0
-                              Decorate 106(itex1DArray) DescriptorSet 0
-                              Decorate 113(utex1D) DescriptorSet 0
-                              Decorate 120(itex1D) DescriptorSet 0
-                              Decorate 127(utex1DArray) DescriptorSet 0
-                              Decorate 134(texBuffer) DescriptorSet 0
-                              Decorate 146(tex2DArray) DescriptorSet 0
-                              Decorate 158(itex2D) DescriptorSet 0
-                              Decorate 165(itex3D) DescriptorSet 0
-                              Decorate 172(itexCube) DescriptorSet 0
-                              Decorate 179(itex2DArray) DescriptorSet 0
-                              Decorate 186(utex2D) DescriptorSet 0
-                              Decorate 193(utex3D) DescriptorSet 0
-                              Decorate 200(utexCube) DescriptorSet 0
-                              Decorate 207(utex2DArray) DescriptorSet 0
-                              Decorate 214(itex2DRect) DescriptorSet 0
-                              Decorate 221(utex2DRect) DescriptorSet 0
-                              Decorate 228(itexBuffer) DescriptorSet 0
-                              Decorate 235(utexBuffer) DescriptorSet 0
-                              Decorate 242(tex2DMS) DescriptorSet 0
-                              Decorate 249(itex2DMS) DescriptorSet 0
-                              Decorate 256(utex2DMS) DescriptorSet 0
-                              Decorate 263(tex2DMSArray) DescriptorSet 0
-                              Decorate 270(itex2DMSArray) DescriptorSet 0
-                              Decorate 277(utex2DMSArray) DescriptorSet 0
-                              Decorate 284(tex1D) DescriptorSet 0
-                              Decorate 294(tex3D) DescriptorSet 0
-                              Decorate 305(tex2DRect) DescriptorSet 0
+                              Decorate 105(itex1DArray) DescriptorSet 0
+                              Decorate 112(utex1D) DescriptorSet 0
+                              Decorate 119(itex1D) DescriptorSet 0
+                              Decorate 126(utex1DArray) DescriptorSet 0
+                              Decorate 133(texBuffer) DescriptorSet 0
+                              Decorate 145(tex2DArray) DescriptorSet 0
+                              Decorate 157(itex2D) DescriptorSet 0
+                              Decorate 164(itex3D) DescriptorSet 0
+                              Decorate 171(itexCube) DescriptorSet 0
+                              Decorate 178(itex2DArray) DescriptorSet 0
+                              Decorate 185(utex2D) DescriptorSet 0
+                              Decorate 192(utex3D) DescriptorSet 0
+                              Decorate 199(utexCube) DescriptorSet 0
+                              Decorate 206(utex2DArray) DescriptorSet 0
+                              Decorate 213(itex2DRect) DescriptorSet 0
+                              Decorate 220(utex2DRect) DescriptorSet 0
+                              Decorate 227(itexBuffer) DescriptorSet 0
+                              Decorate 234(utexBuffer) DescriptorSet 0
+                              Decorate 241(tex2DMS) DescriptorSet 0
+                              Decorate 248(itex2DMS) DescriptorSet 0
+                              Decorate 255(utex2DMS) DescriptorSet 0
+                              Decorate 262(tex2DMSArray) DescriptorSet 0
+                              Decorate 269(itex2DMSArray) DescriptorSet 0
+                              Decorate 276(utex2DMSArray) DescriptorSet 0
+                              Decorate 283(tex1D) DescriptorSet 0
+                              Decorate 293(tex3D) DescriptorSet 0
+                              Decorate 304(tex2DRect) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                8:             TypeFloat 32
@@ -147,127 +147,127 @@ spv.separate.frag
               90:             TypePointer UniformConstant 89
 91(utexCubeArray):     90(ptr) Variable UniformConstant
               94:             TypeSampledImage 89
-              96:             TypeImage 8(float) 1D array sampled format:Unknown
+              96:             TypeImage 8(float) 1D depth array sampled format:Unknown
               97:             TypePointer UniformConstant 96
   98(tex1DArray):     97(ptr) Variable UniformConstant
-             101:             TypeImage 8(float) 1D depth array sampled format:Unknown
-             102:             TypeSampledImage 101
-             104:             TypeImage 32(int) 1D array sampled format:Unknown
-             105:             TypePointer UniformConstant 104
-106(itex1DArray):    105(ptr) Variable UniformConstant
-             109:             TypeSampledImage 104
-             111:             TypeImage 27(int) 1D sampled format:Unknown
-             112:             TypePointer UniformConstant 111
-     113(utex1D):    112(ptr) Variable UniformConstant
-             116:             TypeSampledImage 111
-             118:             TypeImage 32(int) 1D sampled format:Unknown
-             119:             TypePointer UniformConstant 118
-     120(itex1D):    119(ptr) Variable UniformConstant
-             123:             TypeSampledImage 118
-             125:             TypeImage 27(int) 1D array sampled format:Unknown
-             126:             TypePointer UniformConstant 125
-127(utex1DArray):    126(ptr) Variable UniformConstant
-             130:             TypeSampledImage 125
-             132:             TypeImage 8(float) Buffer sampled format:Unknown
-             133:             TypePointer UniformConstant 132
-  134(texBuffer):    133(ptr) Variable UniformConstant
-             137:             TypeSampledImage 132
-             141:             TypeImage 8(float) Cube depth sampled format:Unknown
-             142:             TypeSampledImage 141
-             144:             TypeImage 8(float) 2D array sampled format:Unknown
-             145:             TypePointer UniformConstant 144
- 146(tex2DArray):    145(ptr) Variable UniformConstant
-             149:             TypeSampledImage 144
-             153:             TypeImage 8(float) 2D depth array sampled format:Unknown
-             154:             TypeSampledImage 153
-             156:             TypeImage 32(int) 2D sampled format:Unknown
-             157:             TypePointer UniformConstant 156
-     158(itex2D):    157(ptr) Variable UniformConstant
-             161:             TypeSampledImage 156
-             163:             TypeImage 32(int) 3D sampled format:Unknown
-             164:             TypePointer UniformConstant 163
-     165(itex3D):    164(ptr) Variable UniformConstant
-             168:             TypeSampledImage 163
-             170:             TypeImage 32(int) Cube sampled format:Unknown
-             171:             TypePointer UniformConstant 170
-   172(itexCube):    171(ptr) Variable UniformConstant
-             175:             TypeSampledImage 170
-             177:             TypeImage 32(int) 2D array sampled format:Unknown
-             178:             TypePointer UniformConstant 177
-179(itex2DArray):    178(ptr) Variable UniformConstant
-             182:             TypeSampledImage 177
-             184:             TypeImage 27(int) 2D sampled format:Unknown
-             185:             TypePointer UniformConstant 184
-     186(utex2D):    185(ptr) Variable UniformConstant
-             189:             TypeSampledImage 184
-             191:             TypeImage 27(int) 3D sampled format:Unknown
-             192:             TypePointer UniformConstant 191
-     193(utex3D):    192(ptr) Variable UniformConstant
-             196:             TypeSampledImage 191
-             198:             TypeImage 27(int) Cube sampled format:Unknown
-             199:             TypePointer UniformConstant 198
-   200(utexCube):    199(ptr) Variable UniformConstant
-             203:             TypeSampledImage 198
-             205:             TypeImage 27(int) 2D array sampled format:Unknown
-             206:             TypePointer UniformConstant 205
-207(utex2DArray):    206(ptr) Variable UniformConstant
-             210:             TypeSampledImage 205
-             212:             TypeImage 32(int) Rect sampled format:Unknown
-             213:             TypePointer UniformConstant 212
- 214(itex2DRect):    213(ptr) Variable UniformConstant
-             217:             TypeSampledImage 212
-             219:             TypeImage 27(int) Rect sampled format:Unknown
-             220:             TypePointer UniformConstant 219
- 221(utex2DRect):    220(ptr) Variable UniformConstant
-             224:             TypeSampledImage 219
-             226:             TypeImage 32(int) Buffer sampled format:Unknown
-             227:             TypePointer UniformConstant 226
- 228(itexBuffer):    227(ptr) Variable UniformConstant
-             231:             TypeSampledImage 226
-             233:             TypeImage 27(int) Buffer sampled format:Unknown
-             234:             TypePointer UniformConstant 233
- 235(utexBuffer):    234(ptr) Variable UniformConstant
-             238:             TypeSampledImage 233
-             240:             TypeImage 8(float) 2D multi-sampled sampled format:Unknown
-             241:             TypePointer UniformConstant 240
-    242(tex2DMS):    241(ptr) Variable UniformConstant
-             245:             TypeSampledImage 240
-             247:             TypeImage 32(int) 2D multi-sampled sampled format:Unknown
-             248:             TypePointer UniformConstant 247
-   249(itex2DMS):    248(ptr) Variable UniformConstant
-             252:             TypeSampledImage 247
-             254:             TypeImage 27(int) 2D multi-sampled sampled format:Unknown
-             255:             TypePointer UniformConstant 254
-   256(utex2DMS):    255(ptr) Variable UniformConstant
-             259:             TypeSampledImage 254
-             261:             TypeImage 8(float) 2D array multi-sampled sampled format:Unknown
-             262:             TypePointer UniformConstant 261
-263(tex2DMSArray):    262(ptr) Variable UniformConstant
-             266:             TypeSampledImage 261
-             268:             TypeImage 32(int) 2D array multi-sampled sampled format:Unknown
-             269:             TypePointer UniformConstant 268
-270(itex2DMSArray):    269(ptr) Variable UniformConstant
-             273:             TypeSampledImage 268
-             275:             TypeImage 27(int) 2D array multi-sampled sampled format:Unknown
-             276:             TypePointer UniformConstant 275
-277(utex2DMSArray):    276(ptr) Variable UniformConstant
-             280:             TypeSampledImage 275
-             282:             TypeImage 8(float) 1D sampled format:Unknown
-             283:             TypePointer UniformConstant 282
-      284(tex1D):    283(ptr) Variable UniformConstant
-             287:             TypeSampledImage 282
-             291:             TypeImage 8(float) 1D depth sampled format:Unknown
-             292:             TypeSampledImage 291
-      294(tex3D):     36(ptr) Variable UniformConstant
-             300:             TypeImage 8(float) 2D depth sampled format:Unknown
-             301:             TypeSampledImage 300
-             303:             TypeImage 8(float) Rect sampled format:Unknown
-             304:             TypePointer UniformConstant 303
-  305(tex2DRect):    304(ptr) Variable UniformConstant
-             308:             TypeSampledImage 303
-             312:             TypeImage 8(float) Rect depth sampled format:Unknown
-             313:             TypeSampledImage 312
-             317:             TypeSampledImage 96
+             101:             TypeSampledImage 96
+             103:             TypeImage 32(int) 1D array sampled format:Unknown
+             104:             TypePointer UniformConstant 103
+105(itex1DArray):    104(ptr) Variable UniformConstant
+             108:             TypeSampledImage 103
+             110:             TypeImage 27(int) 1D sampled format:Unknown
+             111:             TypePointer UniformConstant 110
+     112(utex1D):    111(ptr) Variable UniformConstant
+             115:             TypeSampledImage 110
+             117:             TypeImage 32(int) 1D sampled format:Unknown
+             118:             TypePointer UniformConstant 117
+     119(itex1D):    118(ptr) Variable UniformConstant
+             122:             TypeSampledImage 117
+             124:             TypeImage 27(int) 1D array sampled format:Unknown
+             125:             TypePointer UniformConstant 124
+126(utex1DArray):    125(ptr) Variable UniformConstant
+             129:             TypeSampledImage 124
+             131:             TypeImage 8(float) Buffer sampled format:Unknown
+             132:             TypePointer UniformConstant 131
+  133(texBuffer):    132(ptr) Variable UniformConstant
+             136:             TypeSampledImage 131
+             140:             TypeImage 8(float) Cube depth sampled format:Unknown
+             141:             TypeSampledImage 140
+             143:             TypeImage 8(float) 2D array sampled format:Unknown
+             144:             TypePointer UniformConstant 143
+ 145(tex2DArray):    144(ptr) Variable UniformConstant
+             148:             TypeSampledImage 143
+             152:             TypeImage 8(float) 2D depth array sampled format:Unknown
+             153:             TypeSampledImage 152
+             155:             TypeImage 32(int) 2D sampled format:Unknown
+             156:             TypePointer UniformConstant 155
+     157(itex2D):    156(ptr) Variable UniformConstant
+             160:             TypeSampledImage 155
+             162:             TypeImage 32(int) 3D sampled format:Unknown
+             163:             TypePointer UniformConstant 162
+     164(itex3D):    163(ptr) Variable UniformConstant
+             167:             TypeSampledImage 162
+             169:             TypeImage 32(int) Cube sampled format:Unknown
+             170:             TypePointer UniformConstant 169
+   171(itexCube):    170(ptr) Variable UniformConstant
+             174:             TypeSampledImage 169
+             176:             TypeImage 32(int) 2D array sampled format:Unknown
+             177:             TypePointer UniformConstant 176
+178(itex2DArray):    177(ptr) Variable UniformConstant
+             181:             TypeSampledImage 176
+             183:             TypeImage 27(int) 2D sampled format:Unknown
+             184:             TypePointer UniformConstant 183
+     185(utex2D):    184(ptr) Variable UniformConstant
+             188:             TypeSampledImage 183
+             190:             TypeImage 27(int) 3D sampled format:Unknown
+             191:             TypePointer UniformConstant 190
+     192(utex3D):    191(ptr) Variable UniformConstant
+             195:             TypeSampledImage 190
+             197:             TypeImage 27(int) Cube sampled format:Unknown
+             198:             TypePointer UniformConstant 197
+   199(utexCube):    198(ptr) Variable UniformConstant
+             202:             TypeSampledImage 197
+             204:             TypeImage 27(int) 2D array sampled format:Unknown
+             205:             TypePointer UniformConstant 204
+206(utex2DArray):    205(ptr) Variable UniformConstant
+             209:             TypeSampledImage 204
+             211:             TypeImage 32(int) Rect sampled format:Unknown
+             212:             TypePointer UniformConstant 211
+ 213(itex2DRect):    212(ptr) Variable UniformConstant
+             216:             TypeSampledImage 211
+             218:             TypeImage 27(int) Rect sampled format:Unknown
+             219:             TypePointer UniformConstant 218
+ 220(utex2DRect):    219(ptr) Variable UniformConstant
+             223:             TypeSampledImage 218
+             225:             TypeImage 32(int) Buffer sampled format:Unknown
+             226:             TypePointer UniformConstant 225
+ 227(itexBuffer):    226(ptr) Variable UniformConstant
+             230:             TypeSampledImage 225
+             232:             TypeImage 27(int) Buffer sampled format:Unknown
+             233:             TypePointer UniformConstant 232
+ 234(utexBuffer):    233(ptr) Variable UniformConstant
+             237:             TypeSampledImage 232
+             239:             TypeImage 8(float) 2D multi-sampled sampled format:Unknown
+             240:             TypePointer UniformConstant 239
+    241(tex2DMS):    240(ptr) Variable UniformConstant
+             244:             TypeSampledImage 239
+             246:             TypeImage 32(int) 2D multi-sampled sampled format:Unknown
+             247:             TypePointer UniformConstant 246
+   248(itex2DMS):    247(ptr) Variable UniformConstant
+             251:             TypeSampledImage 246
+             253:             TypeImage 27(int) 2D multi-sampled sampled format:Unknown
+             254:             TypePointer UniformConstant 253
+   255(utex2DMS):    254(ptr) Variable UniformConstant
+             258:             TypeSampledImage 253
+             260:             TypeImage 8(float) 2D array multi-sampled sampled format:Unknown
+             261:             TypePointer UniformConstant 260
+262(tex2DMSArray):    261(ptr) Variable UniformConstant
+             265:             TypeSampledImage 260
+             267:             TypeImage 32(int) 2D array multi-sampled sampled format:Unknown
+             268:             TypePointer UniformConstant 267
+269(itex2DMSArray):    268(ptr) Variable UniformConstant
+             272:             TypeSampledImage 267
+             274:             TypeImage 27(int) 2D array multi-sampled sampled format:Unknown
+             275:             TypePointer UniformConstant 274
+276(utex2DMSArray):    275(ptr) Variable UniformConstant
+             279:             TypeSampledImage 274
+             281:             TypeImage 8(float) 1D sampled format:Unknown
+             282:             TypePointer UniformConstant 281
+      283(tex1D):    282(ptr) Variable UniformConstant
+             286:             TypeSampledImage 281
+             290:             TypeImage 8(float) 1D depth sampled format:Unknown
+             291:             TypeSampledImage 290
+      293(tex3D):     36(ptr) Variable UniformConstant
+             299:             TypeImage 8(float) 2D depth sampled format:Unknown
+             300:             TypeSampledImage 299
+             302:             TypeImage 8(float) Rect sampled format:Unknown
+             303:             TypePointer UniformConstant 302
+  304(tex2DRect):    303(ptr) Variable UniformConstant
+             307:             TypeSampledImage 302
+             311:             TypeImage 8(float) Rect depth sampled format:Unknown
+             312:             TypeSampledImage 311
+             316:             TypeImage 8(float) 1D array sampled format:Unknown
+             317:             TypeSampledImage 316
          4(main):           2 Function None 3
                5:             Label
               15:          12 Load 14(t2d)
@@ -316,105 +316,105 @@ spv.separate.frag
               95:          94 SampledImage 92 93
               99:          96 Load 98(tex1DArray)
              100:          16 Load 77(sShadow)
-             103:         102 SampledImage 99 100
-             107:         104 Load 106(itex1DArray)
-             108:          16 Load 18(s)
-             110:         109 SampledImage 107 108
-             114:         111 Load 113(utex1D)
-             115:          16 Load 18(s)
-             117:         116 SampledImage 114 115
-             121:         118 Load 120(itex1D)
-             122:          16 Load 18(s)
-             124:         123 SampledImage 121 122
-             128:         125 Load 127(utex1DArray)
-             129:          16 Load 18(s)
-             131:         130 SampledImage 128 129
-             135:         132 Load 134(texBuffer)
-             136:          16 Load 18(s)
-             138:         137 SampledImage 135 136
-             139:          62 Load 64(texCube)
-             140:          16 Load 77(sShadow)
-             143:         142 SampledImage 139 140
-             147:         144 Load 146(tex2DArray)
-             148:          16 Load 18(s)
-             150:         149 SampledImage 147 148
-             151:         144 Load 146(tex2DArray)
-             152:          16 Load 77(sShadow)
-             155:         154 SampledImage 151 152
-             159:         156 Load 158(itex2D)
-             160:          16 Load 18(s)
-             162:         161 SampledImage 159 160
-             166:         163 Load 165(itex3D)
-             167:          16 Load 18(s)
-             169:         168 SampledImage 166 167
-             173:         170 Load 172(itexCube)
-             174:          16 Load 18(s)
-             176:         175 SampledImage 173 174
-             180:         177 Load 179(itex2DArray)
-             181:          16 Load 18(s)
-             183:         182 SampledImage 180 181
-             187:         184 Load 186(utex2D)
-             188:          16 Load 18(s)
-             190:         189 SampledImage 187 188
-             194:         191 Load 193(utex3D)
-             195:          16 Load 18(s)
-             197:         196 SampledImage 194 195
-             201:         198 Load 200(utexCube)
-             202:          16 Load 18(s)
-             204:         203 SampledImage 201 202
-             208:         205 Load 207(utex2DArray)
-             209:          16 Load 18(s)
-             211:         210 SampledImage 208 209
-             215:         212 Load 214(itex2DRect)
-             216:          16 Load 18(s)
-             218:         217 SampledImage 215 216
-             222:         219 Load 221(utex2DRect)
-             223:          16 Load 18(s)
-             225:         224 SampledImage 222 223
-             229:         226 Load 228(itexBuffer)
-             230:          16 Load 18(s)
-             232:         231 SampledImage 229 230
-             236:         233 Load 235(utexBuffer)
-             237:          16 Load 18(s)
-             239:         238 SampledImage 236 237
-             243:         240 Load 242(tex2DMS)
-             244:          16 Load 18(s)
-             246:         245 SampledImage 243 244
-             250:         247 Load 249(itex2DMS)
-             251:          16 Load 18(s)
-             253:         252 SampledImage 250 251
-             257:         254 Load 256(utex2DMS)
-             258:          16 Load 18(s)
-             260:         259 SampledImage 257 258
-             264:         261 Load 263(tex2DMSArray)
-             265:          16 Load 18(s)
-             267:         266 SampledImage 264 265
-             271:         268 Load 270(itex2DMSArray)
-             272:          16 Load 18(s)
-             274:         273 SampledImage 271 272
-             278:         275 Load 277(utex2DMSArray)
-             279:          16 Load 18(s)
-             281:         280 SampledImage 278 279
-             285:         282 Load 284(tex1D)
-             286:          16 Load 18(s)
-             288:         287 SampledImage 285 286
-             289:         282 Load 284(tex1D)
-             290:          16 Load 77(sShadow)
-             293:         292 SampledImage 289 290
-             295:          26 Load 294(tex3D)
-             296:          16 Load 18(s)
-             297:          45 SampledImage 295 296
-             298:          12 Load 58(tex2D)
-             299:          16 Load 77(sShadow)
-             302:         301 SampledImage 298 299
-             306:         303 Load 305(tex2DRect)
-             307:          16 Load 18(s)
-             309:         308 SampledImage 306 307
-             310:         303 Load 305(tex2DRect)
-             311:          16 Load 77(sShadow)
-             314:         313 SampledImage 310 311
-             315:          96 Load 98(tex1DArray)
-             316:          16 Load 18(s)
-             318:         317 SampledImage 315 316
+             102:         101 SampledImage 99 100
+             106:         103 Load 105(itex1DArray)
+             107:          16 Load 18(s)
+             109:         108 SampledImage 106 107
+             113:         110 Load 112(utex1D)
+             114:          16 Load 18(s)
+             116:         115 SampledImage 113 114
+             120:         117 Load 119(itex1D)
+             121:          16 Load 18(s)
+             123:         122 SampledImage 120 121
+             127:         124 Load 126(utex1DArray)
+             128:          16 Load 18(s)
+             130:         129 SampledImage 127 128
+             134:         131 Load 133(texBuffer)
+             135:          16 Load 18(s)
+             137:         136 SampledImage 134 135
+             138:          62 Load 64(texCube)
+             139:          16 Load 77(sShadow)
+             142:         141 SampledImage 138 139
+             146:         143 Load 145(tex2DArray)
+             147:          16 Load 18(s)
+             149:         148 SampledImage 146 147
+             150:         143 Load 145(tex2DArray)
+             151:          16 Load 77(sShadow)
+             154:         153 SampledImage 150 151
+             158:         155 Load 157(itex2D)
+             159:          16 Load 18(s)
+             161:         160 SampledImage 158 159
+             165:         162 Load 164(itex3D)
+             166:          16 Load 18(s)
+             168:         167 SampledImage 165 166
+             172:         169 Load 171(itexCube)
+             173:          16 Load 18(s)
+             175:         174 SampledImage 172 173
+             179:         176 Load 178(itex2DArray)
+             180:          16 Load 18(s)
+             182:         181 SampledImage 179 180
+             186:         183 Load 185(utex2D)
+             187:          16 Load 18(s)
+             189:         188 SampledImage 186 187
+             193:         190 Load 192(utex3D)
+             194:          16 Load 18(s)
+             196:         195 SampledImage 193 194
+             200:         197 Load 199(utexCube)
+             201:          16 Load 18(s)
+             203:         202 SampledImage 200 201
+             207:         204 Load 206(utex2DArray)
+             208:          16 Load 18(s)
+             210:         209 SampledImage 207 208
+             214:         211 Load 213(itex2DRect)
+             215:          16 Load 18(s)
+             217:         216 SampledImage 214 215
+             221:         218 Load 220(utex2DRect)
+             222:          16 Load 18(s)
+             224:         223 SampledImage 221 222
+             228:         225 Load 227(itexBuffer)
+             229:          16 Load 18(s)
+             231:         230 SampledImage 228 229
+             235:         232 Load 234(utexBuffer)
+             236:          16 Load 18(s)
+             238:         237 SampledImage 235 236
+             242:         239 Load 241(tex2DMS)
+             243:          16 Load 18(s)
+             245:         244 SampledImage 242 243
+             249:         246 Load 248(itex2DMS)
+             250:          16 Load 18(s)
+             252:         251 SampledImage 249 250
+             256:         253 Load 255(utex2DMS)
+             257:          16 Load 18(s)
+             259:         258 SampledImage 256 257
+             263:         260 Load 262(tex2DMSArray)
+             264:          16 Load 18(s)
+             266:         265 SampledImage 263 264
+             270:         267 Load 269(itex2DMSArray)
+             271:          16 Load 18(s)
+             273:         272 SampledImage 270 271
+             277:         274 Load 276(utex2DMSArray)
+             278:          16 Load 18(s)
+             280:         279 SampledImage 277 278
+             284:         281 Load 283(tex1D)
+             285:          16 Load 18(s)
+             287:         286 SampledImage 284 285
+             288:         281 Load 283(tex1D)
+             289:          16 Load 77(sShadow)
+             292:         291 SampledImage 288 289
+             294:          26 Load 293(tex3D)
+             295:          16 Load 18(s)
+             296:          45 SampledImage 294 295
+             297:          12 Load 58(tex2D)
+             298:          16 Load 77(sShadow)
+             301:         300 SampledImage 297 298
+             305:         302 Load 304(tex2DRect)
+             306:          16 Load 18(s)
+             308:         307 SampledImage 305 306
+             309:         302 Load 304(tex2DRect)
+             310:          16 Load 77(sShadow)
+             313:         312 SampledImage 309 310
+             314:          96 Load 98(tex1DArray)
+             315:          16 Load 18(s)
+             318:         317 SampledImage 314 315
                               Return
                               FunctionEnd
index 94af167..cb60baf 100755 (executable)
@@ -5917,8 +5917,14 @@ TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode*
 
     // Combined texture-sampler constructors are completely semantic checked
     // in constructorTextureSamplerError()
-    if (op == EOpConstructTextureSampler)
+    if (op == EOpConstructTextureSampler) {
+        if (aggrNode->getSequence()[1]->getAsTyped()->getType().getSampler().shadow) {
+            // Transfer depth into the texture (SPIR-V image) type, as a hint
+            // for tools to know this texture/image is a depth image.
+            aggrNode->getSequence()[0]->getAsTyped()->getWritableType().getSampler().shadow = true;
+        }
         return intermediate.setAggregateOperator(aggrNode, op, type, loc);
+    }
 
     TTypeList::const_iterator memberTypes;
     if (op == EOpConstructStruct)