Front-end: Fix: Cubemap arrays only use 3-component coord when accessed as an image.

4 components are needed when used a texture, but not an image, which multiplies
layers and faces into the same coordinate.  This fixes it from using 4 everywhere,
to only using 4 for textures and 3 for images.
This commit is contained in:
John Kessenich 2015-10-01 12:40:48 -06:00
parent 3cd0024ea8
commit 6373574b13
6 changed files with 940 additions and 833 deletions

View File

@ -265,6 +265,10 @@ uniform writeonly imageCubeArray CA1;
uniform writeonly iimageCubeArray CA2;
uniform writeonly uimageCubeArray CA3;
layout(rgba16f) uniform readonly imageCubeArray rCA1;
layout(rgba32i) uniform readonly iimageCubeArray rCA2;
layout(r32ui) uniform readonly uimageCubeArray rCA3;
#ifdef GL_OES_texture_cube_map_array
uniform samplerCubeArray CA4;
uniform samplerCubeArrayShadow CA5;
@ -304,6 +308,14 @@ void CAT()
highp ivec3 s1 = imageSize(CA1);
highp ivec3 s2 = imageSize(CA2);
highp ivec3 s3 = imageSize(CA3);
imageStore(CA1, s3, vec4(1));
imageStore(CA2, s3, ivec4(1));
imageStore(CA3, s3, uvec4(1));
highp vec4 cl1 = imageLoad(rCA1, s3);
highp ivec4 cl2 = imageLoad(rCA2, s3);
highp uvec4 cl3 = imageLoad(rCA3, s3);
}
uniform sampler2DMSArray bad2DMS; // ERROR, reserved

File diff suppressed because it is too large Load Diff

View File

@ -32,12 +32,12 @@ Linked fragment stage:
Name 133 "ic1D"
Name 143 "ic2D"
Name 153 "ic3D"
Name 172 "ic4D"
Name 234 "ui"
Name 238 "ii1D"
Name 252 "ui2D"
Name 255 "value"
Name 370 "fragData"
Name 231 "ui"
Name 235 "ii1D"
Name 249 "ui2D"
Name 252 "value"
Name 367 "fragData"
Name 382 "ic4D"
Decorate 15(i1D) Binding 0
Decorate 25(i2D) Binding 1
Decorate 36(i3D) Binding 2
@ -49,8 +49,9 @@ Linked fragment stage:
Decorate 87(iBuffer) Binding 8
Decorate 97(i2DMS) Binding 9
Decorate 107(i2DMSArray) Binding 10
Decorate 238(ii1D) Binding 11
Decorate 252(ui2D) Binding 12
Decorate 235(ii1D) Binding 11
Decorate 249(ui2D) Binding 12
Decorate 382(ic4D) NoStaticUse
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@ -103,46 +104,46 @@ Linked fragment stage:
143(ic2D): 142(ptr) Variable UniformConstant
152: TypePointer UniformConstant 7(ivec3)
153(ic3D): 152(ptr) Variable UniformConstant
170: TypeVector 6(int) 4
171: TypePointer UniformConstant 170(ivec4)
172(ic4D): 171(ptr) Variable UniformConstant
214: 6(int) Constant 1
220: 6(int) Constant 2
224: 6(int) Constant 3
230: 6(int) Constant 4
232: TypeInt 32 0
233: TypePointer Function 232(int)
235: 232(int) Constant 0
236: TypeImage 6(int) 1D nonsampled format:R32i
237: TypePointer UniformConstant 236
238(ii1D): 237(ptr) Variable UniformConstant
240: 6(int) Constant 10
241: TypePointer Image 6(int)
243: 232(int) Constant 1
250: TypeImage 232(int) 2D nonsampled format:R32ui
251: TypePointer UniformConstant 250
252(ui2D): 251(ptr) Variable UniformConstant
254: TypePointer UniformConstant 232(int)
255(value): 254(ptr) Variable UniformConstant
257: TypePointer Image 232(int)
263: 6(int) Constant 11
278: 6(int) Constant 12
293: 6(int) Constant 13
308: 6(int) Constant 14
323: 6(int) Constant 15
338: 6(int) Constant 16
353: 6(int) Constant 18
354: 6(int) Constant 17
363: 232(int) Constant 19
369: TypePointer Output 126(fvec4)
370(fragData): 369(ptr) Variable Output
376: TypeBool
211: 6(int) Constant 1
217: 6(int) Constant 2
221: 6(int) Constant 3
227: 6(int) Constant 4
229: TypeInt 32 0
230: TypePointer Function 229(int)
232: 229(int) Constant 0
233: TypeImage 6(int) 1D nonsampled format:R32i
234: TypePointer UniformConstant 233
235(ii1D): 234(ptr) Variable UniformConstant
237: 6(int) Constant 10
238: TypePointer Image 6(int)
240: 229(int) Constant 1
247: TypeImage 229(int) 2D nonsampled format:R32ui
248: TypePointer UniformConstant 247
249(ui2D): 248(ptr) Variable UniformConstant
251: TypePointer UniformConstant 229(int)
252(value): 251(ptr) Variable UniformConstant
254: TypePointer Image 229(int)
260: 6(int) Constant 11
275: 6(int) Constant 12
290: 6(int) Constant 13
305: 6(int) Constant 14
320: 6(int) Constant 15
335: 6(int) Constant 16
350: 6(int) Constant 18
351: 6(int) Constant 17
360: 229(int) Constant 19
366: TypePointer Output 126(fvec4)
367(fragData): 366(ptr) Variable Output
373: TypeBool
380: TypeVector 6(int) 4
381: TypePointer UniformConstant 380(ivec4)
382(ic4D): 381(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(iv): 8(ptr) Variable Function
128(v): 127(ptr) Variable Function
234(ui): 233(ptr) Variable Function
371: 127(ptr) Variable Function
231(ui): 230(ptr) Variable Function
368: 127(ptr) Variable Function
Store 9(iv) 11
16: 13 Load 15(i1D)
17: 6(int) ImageQuerySize 16
@ -278,220 +279,220 @@ Linked fragment stage:
168: 126(fvec4) Load 128(v)
ImageWrite 166 167 168
169: 51 Load 53(iCubeArray)
173: 170(ivec4) Load 172(ic4D)
174: 126(fvec4) ImageRead 169 173
175: 126(fvec4) Load 128(v)
176: 126(fvec4) FAdd 175 174
Store 128(v) 176
177: 51 Load 53(iCubeArray)
178: 170(ivec4) Load 172(ic4D)
179: 126(fvec4) Load 128(v)
ImageWrite 177 178 179
180: 58 Load 60(i2DRect)
181: 27(ivec2) Load 143(ic2D)
182: 126(fvec4) ImageRead 180 181
183: 126(fvec4) Load 128(v)
184: 126(fvec4) FAdd 183 182
Store 128(v) 184
185: 58 Load 60(i2DRect)
170: 7(ivec3) Load 153(ic3D)
171: 126(fvec4) ImageRead 169 170
172: 126(fvec4) Load 128(v)
173: 126(fvec4) FAdd 172 171
Store 128(v) 173
174: 51 Load 53(iCubeArray)
175: 7(ivec3) Load 153(ic3D)
176: 126(fvec4) Load 128(v)
ImageWrite 174 175 176
177: 58 Load 60(i2DRect)
178: 27(ivec2) Load 143(ic2D)
179: 126(fvec4) ImageRead 177 178
180: 126(fvec4) Load 128(v)
181: 126(fvec4) FAdd 180 179
Store 128(v) 181
182: 58 Load 60(i2DRect)
183: 27(ivec2) Load 143(ic2D)
184: 126(fvec4) Load 128(v)
ImageWrite 182 183 184
185: 68 Load 70(i1DArray)
186: 27(ivec2) Load 143(ic2D)
187: 126(fvec4) Load 128(v)
ImageWrite 185 186 187
188: 68 Load 70(i1DArray)
189: 27(ivec2) Load 143(ic2D)
190: 126(fvec4) ImageRead 188 189
191: 126(fvec4) Load 128(v)
192: 126(fvec4) FAdd 191 190
Store 128(v) 192
193: 68 Load 70(i1DArray)
194: 27(ivec2) Load 143(ic2D)
195: 126(fvec4) Load 128(v)
ImageWrite 193 194 195
196: 78 Load 80(i2DArray)
197: 7(ivec3) Load 153(ic3D)
198: 126(fvec4) ImageRead 196 197
199: 126(fvec4) Load 128(v)
200: 126(fvec4) FAdd 199 198
Store 128(v) 200
201: 78 Load 80(i2DArray)
202: 7(ivec3) Load 153(ic3D)
203: 126(fvec4) Load 128(v)
ImageWrite 201 202 203
204: 85 Load 87(iBuffer)
205: 6(int) Load 133(ic1D)
206: 126(fvec4) ImageRead 204 205
207: 126(fvec4) Load 128(v)
208: 126(fvec4) FAdd 207 206
Store 128(v) 208
209: 85 Load 87(iBuffer)
210: 6(int) Load 133(ic1D)
211: 126(fvec4) Load 128(v)
ImageWrite 209 210 211
212: 95 Load 97(i2DMS)
213: 27(ivec2) Load 143(ic2D)
215: 126(fvec4) ImageRead 212 213
216: 126(fvec4) Load 128(v)
217: 126(fvec4) FAdd 216 215
Store 128(v) 217
218: 95 Load 97(i2DMS)
219: 27(ivec2) Load 143(ic2D)
221: 126(fvec4) Load 128(v)
ImageWrite 218 219 220
222: 105 Load 107(i2DMSArray)
223: 7(ivec3) Load 153(ic3D)
225: 126(fvec4) ImageRead 222 223
226: 126(fvec4) Load 128(v)
227: 126(fvec4) FAdd 226 225
Store 128(v) 227
228: 105 Load 107(i2DMSArray)
229: 7(ivec3) Load 153(ic3D)
231: 126(fvec4) Load 128(v)
ImageWrite 228 229 230
Store 234(ui) 235
239: 6(int) Load 133(ic1D)
242: 241(ptr) ImageTexelPointer 238(ii1D) 239 0
244: 6(int) AtomicIAdd 242 243 235 240
187: 126(fvec4) ImageRead 185 186
188: 126(fvec4) Load 128(v)
189: 126(fvec4) FAdd 188 187
Store 128(v) 189
190: 68 Load 70(i1DArray)
191: 27(ivec2) Load 143(ic2D)
192: 126(fvec4) Load 128(v)
ImageWrite 190 191 192
193: 78 Load 80(i2DArray)
194: 7(ivec3) Load 153(ic3D)
195: 126(fvec4) ImageRead 193 194
196: 126(fvec4) Load 128(v)
197: 126(fvec4) FAdd 196 195
Store 128(v) 197
198: 78 Load 80(i2DArray)
199: 7(ivec3) Load 153(ic3D)
200: 126(fvec4) Load 128(v)
ImageWrite 198 199 200
201: 85 Load 87(iBuffer)
202: 6(int) Load 133(ic1D)
203: 126(fvec4) ImageRead 201 202
204: 126(fvec4) Load 128(v)
205: 126(fvec4) FAdd 204 203
Store 128(v) 205
206: 85 Load 87(iBuffer)
207: 6(int) Load 133(ic1D)
208: 126(fvec4) Load 128(v)
ImageWrite 206 207 208
209: 95 Load 97(i2DMS)
210: 27(ivec2) Load 143(ic2D)
212: 126(fvec4) ImageRead 209 210
213: 126(fvec4) Load 128(v)
214: 126(fvec4) FAdd 213 212
Store 128(v) 214
215: 95 Load 97(i2DMS)
216: 27(ivec2) Load 143(ic2D)
218: 126(fvec4) Load 128(v)
ImageWrite 215 216 217
219: 105 Load 107(i2DMSArray)
220: 7(ivec3) Load 153(ic3D)
222: 126(fvec4) ImageRead 219 220
223: 126(fvec4) Load 128(v)
224: 126(fvec4) FAdd 223 222
Store 128(v) 224
225: 105 Load 107(i2DMSArray)
226: 7(ivec3) Load 153(ic3D)
228: 126(fvec4) Load 128(v)
ImageWrite 225 226 227
Store 231(ui) 232
236: 6(int) Load 133(ic1D)
239: 238(ptr) ImageTexelPointer 235(ii1D) 236 0
241: 6(int) AtomicIAdd 239 240 232 237
242: 7(ivec3) Load 9(iv)
243: 6(int) CompositeExtract 242 0
244: 6(int) IAdd 243 241
245: 7(ivec3) Load 9(iv)
246: 6(int) CompositeExtract 245 0
247: 6(int) IAdd 246 244
248: 7(ivec3) Load 9(iv)
249: 7(ivec3) CompositeInsert 247 248 0
Store 9(iv) 249
253: 27(ivec2) Load 143(ic2D)
256: 232(int) Load 255(value)
258: 257(ptr) ImageTexelPointer 252(ui2D) 253 0
259: 232(int) AtomicIAdd 258 243 235 256
260: 232(int) Load 234(ui)
261: 232(int) IAdd 260 259
Store 234(ui) 261
262: 6(int) Load 133(ic1D)
264: 241(ptr) ImageTexelPointer 238(ii1D) 262 0
265: 6(int) AtomicSMin 264 243 235 263
246: 7(ivec3) CompositeInsert 244 245 0
Store 9(iv) 246
250: 27(ivec2) Load 143(ic2D)
253: 229(int) Load 252(value)
255: 254(ptr) ImageTexelPointer 249(ui2D) 250 0
256: 229(int) AtomicIAdd 255 240 232 253
257: 229(int) Load 231(ui)
258: 229(int) IAdd 257 256
Store 231(ui) 258
259: 6(int) Load 133(ic1D)
261: 238(ptr) ImageTexelPointer 235(ii1D) 259 0
262: 6(int) AtomicSMin 261 240 232 260
263: 7(ivec3) Load 9(iv)
264: 6(int) CompositeExtract 263 0
265: 6(int) IAdd 264 262
266: 7(ivec3) Load 9(iv)
267: 6(int) CompositeExtract 266 0
268: 6(int) IAdd 267 265
269: 7(ivec3) Load 9(iv)
270: 7(ivec3) CompositeInsert 268 269 0
Store 9(iv) 270
271: 27(ivec2) Load 143(ic2D)
272: 232(int) Load 255(value)
273: 257(ptr) ImageTexelPointer 252(ui2D) 271 0
274: 232(int) AtomicUMin 273 243 235 272
275: 232(int) Load 234(ui)
276: 232(int) IAdd 275 274
Store 234(ui) 276
277: 6(int) Load 133(ic1D)
279: 241(ptr) ImageTexelPointer 238(ii1D) 277 0
280: 6(int) AtomicSMax 279 243 235 278
267: 7(ivec3) CompositeInsert 265 266 0
Store 9(iv) 267
268: 27(ivec2) Load 143(ic2D)
269: 229(int) Load 252(value)
270: 254(ptr) ImageTexelPointer 249(ui2D) 268 0
271: 229(int) AtomicUMin 270 240 232 269
272: 229(int) Load 231(ui)
273: 229(int) IAdd 272 271
Store 231(ui) 273
274: 6(int) Load 133(ic1D)
276: 238(ptr) ImageTexelPointer 235(ii1D) 274 0
277: 6(int) AtomicSMax 276 240 232 275
278: 7(ivec3) Load 9(iv)
279: 6(int) CompositeExtract 278 0
280: 6(int) IAdd 279 277
281: 7(ivec3) Load 9(iv)
282: 6(int) CompositeExtract 281 0
283: 6(int) IAdd 282 280
284: 7(ivec3) Load 9(iv)
285: 7(ivec3) CompositeInsert 283 284 0
Store 9(iv) 285
286: 27(ivec2) Load 143(ic2D)
287: 232(int) Load 255(value)
288: 257(ptr) ImageTexelPointer 252(ui2D) 286 0
289: 232(int) AtomicUMax 288 243 235 287
290: 232(int) Load 234(ui)
291: 232(int) IAdd 290 289
Store 234(ui) 291
292: 6(int) Load 133(ic1D)
294: 241(ptr) ImageTexelPointer 238(ii1D) 292 0
295: 6(int) AtomicAnd 294 243 235 293
282: 7(ivec3) CompositeInsert 280 281 0
Store 9(iv) 282
283: 27(ivec2) Load 143(ic2D)
284: 229(int) Load 252(value)
285: 254(ptr) ImageTexelPointer 249(ui2D) 283 0
286: 229(int) AtomicUMax 285 240 232 284
287: 229(int) Load 231(ui)
288: 229(int) IAdd 287 286
Store 231(ui) 288
289: 6(int) Load 133(ic1D)
291: 238(ptr) ImageTexelPointer 235(ii1D) 289 0
292: 6(int) AtomicAnd 291 240 232 290
293: 7(ivec3) Load 9(iv)
294: 6(int) CompositeExtract 293 0
295: 6(int) IAdd 294 292
296: 7(ivec3) Load 9(iv)
297: 6(int) CompositeExtract 296 0
298: 6(int) IAdd 297 295
299: 7(ivec3) Load 9(iv)
300: 7(ivec3) CompositeInsert 298 299 0
Store 9(iv) 300
301: 27(ivec2) Load 143(ic2D)
302: 232(int) Load 255(value)
303: 257(ptr) ImageTexelPointer 252(ui2D) 301 0
304: 232(int) AtomicAnd 303 243 235 302
305: 232(int) Load 234(ui)
306: 232(int) IAdd 305 304
Store 234(ui) 306
307: 6(int) Load 133(ic1D)
309: 241(ptr) ImageTexelPointer 238(ii1D) 307 0
310: 6(int) AtomicOr 309 243 235 308
297: 7(ivec3) CompositeInsert 295 296 0
Store 9(iv) 297
298: 27(ivec2) Load 143(ic2D)
299: 229(int) Load 252(value)
300: 254(ptr) ImageTexelPointer 249(ui2D) 298 0
301: 229(int) AtomicAnd 300 240 232 299
302: 229(int) Load 231(ui)
303: 229(int) IAdd 302 301
Store 231(ui) 303
304: 6(int) Load 133(ic1D)
306: 238(ptr) ImageTexelPointer 235(ii1D) 304 0
307: 6(int) AtomicOr 306 240 232 305
308: 7(ivec3) Load 9(iv)
309: 6(int) CompositeExtract 308 0
310: 6(int) IAdd 309 307
311: 7(ivec3) Load 9(iv)
312: 6(int) CompositeExtract 311 0
313: 6(int) IAdd 312 310
314: 7(ivec3) Load 9(iv)
315: 7(ivec3) CompositeInsert 313 314 0
Store 9(iv) 315
316: 27(ivec2) Load 143(ic2D)
317: 232(int) Load 255(value)
318: 257(ptr) ImageTexelPointer 252(ui2D) 316 0
319: 232(int) AtomicOr 318 243 235 317
320: 232(int) Load 234(ui)
321: 232(int) IAdd 320 319
Store 234(ui) 321
322: 6(int) Load 133(ic1D)
324: 241(ptr) ImageTexelPointer 238(ii1D) 322 0
325: 6(int) AtomicXor 324 243 235 323
312: 7(ivec3) CompositeInsert 310 311 0
Store 9(iv) 312
313: 27(ivec2) Load 143(ic2D)
314: 229(int) Load 252(value)
315: 254(ptr) ImageTexelPointer 249(ui2D) 313 0
316: 229(int) AtomicOr 315 240 232 314
317: 229(int) Load 231(ui)
318: 229(int) IAdd 317 316
Store 231(ui) 318
319: 6(int) Load 133(ic1D)
321: 238(ptr) ImageTexelPointer 235(ii1D) 319 0
322: 6(int) AtomicXor 321 240 232 320
323: 7(ivec3) Load 9(iv)
324: 6(int) CompositeExtract 323 0
325: 6(int) IAdd 324 322
326: 7(ivec3) Load 9(iv)
327: 6(int) CompositeExtract 326 0
328: 6(int) IAdd 327 325
329: 7(ivec3) Load 9(iv)
330: 7(ivec3) CompositeInsert 328 329 0
Store 9(iv) 330
331: 27(ivec2) Load 143(ic2D)
332: 232(int) Load 255(value)
333: 257(ptr) ImageTexelPointer 252(ui2D) 331 0
334: 232(int) AtomicXor 333 243 235 332
335: 232(int) Load 234(ui)
336: 232(int) IAdd 335 334
Store 234(ui) 336
337: 6(int) Load 133(ic1D)
339: 241(ptr) ImageTexelPointer 238(ii1D) 337 0
340: 6(int) AtomicExchange 339 243 235 338
327: 7(ivec3) CompositeInsert 325 326 0
Store 9(iv) 327
328: 27(ivec2) Load 143(ic2D)
329: 229(int) Load 252(value)
330: 254(ptr) ImageTexelPointer 249(ui2D) 328 0
331: 229(int) AtomicXor 330 240 232 329
332: 229(int) Load 231(ui)
333: 229(int) IAdd 332 331
Store 231(ui) 333
334: 6(int) Load 133(ic1D)
336: 238(ptr) ImageTexelPointer 235(ii1D) 334 0
337: 6(int) AtomicExchange 336 240 232 335
338: 7(ivec3) Load 9(iv)
339: 6(int) CompositeExtract 338 0
340: 6(int) IAdd 339 337
341: 7(ivec3) Load 9(iv)
342: 6(int) CompositeExtract 341 0
343: 6(int) IAdd 342 340
344: 7(ivec3) Load 9(iv)
345: 7(ivec3) CompositeInsert 343 344 0
Store 9(iv) 345
346: 27(ivec2) Load 143(ic2D)
347: 232(int) Load 255(value)
348: 257(ptr) ImageTexelPointer 252(ui2D) 346 0
349: 232(int) AtomicExchange 348 243 235 347
350: 232(int) Load 234(ui)
351: 232(int) IAdd 350 349
Store 234(ui) 351
352: 6(int) Load 133(ic1D)
355: 241(ptr) ImageTexelPointer 238(ii1D) 352 0
356: 6(int) AtomicCompareExchange 355 243 235 235 354 353
342: 7(ivec3) CompositeInsert 340 341 0
Store 9(iv) 342
343: 27(ivec2) Load 143(ic2D)
344: 229(int) Load 252(value)
345: 254(ptr) ImageTexelPointer 249(ui2D) 343 0
346: 229(int) AtomicExchange 345 240 232 344
347: 229(int) Load 231(ui)
348: 229(int) IAdd 347 346
Store 231(ui) 348
349: 6(int) Load 133(ic1D)
352: 238(ptr) ImageTexelPointer 235(ii1D) 349 0
353: 6(int) AtomicCompareExchange 352 240 232 232 351 350
354: 7(ivec3) Load 9(iv)
355: 6(int) CompositeExtract 354 0
356: 6(int) IAdd 355 353
357: 7(ivec3) Load 9(iv)
358: 6(int) CompositeExtract 357 0
359: 6(int) IAdd 358 356
360: 7(ivec3) Load 9(iv)
361: 7(ivec3) CompositeInsert 359 360 0
Store 9(iv) 361
362: 27(ivec2) Load 143(ic2D)
364: 232(int) Load 255(value)
365: 257(ptr) ImageTexelPointer 252(ui2D) 362 0
366: 232(int) AtomicCompareExchange 365 243 235 235 364 363
367: 232(int) Load 234(ui)
368: 232(int) IAdd 367 366
Store 234(ui) 368
372: 232(int) Load 234(ui)
373: 7(ivec3) Load 9(iv)
374: 6(int) CompositeExtract 373 1
375: 232(int) Bitcast 374
377: 376(bool) INotEqual 372 375
SelectionMerge 379 None
BranchConditional 377 378 381
358: 7(ivec3) CompositeInsert 356 357 0
Store 9(iv) 358
359: 27(ivec2) Load 143(ic2D)
361: 229(int) Load 252(value)
362: 254(ptr) ImageTexelPointer 249(ui2D) 359 0
363: 229(int) AtomicCompareExchange 362 240 232 232 361 360
364: 229(int) Load 231(ui)
365: 229(int) IAdd 364 363
Store 231(ui) 365
369: 229(int) Load 231(ui)
370: 7(ivec3) Load 9(iv)
371: 6(int) CompositeExtract 370 1
372: 229(int) Bitcast 371
374: 373(bool) INotEqual 369 372
SelectionMerge 376 None
BranchConditional 374 375 378
375: Label
377: 126(fvec4) Load 128(v)
Store 368 377
Branch 376
378: Label
380: 126(fvec4) Load 128(v)
Store 371 380
Branch 379
381: Label
Store 371 130
Branch 379
379: Label
382: 126(fvec4) Load 371
Store 370(fragData) 382
Store 368 130
Branch 376
376: Label
379: 126(fvec4) Load 368
Store 367(fragData) 379
Return
FunctionEnd

View File

@ -51,8 +51,8 @@ void main()
imageStore(i3D, ic3D, v);
v += imageLoad(iCube, ic3D);
imageStore(iCube, ic3D, v);
v += imageLoad(iCubeArray, ic4D);
imageStore(iCubeArray, ic4D, v);
v += imageLoad(iCubeArray, ic3D);
imageStore(iCubeArray, ic3D, v);
v += imageLoad(i2DRect, ic2D);
imageStore(i2DRect, ic2D, v);
v += imageLoad(i1DArray, ic2D);

View 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 "3.0.776"
#define GLSLANG_DATE "30-Sep-2015"
#define GLSLANG_REVISION "3.0.777"
#define GLSLANG_DATE "01-Oct-2015"

View File

@ -2024,7 +2024,11 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int versi
//
void TBuiltIns::addImageFunctions(TSampler sampler, TString& typeName, int version, EProfile profile)
{
int dims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0);
int dims = dimMap[sampler.dim];
// most things with an array add a dimension, except for cubemaps
if (sampler.arrayed && sampler.dim != EsdCube)
++dims;
TString imageParams = typeName;
if (dims == 1)
imageParams.append(", int");