Front-end: Fix: Cubemap arrays only use 3-component coord when accessed as an image.
authorJohn Kessenich <cepheus@frii.com>
Thu, 1 Oct 2015 18:40:48 +0000 (12:40 -0600)
committerJohn Kessenich <cepheus@frii.com>
Thu, 1 Oct 2015 18:40:48 +0000 (12:40 -0600)
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.

Test/310.vert
Test/baseResults/310.vert.out
Test/baseResults/spv.image.frag.out
Test/spv.image.frag
glslang/Include/revision.h
glslang/MachineIndependent/Initialize.cpp

index 3ea0e6d..1782938 100644 (file)
@@ -265,6 +265,10 @@ uniform writeonly imageCubeArray  CA1;
 uniform writeonly iimageCubeArray CA2;\r
 uniform writeonly uimageCubeArray CA3;\r
 \r
+layout(rgba16f) uniform readonly imageCubeArray  rCA1;\r
+layout(rgba32i) uniform readonly iimageCubeArray rCA2;\r
+layout(r32ui) uniform readonly uimageCubeArray rCA3;\r
+\r
 #ifdef GL_OES_texture_cube_map_array\r
 uniform samplerCubeArray          CA4;\r
 uniform samplerCubeArrayShadow    CA5;\r
@@ -304,6 +308,14 @@ void CAT()
     highp ivec3 s1 = imageSize(CA1);\r
     highp ivec3 s2 = imageSize(CA2);\r
     highp ivec3 s3 = imageSize(CA3);\r
+\r
+    imageStore(CA1, s3, vec4(1));\r
+    imageStore(CA2, s3, ivec4(1));\r
+    imageStore(CA3, s3, uvec4(1));\r
+\r
+    highp vec4 cl1 = imageLoad(rCA1, s3);\r
+    highp ivec4 cl2 = imageLoad(rCA2, s3);\r
+    highp uvec4 cl3 = imageLoad(rCA3, s3);\r
 }\r
 \r
 uniform sampler2DMSArray  bad2DMS;    // ERROR, reserved\r
index c03ee82..95770ce 100644 (file)
@@ -79,21 +79,21 @@ ERROR: 0:250: 'sampler/image' : type requires declaration of default precision q
 ERROR: 0:251: 'sampler/image' : type requires declaration of default precision qualifier \r
 ERROR: 0:252: 'sampler/image' : type requires declaration of default precision qualifier \r
 ERROR: 0:253: 'sampler/image' : type requires declaration of default precision qualifier \r
-ERROR: 0:309: 'sampler2DMSArray' : Reserved word. \r
-ERROR: 0:309: 'sampler/image' : type requires declaration of default precision qualifier \r
-ERROR: 0:310: 'isampler2DMSArray' : Reserved word. \r
-ERROR: 0:310: 'sampler/image' : type requires declaration of default precision qualifier \r
-ERROR: 0:311: 'usampler2DMSArray' : Reserved word. \r
-ERROR: 0:311: 'sampler/image' : type requires declaration of default precision qualifier \r
-ERROR: 0:317: 'sampler/image' : type requires declaration of default precision qualifier \r
-ERROR: 0:318: 'sampler/image' : type requires declaration of default precision qualifier \r
-ERROR: 0:319: 'sampler/image' : type requires declaration of default precision qualifier \r
-ERROR: 0:339: 'textureSize' : no matching overloaded function found \r
-ERROR: 0:339: '=' :  cannot convert from 'const float' to 'temp highp 3-component vector of int'\r
-ERROR: 0:377: 'sample' : Reserved word. \r
-ERROR: 0:388: 'interpolateAtCentroid' : no matching overloaded function found \r
-ERROR: 0:389: 'interpolateAtSample' : no matching overloaded function found \r
-ERROR: 0:390: 'interpolateAtOffset' : no matching overloaded function found \r
+ERROR: 0:321: 'sampler2DMSArray' : Reserved word. \r
+ERROR: 0:321: 'sampler/image' : type requires declaration of default precision qualifier \r
+ERROR: 0:322: 'isampler2DMSArray' : Reserved word. \r
+ERROR: 0:322: 'sampler/image' : type requires declaration of default precision qualifier \r
+ERROR: 0:323: 'usampler2DMSArray' : Reserved word. \r
+ERROR: 0:323: 'sampler/image' : type requires declaration of default precision qualifier \r
+ERROR: 0:329: 'sampler/image' : type requires declaration of default precision qualifier \r
+ERROR: 0:330: 'sampler/image' : type requires declaration of default precision qualifier \r
+ERROR: 0:331: 'sampler/image' : type requires declaration of default precision qualifier \r
+ERROR: 0:351: 'textureSize' : no matching overloaded function found \r
+ERROR: 0:351: '=' :  cannot convert from 'const float' to 'temp highp 3-component vector of int'\r
+ERROR: 0:389: 'sample' : Reserved word. \r
+ERROR: 0:400: 'interpolateAtCentroid' : no matching overloaded function found \r
+ERROR: 0:401: 'interpolateAtSample' : no matching overloaded function found \r
+ERROR: 0:402: 'interpolateAtOffset' : no matching overloaded function found \r
 ERROR: 90 compilation errors.  No code generated.\r
 \r
 \r
@@ -475,119 +475,83 @@ ERROR: node is still EOpNull!
 0:232          textureFetch (global highp 4-component vector of uint)\r
 0:232            'bufSamp3' (uniform highp usamplerBuffer)\r
 0:232            's3' (temp highp int)\r
-0:275  Function Definition: CAT( (global void)\r
-0:275    Function Parameters: \r
-0:277    Sequence\r
-0:277      Sequence\r
-0:277        move second child to first child (temp highp 3-component vector of int)\r
-0:277          's4' (temp highp 3-component vector of int)\r
-0:277          textureSize (global highp 3-component vector of int)\r
-0:277            'CA4' (uniform highp samplerCubeArray)\r
-0:277            Constant:\r
-0:277              1 (const int)\r
-0:278      Sequence\r
-0:278        move second child to first child (temp highp 3-component vector of int)\r
-0:278          's5' (temp highp 3-component vector of int)\r
-0:278          textureSize (global highp 3-component vector of int)\r
-0:278            'CA5' (uniform highp samplerCubeArrayShadow)\r
-0:278            Constant:\r
-0:278              1 (const int)\r
-0:279      Sequence\r
-0:279        move second child to first child (temp highp 3-component vector of int)\r
-0:279          's6' (temp highp 3-component vector of int)\r
-0:279          textureSize (global highp 3-component vector of int)\r
-0:279            'CA6' (uniform highp isamplerCubeArray)\r
-0:279            Constant:\r
-0:279              1 (const int)\r
-0:280      Sequence\r
-0:280        move second child to first child (temp highp 3-component vector of int)\r
-0:280          's7' (temp highp 3-component vector of int)\r
-0:280          textureSize (global highp 3-component vector of int)\r
-0:280            'CA7' (uniform highp usamplerCubeArray)\r
-0:280            Constant:\r
-0:280              1 (const int)\r
+0:279  Function Definition: CAT( (global void)\r
+0:279    Function Parameters: \r
+0:281    Sequence\r
+0:281      Sequence\r
+0:281        move second child to first child (temp highp 3-component vector of int)\r
+0:281          's4' (temp highp 3-component vector of int)\r
+0:281          textureSize (global highp 3-component vector of int)\r
+0:281            'CA4' (uniform highp samplerCubeArray)\r
+0:281            Constant:\r
+0:281              1 (const int)\r
 0:282      Sequence\r
-0:282        move second child to first child (temp highp 4-component vector of float)\r
-0:282          't4' (temp highp 4-component vector of float)\r
-0:282          texture (global highp 4-component vector of float)\r
-0:282            'CA4' (uniform highp samplerCubeArray)\r
+0:282        move second child to first child (temp highp 3-component vector of int)\r
+0:282          's5' (temp highp 3-component vector of int)\r
+0:282          textureSize (global highp 3-component vector of int)\r
+0:282            'CA5' (uniform highp samplerCubeArrayShadow)\r
 0:282            Constant:\r
-0:282              0.500000\r
-0:282              0.500000\r
-0:282              0.500000\r
-0:282              0.500000\r
+0:282              1 (const int)\r
 0:283      Sequence\r
-0:283        move second child to first child (temp highp float)\r
-0:283          't5' (temp highp float)\r
-0:283          texture (global highp float)\r
-0:283            'CA5' (uniform highp samplerCubeArrayShadow)\r
+0:283        move second child to first child (temp highp 3-component vector of int)\r
+0:283          's6' (temp highp 3-component vector of int)\r
+0:283          textureSize (global highp 3-component vector of int)\r
+0:283            'CA6' (uniform highp isamplerCubeArray)\r
 0:283            Constant:\r
-0:283              0.500000\r
-0:283              0.500000\r
-0:283              0.500000\r
-0:283              0.500000\r
-0:283            Constant:\r
-0:283              3.000000\r
+0:283              1 (const int)\r
 0:284      Sequence\r
-0:284        move second child to first child (temp highp 4-component vector of int)\r
-0:284          't6' (temp highp 4-component vector of int)\r
-0:284          texture (global highp 4-component vector of int)\r
-0:284            'CA6' (uniform highp isamplerCubeArray)\r
+0:284        move second child to first child (temp highp 3-component vector of int)\r
+0:284          's7' (temp highp 3-component vector of int)\r
+0:284          textureSize (global highp 3-component vector of int)\r
+0:284            'CA7' (uniform highp usamplerCubeArray)\r
 0:284            Constant:\r
-0:284              0.500000\r
-0:284              0.500000\r
-0:284              0.500000\r
-0:284              0.500000\r
-0:285      Sequence\r
-0:285        move second child to first child (temp highp 4-component vector of uint)\r
-0:285          't7' (temp highp 4-component vector of uint)\r
-0:285          texture (global highp 4-component vector of uint)\r
-0:285            'CA7' (uniform highp usamplerCubeArray)\r
-0:285            Constant:\r
-0:285              0.500000\r
-0:285              0.500000\r
-0:285              0.500000\r
-0:285              0.500000\r
+0:284              1 (const int)\r
+0:286      Sequence\r
+0:286        move second child to first child (temp highp 4-component vector of float)\r
+0:286          't4' (temp highp 4-component vector of float)\r
+0:286          texture (global highp 4-component vector of float)\r
+0:286            'CA4' (uniform highp samplerCubeArray)\r
+0:286            Constant:\r
+0:286              0.500000\r
+0:286              0.500000\r
+0:286              0.500000\r
+0:286              0.500000\r
 0:287      Sequence\r
-0:287        move second child to first child (temp highp 4-component vector of float)\r
-0:287          'L4' (temp highp 4-component vector of float)\r
-0:287          textureLod (global highp 4-component vector of float)\r
-0:287            'CA4' (uniform highp samplerCubeArray)\r
+0:287        move second child to first child (temp highp float)\r
+0:287          't5' (temp highp float)\r
+0:287          texture (global highp float)\r
+0:287            'CA5' (uniform highp samplerCubeArrayShadow)\r
 0:287            Constant:\r
 0:287              0.500000\r
 0:287              0.500000\r
 0:287              0.500000\r
 0:287              0.500000\r
 0:287            Constant:\r
-0:287              0.240000\r
+0:287              3.000000\r
 0:288      Sequence\r
 0:288        move second child to first child (temp highp 4-component vector of int)\r
-0:288          'L6' (temp highp 4-component vector of int)\r
-0:288          textureLod (global highp 4-component vector of int)\r
+0:288          't6' (temp highp 4-component vector of int)\r
+0:288          texture (global highp 4-component vector of int)\r
 0:288            'CA6' (uniform highp isamplerCubeArray)\r
 0:288            Constant:\r
 0:288              0.500000\r
 0:288              0.500000\r
 0:288              0.500000\r
 0:288              0.500000\r
-0:288            Constant:\r
-0:288              0.260000\r
 0:289      Sequence\r
 0:289        move second child to first child (temp highp 4-component vector of uint)\r
-0:289          'L7' (temp highp 4-component vector of uint)\r
-0:289          textureLod (global highp 4-component vector of uint)\r
+0:289          't7' (temp highp 4-component vector of uint)\r
+0:289          texture (global highp 4-component vector of uint)\r
 0:289            'CA7' (uniform highp usamplerCubeArray)\r
 0:289            Constant:\r
 0:289              0.500000\r
 0:289              0.500000\r
 0:289              0.500000\r
 0:289              0.500000\r
-0:289            Constant:\r
-0:289              0.270000\r
 0:291      Sequence\r
 0:291        move second child to first child (temp highp 4-component vector of float)\r
-0:291          'g4' (temp highp 4-component vector of float)\r
-0:291          textureGrad (global highp 4-component vector of float)\r
+0:291          'L4' (temp highp 4-component vector of float)\r
+0:291          textureLod (global highp 4-component vector of float)\r
 0:291            'CA4' (uniform highp samplerCubeArray)\r
 0:291            Constant:\r
 0:291              0.500000\r
@@ -595,17 +559,11 @@ ERROR: node is still EOpNull!
 0:291              0.500000\r
 0:291              0.500000\r
 0:291            Constant:\r
-0:291              0.100000\r
-0:291              0.100000\r
-0:291              0.100000\r
-0:291            Constant:\r
-0:291              0.200000\r
-0:291              0.200000\r
-0:291              0.200000\r
+0:291              0.240000\r
 0:292      Sequence\r
 0:292        move second child to first child (temp highp 4-component vector of int)\r
-0:292          'g6' (temp highp 4-component vector of int)\r
-0:292          textureGrad (global highp 4-component vector of int)\r
+0:292          'L6' (temp highp 4-component vector of int)\r
+0:292          textureLod (global highp 4-component vector of int)\r
 0:292            'CA6' (uniform highp isamplerCubeArray)\r
 0:292            Constant:\r
 0:292              0.500000\r
@@ -613,17 +571,11 @@ ERROR: node is still EOpNull!
 0:292              0.500000\r
 0:292              0.500000\r
 0:292            Constant:\r
-0:292              0.100000\r
-0:292              0.100000\r
-0:292              0.100000\r
-0:292            Constant:\r
-0:292              0.200000\r
-0:292              0.200000\r
-0:292              0.200000\r
+0:292              0.260000\r
 0:293      Sequence\r
 0:293        move second child to first child (temp highp 4-component vector of uint)\r
-0:293          'g7' (temp highp 4-component vector of uint)\r
-0:293          textureGrad (global highp 4-component vector of uint)\r
+0:293          'L7' (temp highp 4-component vector of uint)\r
+0:293          textureLod (global highp 4-component vector of uint)\r
 0:293            'CA7' (uniform highp usamplerCubeArray)\r
 0:293            Constant:\r
 0:293              0.500000\r
@@ -631,241 +583,331 @@ ERROR: node is still EOpNull!
 0:293              0.500000\r
 0:293              0.500000\r
 0:293            Constant:\r
-0:293              0.100000\r
-0:293              0.100000\r
-0:293              0.100000\r
-0:293            Constant:\r
-0:293              0.200000\r
-0:293              0.200000\r
-0:293              0.200000\r
+0:293              0.270000\r
 0:295      Sequence\r
 0:295        move second child to first child (temp highp 4-component vector of float)\r
-0:295          'gath4' (temp highp 4-component vector of float)\r
-0:295          textureGather (global highp 4-component vector of float)\r
+0:295          'g4' (temp highp 4-component vector of float)\r
+0:295          textureGrad (global highp 4-component vector of float)\r
 0:295            'CA4' (uniform highp samplerCubeArray)\r
 0:295            Constant:\r
 0:295              0.500000\r
 0:295              0.500000\r
 0:295              0.500000\r
 0:295              0.500000\r
+0:295            Constant:\r
+0:295              0.100000\r
+0:295              0.100000\r
+0:295              0.100000\r
+0:295            Constant:\r
+0:295              0.200000\r
+0:295              0.200000\r
+0:295              0.200000\r
 0:296      Sequence\r
-0:296        move second child to first child (temp highp 4-component vector of float)\r
-0:296          'gathC4' (temp highp 4-component vector of float)\r
-0:296          textureGather (global highp 4-component vector of float)\r
-0:296            'CA4' (uniform highp samplerCubeArray)\r
+0:296        move second child to first child (temp highp 4-component vector of int)\r
+0:296          'g6' (temp highp 4-component vector of int)\r
+0:296          textureGrad (global highp 4-component vector of int)\r
+0:296            'CA6' (uniform highp isamplerCubeArray)\r
 0:296            Constant:\r
 0:296              0.500000\r
 0:296              0.500000\r
 0:296              0.500000\r
 0:296              0.500000\r
 0:296            Constant:\r
-0:296              2 (const int)\r
+0:296              0.100000\r
+0:296              0.100000\r
+0:296              0.100000\r
+0:296            Constant:\r
+0:296              0.200000\r
+0:296              0.200000\r
+0:296              0.200000\r
 0:297      Sequence\r
-0:297        move second child to first child (temp highp 4-component vector of int)\r
-0:297          'gath6' (temp highp 4-component vector of int)\r
-0:297          textureGather (global highp 4-component vector of int)\r
-0:297            'CA6' (uniform highp isamplerCubeArray)\r
+0:297        move second child to first child (temp highp 4-component vector of uint)\r
+0:297          'g7' (temp highp 4-component vector of uint)\r
+0:297          textureGrad (global highp 4-component vector of uint)\r
+0:297            'CA7' (uniform highp usamplerCubeArray)\r
 0:297            Constant:\r
 0:297              0.500000\r
 0:297              0.500000\r
 0:297              0.500000\r
 0:297              0.500000\r
-0:298      Sequence\r
-0:298        move second child to first child (temp highp 4-component vector of int)\r
-0:298          'gathC6' (temp highp 4-component vector of int)\r
-0:298          textureGather (global highp 4-component vector of int)\r
-0:298            'CA6' (uniform highp isamplerCubeArray)\r
-0:298            Constant:\r
-0:298              0.500000\r
-0:298              0.500000\r
-0:298              0.500000\r
-0:298              0.500000\r
-0:298            Constant:\r
-0:298              1 (const int)\r
+0:297            Constant:\r
+0:297              0.100000\r
+0:297              0.100000\r
+0:297              0.100000\r
+0:297            Constant:\r
+0:297              0.200000\r
+0:297              0.200000\r
+0:297              0.200000\r
 0:299      Sequence\r
-0:299        move second child to first child (temp highp 4-component vector of uint)\r
-0:299          'gath7' (temp highp 4-component vector of uint)\r
-0:299          textureGather (global highp 4-component vector of uint)\r
-0:299            'CA7' (uniform highp usamplerCubeArray)\r
+0:299        move second child to first child (temp highp 4-component vector of float)\r
+0:299          'gath4' (temp highp 4-component vector of float)\r
+0:299          textureGather (global highp 4-component vector of float)\r
+0:299            'CA4' (uniform highp samplerCubeArray)\r
 0:299            Constant:\r
 0:299              0.500000\r
 0:299              0.500000\r
 0:299              0.500000\r
 0:299              0.500000\r
 0:300      Sequence\r
-0:300        move second child to first child (temp highp 4-component vector of uint)\r
-0:300          'gathC7' (temp highp 4-component vector of uint)\r
-0:300          textureGather (global highp 4-component vector of uint)\r
-0:300            'CA7' (uniform highp usamplerCubeArray)\r
+0:300        move second child to first child (temp highp 4-component vector of float)\r
+0:300          'gathC4' (temp highp 4-component vector of float)\r
+0:300          textureGather (global highp 4-component vector of float)\r
+0:300            'CA4' (uniform highp samplerCubeArray)\r
 0:300            Constant:\r
 0:300              0.500000\r
 0:300              0.500000\r
 0:300              0.500000\r
 0:300              0.500000\r
 0:300            Constant:\r
-0:300              0 (const int)\r
+0:300              2 (const int)\r
+0:301      Sequence\r
+0:301        move second child to first child (temp highp 4-component vector of int)\r
+0:301          'gath6' (temp highp 4-component vector of int)\r
+0:301          textureGather (global highp 4-component vector of int)\r
+0:301            'CA6' (uniform highp isamplerCubeArray)\r
+0:301            Constant:\r
+0:301              0.500000\r
+0:301              0.500000\r
+0:301              0.500000\r
+0:301              0.500000\r
 0:302      Sequence\r
-0:302        move second child to first child (temp highp 4-component vector of float)\r
-0:302          'gath5' (temp highp 4-component vector of float)\r
-0:302          textureGather (global highp 4-component vector of float)\r
-0:302            'CA5' (uniform highp samplerCubeArrayShadow)\r
+0:302        move second child to first child (temp highp 4-component vector of int)\r
+0:302          'gathC6' (temp highp 4-component vector of int)\r
+0:302          textureGather (global highp 4-component vector of int)\r
+0:302            'CA6' (uniform highp isamplerCubeArray)\r
 0:302            Constant:\r
 0:302              0.500000\r
 0:302              0.500000\r
 0:302              0.500000\r
 0:302              0.500000\r
 0:302            Constant:\r
-0:302              2.500000\r
+0:302              1 (const int)\r
+0:303      Sequence\r
+0:303        move second child to first child (temp highp 4-component vector of uint)\r
+0:303          'gath7' (temp highp 4-component vector of uint)\r
+0:303          textureGather (global highp 4-component vector of uint)\r
+0:303            'CA7' (uniform highp usamplerCubeArray)\r
+0:303            Constant:\r
+0:303              0.500000\r
+0:303              0.500000\r
+0:303              0.500000\r
+0:303              0.500000\r
 0:304      Sequence\r
-0:304        move second child to first child (temp highp 3-component vector of int)\r
-0:304          's1' (temp highp 3-component vector of int)\r
-0:304          imageQuerySize (global highp 3-component vector of int)\r
-0:304            'CA1' (writeonly uniform highp imageCubeArray)\r
-0:305      Sequence\r
-0:305        move second child to first child (temp highp 3-component vector of int)\r
-0:305          's2' (temp highp 3-component vector of int)\r
-0:305          imageQuerySize (global highp 3-component vector of int)\r
-0:305            'CA2' (writeonly uniform highp iimageCubeArray)\r
+0:304        move second child to first child (temp highp 4-component vector of uint)\r
+0:304          'gathC7' (temp highp 4-component vector of uint)\r
+0:304          textureGather (global highp 4-component vector of uint)\r
+0:304            'CA7' (uniform highp usamplerCubeArray)\r
+0:304            Constant:\r
+0:304              0.500000\r
+0:304              0.500000\r
+0:304              0.500000\r
+0:304              0.500000\r
+0:304            Constant:\r
+0:304              0 (const int)\r
 0:306      Sequence\r
-0:306        move second child to first child (temp highp 3-component vector of int)\r
-0:306          's3' (temp highp 3-component vector of int)\r
-0:306          imageQuerySize (global highp 3-component vector of int)\r
-0:306            'CA3' (writeonly uniform highp uimageCubeArray)\r
-0:331  Function Definition: MSA( (global void)\r
-0:331    Function Parameters: \r
-0:333    Sequence\r
-0:333      Sequence\r
-0:333        move second child to first child (temp highp 4-component vector of float)\r
-0:333          'tf' (temp highp 4-component vector of float)\r
-0:333          textureFetch (global highp 4-component vector of float)\r
-0:333            'samp2DMSA' (uniform highp sampler2DMSArray)\r
-0:333            Constant:\r
-0:333              5 (const int)\r
-0:333              5 (const int)\r
-0:333              5 (const int)\r
-0:333            Constant:\r
-0:333              2 (const int)\r
-0:334      Sequence\r
-0:334        move second child to first child (temp highp 4-component vector of int)\r
-0:334          'tfi' (temp highp 4-component vector of int)\r
-0:334          textureFetch (global highp 4-component vector of int)\r
-0:334            'samp2DMSAi' (uniform highp isampler2DMSArray)\r
-0:334            Constant:\r
-0:334              5 (const int)\r
-0:334              5 (const int)\r
-0:334              5 (const int)\r
-0:334            Constant:\r
-0:334              2 (const int)\r
-0:335      Sequence\r
-0:335        move second child to first child (temp highp 4-component vector of uint)\r
-0:335          'tfu' (temp highp 4-component vector of uint)\r
-0:335          textureFetch (global highp 4-component vector of uint)\r
-0:335            'samp2DMSAu' (uniform highp usampler2DMSArray)\r
-0:335            Constant:\r
-0:335              5 (const int)\r
-0:335              5 (const int)\r
-0:335              5 (const int)\r
-0:335            Constant:\r
-0:335              2 (const int)\r
-0:337      Sequence\r
-0:337        move second child to first child (temp highp 3-component vector of int)\r
-0:337          'tfs' (temp highp 3-component vector of int)\r
-0:337          textureSize (global highp 3-component vector of int)\r
-0:337            'samp2DMSA' (uniform highp sampler2DMSArray)\r
-0:338      Sequence\r
-0:338        move second child to first child (temp highp 3-component vector of int)\r
-0:338          'tfsi' (temp highp 3-component vector of int)\r
-0:338          textureSize (global highp 3-component vector of int)\r
-0:338            'samp2DMSAi' (uniform highp isampler2DMSArray)\r
-0:340      Sequence\r
-0:340        move second child to first child (temp highp 3-component vector of int)\r
-0:340          'tfsu' (temp highp 3-component vector of int)\r
-0:340          textureSize (global highp 3-component vector of int)\r
-0:340            'samp2DMSAu' (uniform highp usampler2DMSArray)\r
-0:352  Function Definition: goodImageAtom( (global void)\r
-0:352    Function Parameters: \r
+0:306        move second child to first child (temp highp 4-component vector of float)\r
+0:306          'gath5' (temp highp 4-component vector of float)\r
+0:306          textureGather (global highp 4-component vector of float)\r
+0:306            'CA5' (uniform highp samplerCubeArrayShadow)\r
+0:306            Constant:\r
+0:306              0.500000\r
+0:306              0.500000\r
+0:306              0.500000\r
+0:306              0.500000\r
+0:306            Constant:\r
+0:306              2.500000\r
+0:308      Sequence\r
+0:308        move second child to first child (temp highp 3-component vector of int)\r
+0:308          's1' (temp highp 3-component vector of int)\r
+0:308          imageQuerySize (global highp 3-component vector of int)\r
+0:308            'CA1' (writeonly uniform highp imageCubeArray)\r
+0:309      Sequence\r
+0:309        move second child to first child (temp highp 3-component vector of int)\r
+0:309          's2' (temp highp 3-component vector of int)\r
+0:309          imageQuerySize (global highp 3-component vector of int)\r
+0:309            'CA2' (writeonly uniform highp iimageCubeArray)\r
+0:310      Sequence\r
+0:310        move second child to first child (temp highp 3-component vector of int)\r
+0:310          's3' (temp highp 3-component vector of int)\r
+0:310          imageQuerySize (global highp 3-component vector of int)\r
+0:310            'CA3' (writeonly uniform highp uimageCubeArray)\r
+0:312      imageStore (global highp void)\r
+0:312        'CA1' (writeonly uniform highp imageCubeArray)\r
+0:312        's3' (temp highp 3-component vector of int)\r
+0:312        Constant:\r
+0:312          1.000000\r
+0:312          1.000000\r
+0:312          1.000000\r
+0:312          1.000000\r
+0:313      imageStore (global highp void)\r
+0:313        'CA2' (writeonly uniform highp iimageCubeArray)\r
+0:313        's3' (temp highp 3-component vector of int)\r
+0:313        Constant:\r
+0:313          1 (const int)\r
+0:313          1 (const int)\r
+0:313          1 (const int)\r
+0:313          1 (const int)\r
+0:314      imageStore (global highp void)\r
+0:314        'CA3' (writeonly uniform highp uimageCubeArray)\r
+0:314        's3' (temp highp 3-component vector of int)\r
+0:314        Constant:\r
+0:314          1 (const uint)\r
+0:314          1 (const uint)\r
+0:314          1 (const uint)\r
+0:314          1 (const uint)\r
+0:316      Sequence\r
+0:316        move second child to first child (temp highp 4-component vector of float)\r
+0:316          'cl1' (temp highp 4-component vector of float)\r
+0:316          imageLoad (global highp 4-component vector of float)\r
+0:316            'rCA1' (layout(rgba16f ) readonly uniform highp imageCubeArray)\r
+0:316            's3' (temp highp 3-component vector of int)\r
+0:317      Sequence\r
+0:317        move second child to first child (temp highp 4-component vector of int)\r
+0:317          'cl2' (temp highp 4-component vector of int)\r
+0:317          imageLoad (global highp 4-component vector of int)\r
+0:317            'rCA2' (layout(rgba32i ) readonly uniform highp iimageCubeArray)\r
+0:317            's3' (temp highp 3-component vector of int)\r
+0:318      Sequence\r
+0:318        move second child to first child (temp highp 4-component vector of uint)\r
+0:318          'cl3' (temp highp 4-component vector of uint)\r
+0:318          imageLoad (global highp 4-component vector of uint)\r
+0:318            'rCA3' (layout(r32ui ) readonly uniform highp uimageCubeArray)\r
+0:318            's3' (temp highp 3-component vector of int)\r
+0:343  Function Definition: MSA( (global void)\r
+0:343    Function Parameters: \r
+0:345    Sequence\r
+0:345      Sequence\r
+0:345        move second child to first child (temp highp 4-component vector of float)\r
+0:345          'tf' (temp highp 4-component vector of float)\r
+0:345          textureFetch (global highp 4-component vector of float)\r
+0:345            'samp2DMSA' (uniform highp sampler2DMSArray)\r
+0:345            Constant:\r
+0:345              5 (const int)\r
+0:345              5 (const int)\r
+0:345              5 (const int)\r
+0:345            Constant:\r
+0:345              2 (const int)\r
+0:346      Sequence\r
+0:346        move second child to first child (temp highp 4-component vector of int)\r
+0:346          'tfi' (temp highp 4-component vector of int)\r
+0:346          textureFetch (global highp 4-component vector of int)\r
+0:346            'samp2DMSAi' (uniform highp isampler2DMSArray)\r
+0:346            Constant:\r
+0:346              5 (const int)\r
+0:346              5 (const int)\r
+0:346              5 (const int)\r
+0:346            Constant:\r
+0:346              2 (const int)\r
+0:347      Sequence\r
+0:347        move second child to first child (temp highp 4-component vector of uint)\r
+0:347          'tfu' (temp highp 4-component vector of uint)\r
+0:347          textureFetch (global highp 4-component vector of uint)\r
+0:347            'samp2DMSAu' (uniform highp usampler2DMSArray)\r
+0:347            Constant:\r
+0:347              5 (const int)\r
+0:347              5 (const int)\r
+0:347              5 (const int)\r
+0:347            Constant:\r
+0:347              2 (const int)\r
+0:349      Sequence\r
+0:349        move second child to first child (temp highp 3-component vector of int)\r
+0:349          'tfs' (temp highp 3-component vector of int)\r
+0:349          textureSize (global highp 3-component vector of int)\r
+0:349            'samp2DMSA' (uniform highp sampler2DMSArray)\r
+0:350      Sequence\r
+0:350        move second child to first child (temp highp 3-component vector of int)\r
+0:350          'tfsi' (temp highp 3-component vector of int)\r
+0:350          textureSize (global highp 3-component vector of int)\r
+0:350            'samp2DMSAi' (uniform highp isampler2DMSArray)\r
+0:352      Sequence\r
+0:352        move second child to first child (temp highp 3-component vector of int)\r
+0:352          'tfsu' (temp highp 3-component vector of int)\r
+0:352          textureSize (global highp 3-component vector of int)\r
+0:352            'samp2DMSAu' (uniform highp usampler2DMSArray)\r
+0:364  Function Definition: goodImageAtom( (global void)\r
+0:364    Function Parameters: \r
 0:?     Sequence\r
-0:358      imageAtomicAdd (global highp int)\r
-0:358        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:358        'P' (uniform highp 2-component vector of int)\r
-0:358        'dati' (temp highp int)\r
-0:359      imageAtomicAdd (global highp uint)\r
-0:359        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:359        'P' (uniform highp 2-component vector of int)\r
-0:359        'datu' (temp highp uint)\r
-0:360      imageAtomicMin (global highp int)\r
-0:360        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:360        'P' (uniform highp 2-component vector of int)\r
-0:360        'dati' (temp highp int)\r
-0:361      imageAtomicMin (global highp uint)\r
-0:361        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:361        'P' (uniform highp 2-component vector of int)\r
-0:361        'datu' (temp highp uint)\r
-0:362      imageAtomicMax (global highp int)\r
-0:362        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:362        'P' (uniform highp 2-component vector of int)\r
-0:362        'dati' (temp highp int)\r
-0:363      imageAtomicMax (global highp uint)\r
-0:363        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:363        'P' (uniform highp 2-component vector of int)\r
-0:363        'datu' (temp highp uint)\r
-0:364      imageAtomicAnd (global highp int)\r
-0:364        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:364        'P' (uniform highp 2-component vector of int)\r
-0:364        'dati' (temp highp int)\r
-0:365      imageAtomicAnd (global highp uint)\r
-0:365        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:365        'P' (uniform highp 2-component vector of int)\r
-0:365        'datu' (temp highp uint)\r
-0:366      imageAtomicOr (global highp int)\r
-0:366        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:366        'P' (uniform highp 2-component vector of int)\r
-0:366        'dati' (temp highp int)\r
-0:367      imageAtomicOr (global highp uint)\r
-0:367        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:367        'P' (uniform highp 2-component vector of int)\r
-0:367        'datu' (temp highp uint)\r
-0:368      imageAtomicXor (global highp int)\r
-0:368        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:368        'P' (uniform highp 2-component vector of int)\r
-0:368        'dati' (temp highp int)\r
-0:369      imageAtomicXor (global highp uint)\r
-0:369        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:369        'P' (uniform highp 2-component vector of int)\r
-0:369        'datu' (temp highp uint)\r
-0:370      imageAtomicExchange (global highp int)\r
+0:370      imageAtomicAdd (global highp int)\r
 0:370        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
 0:370        'P' (uniform highp 2-component vector of int)\r
 0:370        'dati' (temp highp int)\r
-0:371      imageAtomicExchange (global highp uint)\r
+0:371      imageAtomicAdd (global highp uint)\r
 0:371        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
 0:371        'P' (uniform highp 2-component vector of int)\r
 0:371        'datu' (temp highp uint)\r
-0:372      imageAtomicExchange (global highp float)\r
-0:372        'im2Df' (layout(r32f ) uniform highp image2D)\r
+0:372      imageAtomicMin (global highp int)\r
+0:372        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
 0:372        'P' (uniform highp 2-component vector of int)\r
-0:372        'datf' (temp highp float)\r
-0:373      imageAtomicCompSwap (global highp int)\r
-0:373        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:372        'dati' (temp highp int)\r
+0:373      imageAtomicMin (global highp uint)\r
+0:373        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
 0:373        'P' (uniform highp 2-component vector of int)\r
-0:373        Constant:\r
-0:373          3 (const int)\r
-0:373        'dati' (temp highp int)\r
-0:374      imageAtomicCompSwap (global highp uint)\r
-0:374        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:373        'datu' (temp highp uint)\r
+0:374      imageAtomicMax (global highp int)\r
+0:374        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
 0:374        'P' (uniform highp 2-component vector of int)\r
-0:374        Constant:\r
-0:374          5 (const uint)\r
-0:374        'datu' (temp highp uint)\r
-0:386  Function Definition: badInterp( (global void)\r
-0:386    Function Parameters: \r
-0:388    Sequence\r
-0:388      Constant:\r
-0:388        0.000000\r
-0:389      Constant:\r
-0:389        0.000000\r
-0:390      Constant:\r
-0:390        0.000000\r
+0:374        'dati' (temp highp int)\r
+0:375      imageAtomicMax (global highp uint)\r
+0:375        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:375        'P' (uniform highp 2-component vector of int)\r
+0:375        'datu' (temp highp uint)\r
+0:376      imageAtomicAnd (global highp int)\r
+0:376        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:376        'P' (uniform highp 2-component vector of int)\r
+0:376        'dati' (temp highp int)\r
+0:377      imageAtomicAnd (global highp uint)\r
+0:377        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:377        'P' (uniform highp 2-component vector of int)\r
+0:377        'datu' (temp highp uint)\r
+0:378      imageAtomicOr (global highp int)\r
+0:378        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:378        'P' (uniform highp 2-component vector of int)\r
+0:378        'dati' (temp highp int)\r
+0:379      imageAtomicOr (global highp uint)\r
+0:379        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:379        'P' (uniform highp 2-component vector of int)\r
+0:379        'datu' (temp highp uint)\r
+0:380      imageAtomicXor (global highp int)\r
+0:380        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:380        'P' (uniform highp 2-component vector of int)\r
+0:380        'dati' (temp highp int)\r
+0:381      imageAtomicXor (global highp uint)\r
+0:381        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:381        'P' (uniform highp 2-component vector of int)\r
+0:381        'datu' (temp highp uint)\r
+0:382      imageAtomicExchange (global highp int)\r
+0:382        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:382        'P' (uniform highp 2-component vector of int)\r
+0:382        'dati' (temp highp int)\r
+0:383      imageAtomicExchange (global highp uint)\r
+0:383        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:383        'P' (uniform highp 2-component vector of int)\r
+0:383        'datu' (temp highp uint)\r
+0:384      imageAtomicExchange (global highp float)\r
+0:384        'im2Df' (layout(r32f ) uniform highp image2D)\r
+0:384        'P' (uniform highp 2-component vector of int)\r
+0:384        'datf' (temp highp float)\r
+0:385      imageAtomicCompSwap (global highp int)\r
+0:385        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:385        'P' (uniform highp 2-component vector of int)\r
+0:385        Constant:\r
+0:385          3 (const int)\r
+0:385        'dati' (temp highp int)\r
+0:386      imageAtomicCompSwap (global highp uint)\r
+0:386        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:386        'P' (uniform highp 2-component vector of int)\r
+0:386        Constant:\r
+0:386          5 (const uint)\r
+0:386        'datu' (temp highp uint)\r
+0:398  Function Definition: badInterp( (global void)\r
+0:398    Function Parameters: \r
+0:400    Sequence\r
+0:400      Constant:\r
+0:400        0.000000\r
+0:401      Constant:\r
+0:401        0.000000\r
+0:402      Constant:\r
+0:402        0.000000\r
 0:?   Linker Objects\r
 0:?     's' (shared highp 4-component vector of float)\r
 0:?     'v' (buffer highp 4-component vector of float)\r
@@ -950,6 +992,9 @@ ERROR: node is still EOpNull!
 0:?     'CA1' (writeonly uniform highp imageCubeArray)\r
 0:?     'CA2' (writeonly uniform highp iimageCubeArray)\r
 0:?     'CA3' (writeonly uniform highp uimageCubeArray)\r
+0:?     'rCA1' (layout(rgba16f ) readonly uniform highp imageCubeArray)\r
+0:?     'rCA2' (layout(rgba32i ) readonly uniform highp iimageCubeArray)\r
+0:?     'rCA3' (layout(r32ui ) readonly uniform highp uimageCubeArray)\r
 0:?     'CA4' (uniform highp samplerCubeArray)\r
 0:?     'CA5' (uniform highp samplerCubeArrayShadow)\r
 0:?     'CA6' (uniform highp isamplerCubeArray)\r
@@ -1357,119 +1402,83 @@ ERROR: node is still EOpNull!
 0:232          textureFetch (global highp 4-component vector of uint)\r
 0:232            'bufSamp3' (uniform highp usamplerBuffer)\r
 0:232            's3' (temp highp int)\r
-0:275  Function Definition: CAT( (global void)\r
-0:275    Function Parameters: \r
-0:277    Sequence\r
-0:277      Sequence\r
-0:277        move second child to first child (temp highp 3-component vector of int)\r
-0:277          's4' (temp highp 3-component vector of int)\r
-0:277          textureSize (global highp 3-component vector of int)\r
-0:277            'CA4' (uniform highp samplerCubeArray)\r
-0:277            Constant:\r
-0:277              1 (const int)\r
-0:278      Sequence\r
-0:278        move second child to first child (temp highp 3-component vector of int)\r
-0:278          's5' (temp highp 3-component vector of int)\r
-0:278          textureSize (global highp 3-component vector of int)\r
-0:278            'CA5' (uniform highp samplerCubeArrayShadow)\r
-0:278            Constant:\r
-0:278              1 (const int)\r
-0:279      Sequence\r
-0:279        move second child to first child (temp highp 3-component vector of int)\r
-0:279          's6' (temp highp 3-component vector of int)\r
-0:279          textureSize (global highp 3-component vector of int)\r
-0:279            'CA6' (uniform highp isamplerCubeArray)\r
-0:279            Constant:\r
-0:279              1 (const int)\r
-0:280      Sequence\r
-0:280        move second child to first child (temp highp 3-component vector of int)\r
-0:280          's7' (temp highp 3-component vector of int)\r
-0:280          textureSize (global highp 3-component vector of int)\r
-0:280            'CA7' (uniform highp usamplerCubeArray)\r
-0:280            Constant:\r
-0:280              1 (const int)\r
+0:279  Function Definition: CAT( (global void)\r
+0:279    Function Parameters: \r
+0:281    Sequence\r
+0:281      Sequence\r
+0:281        move second child to first child (temp highp 3-component vector of int)\r
+0:281          's4' (temp highp 3-component vector of int)\r
+0:281          textureSize (global highp 3-component vector of int)\r
+0:281            'CA4' (uniform highp samplerCubeArray)\r
+0:281            Constant:\r
+0:281              1 (const int)\r
 0:282      Sequence\r
-0:282        move second child to first child (temp highp 4-component vector of float)\r
-0:282          't4' (temp highp 4-component vector of float)\r
-0:282          texture (global highp 4-component vector of float)\r
-0:282            'CA4' (uniform highp samplerCubeArray)\r
+0:282        move second child to first child (temp highp 3-component vector of int)\r
+0:282          's5' (temp highp 3-component vector of int)\r
+0:282          textureSize (global highp 3-component vector of int)\r
+0:282            'CA5' (uniform highp samplerCubeArrayShadow)\r
 0:282            Constant:\r
-0:282              0.500000\r
-0:282              0.500000\r
-0:282              0.500000\r
-0:282              0.500000\r
+0:282              1 (const int)\r
 0:283      Sequence\r
-0:283        move second child to first child (temp highp float)\r
-0:283          't5' (temp highp float)\r
-0:283          texture (global highp float)\r
-0:283            'CA5' (uniform highp samplerCubeArrayShadow)\r
+0:283        move second child to first child (temp highp 3-component vector of int)\r
+0:283          's6' (temp highp 3-component vector of int)\r
+0:283          textureSize (global highp 3-component vector of int)\r
+0:283            'CA6' (uniform highp isamplerCubeArray)\r
 0:283            Constant:\r
-0:283              0.500000\r
-0:283              0.500000\r
-0:283              0.500000\r
-0:283              0.500000\r
-0:283            Constant:\r
-0:283              3.000000\r
+0:283              1 (const int)\r
 0:284      Sequence\r
-0:284        move second child to first child (temp highp 4-component vector of int)\r
-0:284          't6' (temp highp 4-component vector of int)\r
-0:284          texture (global highp 4-component vector of int)\r
-0:284            'CA6' (uniform highp isamplerCubeArray)\r
+0:284        move second child to first child (temp highp 3-component vector of int)\r
+0:284          's7' (temp highp 3-component vector of int)\r
+0:284          textureSize (global highp 3-component vector of int)\r
+0:284            'CA7' (uniform highp usamplerCubeArray)\r
 0:284            Constant:\r
-0:284              0.500000\r
-0:284              0.500000\r
-0:284              0.500000\r
-0:284              0.500000\r
-0:285      Sequence\r
-0:285        move second child to first child (temp highp 4-component vector of uint)\r
-0:285          't7' (temp highp 4-component vector of uint)\r
-0:285          texture (global highp 4-component vector of uint)\r
-0:285            'CA7' (uniform highp usamplerCubeArray)\r
-0:285            Constant:\r
-0:285              0.500000\r
-0:285              0.500000\r
-0:285              0.500000\r
-0:285              0.500000\r
+0:284              1 (const int)\r
+0:286      Sequence\r
+0:286        move second child to first child (temp highp 4-component vector of float)\r
+0:286          't4' (temp highp 4-component vector of float)\r
+0:286          texture (global highp 4-component vector of float)\r
+0:286            'CA4' (uniform highp samplerCubeArray)\r
+0:286            Constant:\r
+0:286              0.500000\r
+0:286              0.500000\r
+0:286              0.500000\r
+0:286              0.500000\r
 0:287      Sequence\r
-0:287        move second child to first child (temp highp 4-component vector of float)\r
-0:287          'L4' (temp highp 4-component vector of float)\r
-0:287          textureLod (global highp 4-component vector of float)\r
-0:287            'CA4' (uniform highp samplerCubeArray)\r
+0:287        move second child to first child (temp highp float)\r
+0:287          't5' (temp highp float)\r
+0:287          texture (global highp float)\r
+0:287            'CA5' (uniform highp samplerCubeArrayShadow)\r
 0:287            Constant:\r
 0:287              0.500000\r
 0:287              0.500000\r
 0:287              0.500000\r
 0:287              0.500000\r
 0:287            Constant:\r
-0:287              0.240000\r
+0:287              3.000000\r
 0:288      Sequence\r
 0:288        move second child to first child (temp highp 4-component vector of int)\r
-0:288          'L6' (temp highp 4-component vector of int)\r
-0:288          textureLod (global highp 4-component vector of int)\r
+0:288          't6' (temp highp 4-component vector of int)\r
+0:288          texture (global highp 4-component vector of int)\r
 0:288            'CA6' (uniform highp isamplerCubeArray)\r
 0:288            Constant:\r
 0:288              0.500000\r
 0:288              0.500000\r
 0:288              0.500000\r
 0:288              0.500000\r
-0:288            Constant:\r
-0:288              0.260000\r
 0:289      Sequence\r
 0:289        move second child to first child (temp highp 4-component vector of uint)\r
-0:289          'L7' (temp highp 4-component vector of uint)\r
-0:289          textureLod (global highp 4-component vector of uint)\r
+0:289          't7' (temp highp 4-component vector of uint)\r
+0:289          texture (global highp 4-component vector of uint)\r
 0:289            'CA7' (uniform highp usamplerCubeArray)\r
 0:289            Constant:\r
 0:289              0.500000\r
 0:289              0.500000\r
 0:289              0.500000\r
 0:289              0.500000\r
-0:289            Constant:\r
-0:289              0.270000\r
 0:291      Sequence\r
 0:291        move second child to first child (temp highp 4-component vector of float)\r
-0:291          'g4' (temp highp 4-component vector of float)\r
-0:291          textureGrad (global highp 4-component vector of float)\r
+0:291          'L4' (temp highp 4-component vector of float)\r
+0:291          textureLod (global highp 4-component vector of float)\r
 0:291            'CA4' (uniform highp samplerCubeArray)\r
 0:291            Constant:\r
 0:291              0.500000\r
@@ -1477,17 +1486,11 @@ ERROR: node is still EOpNull!
 0:291              0.500000\r
 0:291              0.500000\r
 0:291            Constant:\r
-0:291              0.100000\r
-0:291              0.100000\r
-0:291              0.100000\r
-0:291            Constant:\r
-0:291              0.200000\r
-0:291              0.200000\r
-0:291              0.200000\r
+0:291              0.240000\r
 0:292      Sequence\r
 0:292        move second child to first child (temp highp 4-component vector of int)\r
-0:292          'g6' (temp highp 4-component vector of int)\r
-0:292          textureGrad (global highp 4-component vector of int)\r
+0:292          'L6' (temp highp 4-component vector of int)\r
+0:292          textureLod (global highp 4-component vector of int)\r
 0:292            'CA6' (uniform highp isamplerCubeArray)\r
 0:292            Constant:\r
 0:292              0.500000\r
@@ -1495,17 +1498,11 @@ ERROR: node is still EOpNull!
 0:292              0.500000\r
 0:292              0.500000\r
 0:292            Constant:\r
-0:292              0.100000\r
-0:292              0.100000\r
-0:292              0.100000\r
-0:292            Constant:\r
-0:292              0.200000\r
-0:292              0.200000\r
-0:292              0.200000\r
+0:292              0.260000\r
 0:293      Sequence\r
 0:293        move second child to first child (temp highp 4-component vector of uint)\r
-0:293          'g7' (temp highp 4-component vector of uint)\r
-0:293          textureGrad (global highp 4-component vector of uint)\r
+0:293          'L7' (temp highp 4-component vector of uint)\r
+0:293          textureLod (global highp 4-component vector of uint)\r
 0:293            'CA7' (uniform highp usamplerCubeArray)\r
 0:293            Constant:\r
 0:293              0.500000\r
@@ -1513,241 +1510,331 @@ ERROR: node is still EOpNull!
 0:293              0.500000\r
 0:293              0.500000\r
 0:293            Constant:\r
-0:293              0.100000\r
-0:293              0.100000\r
-0:293              0.100000\r
-0:293            Constant:\r
-0:293              0.200000\r
-0:293              0.200000\r
-0:293              0.200000\r
+0:293              0.270000\r
 0:295      Sequence\r
 0:295        move second child to first child (temp highp 4-component vector of float)\r
-0:295          'gath4' (temp highp 4-component vector of float)\r
-0:295          textureGather (global highp 4-component vector of float)\r
+0:295          'g4' (temp highp 4-component vector of float)\r
+0:295          textureGrad (global highp 4-component vector of float)\r
 0:295            'CA4' (uniform highp samplerCubeArray)\r
 0:295            Constant:\r
 0:295              0.500000\r
 0:295              0.500000\r
 0:295              0.500000\r
 0:295              0.500000\r
+0:295            Constant:\r
+0:295              0.100000\r
+0:295              0.100000\r
+0:295              0.100000\r
+0:295            Constant:\r
+0:295              0.200000\r
+0:295              0.200000\r
+0:295              0.200000\r
 0:296      Sequence\r
-0:296        move second child to first child (temp highp 4-component vector of float)\r
-0:296          'gathC4' (temp highp 4-component vector of float)\r
-0:296          textureGather (global highp 4-component vector of float)\r
-0:296            'CA4' (uniform highp samplerCubeArray)\r
+0:296        move second child to first child (temp highp 4-component vector of int)\r
+0:296          'g6' (temp highp 4-component vector of int)\r
+0:296          textureGrad (global highp 4-component vector of int)\r
+0:296            'CA6' (uniform highp isamplerCubeArray)\r
 0:296            Constant:\r
 0:296              0.500000\r
 0:296              0.500000\r
 0:296              0.500000\r
 0:296              0.500000\r
 0:296            Constant:\r
-0:296              2 (const int)\r
+0:296              0.100000\r
+0:296              0.100000\r
+0:296              0.100000\r
+0:296            Constant:\r
+0:296              0.200000\r
+0:296              0.200000\r
+0:296              0.200000\r
 0:297      Sequence\r
-0:297        move second child to first child (temp highp 4-component vector of int)\r
-0:297          'gath6' (temp highp 4-component vector of int)\r
-0:297          textureGather (global highp 4-component vector of int)\r
-0:297            'CA6' (uniform highp isamplerCubeArray)\r
+0:297        move second child to first child (temp highp 4-component vector of uint)\r
+0:297          'g7' (temp highp 4-component vector of uint)\r
+0:297          textureGrad (global highp 4-component vector of uint)\r
+0:297            'CA7' (uniform highp usamplerCubeArray)\r
 0:297            Constant:\r
 0:297              0.500000\r
 0:297              0.500000\r
 0:297              0.500000\r
 0:297              0.500000\r
-0:298      Sequence\r
-0:298        move second child to first child (temp highp 4-component vector of int)\r
-0:298          'gathC6' (temp highp 4-component vector of int)\r
-0:298          textureGather (global highp 4-component vector of int)\r
-0:298            'CA6' (uniform highp isamplerCubeArray)\r
-0:298            Constant:\r
-0:298              0.500000\r
-0:298              0.500000\r
-0:298              0.500000\r
-0:298              0.500000\r
-0:298            Constant:\r
-0:298              1 (const int)\r
+0:297            Constant:\r
+0:297              0.100000\r
+0:297              0.100000\r
+0:297              0.100000\r
+0:297            Constant:\r
+0:297              0.200000\r
+0:297              0.200000\r
+0:297              0.200000\r
 0:299      Sequence\r
-0:299        move second child to first child (temp highp 4-component vector of uint)\r
-0:299          'gath7' (temp highp 4-component vector of uint)\r
-0:299          textureGather (global highp 4-component vector of uint)\r
-0:299            'CA7' (uniform highp usamplerCubeArray)\r
+0:299        move second child to first child (temp highp 4-component vector of float)\r
+0:299          'gath4' (temp highp 4-component vector of float)\r
+0:299          textureGather (global highp 4-component vector of float)\r
+0:299            'CA4' (uniform highp samplerCubeArray)\r
 0:299            Constant:\r
 0:299              0.500000\r
 0:299              0.500000\r
 0:299              0.500000\r
 0:299              0.500000\r
 0:300      Sequence\r
-0:300        move second child to first child (temp highp 4-component vector of uint)\r
-0:300          'gathC7' (temp highp 4-component vector of uint)\r
-0:300          textureGather (global highp 4-component vector of uint)\r
-0:300            'CA7' (uniform highp usamplerCubeArray)\r
+0:300        move second child to first child (temp highp 4-component vector of float)\r
+0:300          'gathC4' (temp highp 4-component vector of float)\r
+0:300          textureGather (global highp 4-component vector of float)\r
+0:300            'CA4' (uniform highp samplerCubeArray)\r
 0:300            Constant:\r
 0:300              0.500000\r
 0:300              0.500000\r
 0:300              0.500000\r
 0:300              0.500000\r
 0:300            Constant:\r
-0:300              0 (const int)\r
+0:300              2 (const int)\r
+0:301      Sequence\r
+0:301        move second child to first child (temp highp 4-component vector of int)\r
+0:301          'gath6' (temp highp 4-component vector of int)\r
+0:301          textureGather (global highp 4-component vector of int)\r
+0:301            'CA6' (uniform highp isamplerCubeArray)\r
+0:301            Constant:\r
+0:301              0.500000\r
+0:301              0.500000\r
+0:301              0.500000\r
+0:301              0.500000\r
 0:302      Sequence\r
-0:302        move second child to first child (temp highp 4-component vector of float)\r
-0:302          'gath5' (temp highp 4-component vector of float)\r
-0:302          textureGather (global highp 4-component vector of float)\r
-0:302            'CA5' (uniform highp samplerCubeArrayShadow)\r
+0:302        move second child to first child (temp highp 4-component vector of int)\r
+0:302          'gathC6' (temp highp 4-component vector of int)\r
+0:302          textureGather (global highp 4-component vector of int)\r
+0:302            'CA6' (uniform highp isamplerCubeArray)\r
 0:302            Constant:\r
 0:302              0.500000\r
 0:302              0.500000\r
 0:302              0.500000\r
 0:302              0.500000\r
 0:302            Constant:\r
-0:302              2.500000\r
+0:302              1 (const int)\r
+0:303      Sequence\r
+0:303        move second child to first child (temp highp 4-component vector of uint)\r
+0:303          'gath7' (temp highp 4-component vector of uint)\r
+0:303          textureGather (global highp 4-component vector of uint)\r
+0:303            'CA7' (uniform highp usamplerCubeArray)\r
+0:303            Constant:\r
+0:303              0.500000\r
+0:303              0.500000\r
+0:303              0.500000\r
+0:303              0.500000\r
 0:304      Sequence\r
-0:304        move second child to first child (temp highp 3-component vector of int)\r
-0:304          's1' (temp highp 3-component vector of int)\r
-0:304          imageQuerySize (global highp 3-component vector of int)\r
-0:304            'CA1' (writeonly uniform highp imageCubeArray)\r
-0:305      Sequence\r
-0:305        move second child to first child (temp highp 3-component vector of int)\r
-0:305          's2' (temp highp 3-component vector of int)\r
-0:305          imageQuerySize (global highp 3-component vector of int)\r
-0:305            'CA2' (writeonly uniform highp iimageCubeArray)\r
+0:304        move second child to first child (temp highp 4-component vector of uint)\r
+0:304          'gathC7' (temp highp 4-component vector of uint)\r
+0:304          textureGather (global highp 4-component vector of uint)\r
+0:304            'CA7' (uniform highp usamplerCubeArray)\r
+0:304            Constant:\r
+0:304              0.500000\r
+0:304              0.500000\r
+0:304              0.500000\r
+0:304              0.500000\r
+0:304            Constant:\r
+0:304              0 (const int)\r
 0:306      Sequence\r
-0:306        move second child to first child (temp highp 3-component vector of int)\r
-0:306          's3' (temp highp 3-component vector of int)\r
-0:306          imageQuerySize (global highp 3-component vector of int)\r
-0:306            'CA3' (writeonly uniform highp uimageCubeArray)\r
-0:331  Function Definition: MSA( (global void)\r
-0:331    Function Parameters: \r
-0:333    Sequence\r
-0:333      Sequence\r
-0:333        move second child to first child (temp highp 4-component vector of float)\r
-0:333          'tf' (temp highp 4-component vector of float)\r
-0:333          textureFetch (global highp 4-component vector of float)\r
-0:333            'samp2DMSA' (uniform highp sampler2DMSArray)\r
-0:333            Constant:\r
-0:333              5 (const int)\r
-0:333              5 (const int)\r
-0:333              5 (const int)\r
-0:333            Constant:\r
-0:333              2 (const int)\r
-0:334      Sequence\r
-0:334        move second child to first child (temp highp 4-component vector of int)\r
-0:334          'tfi' (temp highp 4-component vector of int)\r
-0:334          textureFetch (global highp 4-component vector of int)\r
-0:334            'samp2DMSAi' (uniform highp isampler2DMSArray)\r
-0:334            Constant:\r
-0:334              5 (const int)\r
-0:334              5 (const int)\r
-0:334              5 (const int)\r
-0:334            Constant:\r
-0:334              2 (const int)\r
-0:335      Sequence\r
-0:335        move second child to first child (temp highp 4-component vector of uint)\r
-0:335          'tfu' (temp highp 4-component vector of uint)\r
-0:335          textureFetch (global highp 4-component vector of uint)\r
-0:335            'samp2DMSAu' (uniform highp usampler2DMSArray)\r
-0:335            Constant:\r
-0:335              5 (const int)\r
-0:335              5 (const int)\r
-0:335              5 (const int)\r
-0:335            Constant:\r
-0:335              2 (const int)\r
-0:337      Sequence\r
-0:337        move second child to first child (temp highp 3-component vector of int)\r
-0:337          'tfs' (temp highp 3-component vector of int)\r
-0:337          textureSize (global highp 3-component vector of int)\r
-0:337            'samp2DMSA' (uniform highp sampler2DMSArray)\r
-0:338      Sequence\r
-0:338        move second child to first child (temp highp 3-component vector of int)\r
-0:338          'tfsi' (temp highp 3-component vector of int)\r
-0:338          textureSize (global highp 3-component vector of int)\r
-0:338            'samp2DMSAi' (uniform highp isampler2DMSArray)\r
-0:340      Sequence\r
-0:340        move second child to first child (temp highp 3-component vector of int)\r
-0:340          'tfsu' (temp highp 3-component vector of int)\r
-0:340          textureSize (global highp 3-component vector of int)\r
-0:340            'samp2DMSAu' (uniform highp usampler2DMSArray)\r
-0:352  Function Definition: goodImageAtom( (global void)\r
-0:352    Function Parameters: \r
+0:306        move second child to first child (temp highp 4-component vector of float)\r
+0:306          'gath5' (temp highp 4-component vector of float)\r
+0:306          textureGather (global highp 4-component vector of float)\r
+0:306            'CA5' (uniform highp samplerCubeArrayShadow)\r
+0:306            Constant:\r
+0:306              0.500000\r
+0:306              0.500000\r
+0:306              0.500000\r
+0:306              0.500000\r
+0:306            Constant:\r
+0:306              2.500000\r
+0:308      Sequence\r
+0:308        move second child to first child (temp highp 3-component vector of int)\r
+0:308          's1' (temp highp 3-component vector of int)\r
+0:308          imageQuerySize (global highp 3-component vector of int)\r
+0:308            'CA1' (writeonly uniform highp imageCubeArray)\r
+0:309      Sequence\r
+0:309        move second child to first child (temp highp 3-component vector of int)\r
+0:309          's2' (temp highp 3-component vector of int)\r
+0:309          imageQuerySize (global highp 3-component vector of int)\r
+0:309            'CA2' (writeonly uniform highp iimageCubeArray)\r
+0:310      Sequence\r
+0:310        move second child to first child (temp highp 3-component vector of int)\r
+0:310          's3' (temp highp 3-component vector of int)\r
+0:310          imageQuerySize (global highp 3-component vector of int)\r
+0:310            'CA3' (writeonly uniform highp uimageCubeArray)\r
+0:312      imageStore (global highp void)\r
+0:312        'CA1' (writeonly uniform highp imageCubeArray)\r
+0:312        's3' (temp highp 3-component vector of int)\r
+0:312        Constant:\r
+0:312          1.000000\r
+0:312          1.000000\r
+0:312          1.000000\r
+0:312          1.000000\r
+0:313      imageStore (global highp void)\r
+0:313        'CA2' (writeonly uniform highp iimageCubeArray)\r
+0:313        's3' (temp highp 3-component vector of int)\r
+0:313        Constant:\r
+0:313          1 (const int)\r
+0:313          1 (const int)\r
+0:313          1 (const int)\r
+0:313          1 (const int)\r
+0:314      imageStore (global highp void)\r
+0:314        'CA3' (writeonly uniform highp uimageCubeArray)\r
+0:314        's3' (temp highp 3-component vector of int)\r
+0:314        Constant:\r
+0:314          1 (const uint)\r
+0:314          1 (const uint)\r
+0:314          1 (const uint)\r
+0:314          1 (const uint)\r
+0:316      Sequence\r
+0:316        move second child to first child (temp highp 4-component vector of float)\r
+0:316          'cl1' (temp highp 4-component vector of float)\r
+0:316          imageLoad (global highp 4-component vector of float)\r
+0:316            'rCA1' (layout(rgba16f ) readonly uniform highp imageCubeArray)\r
+0:316            's3' (temp highp 3-component vector of int)\r
+0:317      Sequence\r
+0:317        move second child to first child (temp highp 4-component vector of int)\r
+0:317          'cl2' (temp highp 4-component vector of int)\r
+0:317          imageLoad (global highp 4-component vector of int)\r
+0:317            'rCA2' (layout(rgba32i ) readonly uniform highp iimageCubeArray)\r
+0:317            's3' (temp highp 3-component vector of int)\r
+0:318      Sequence\r
+0:318        move second child to first child (temp highp 4-component vector of uint)\r
+0:318          'cl3' (temp highp 4-component vector of uint)\r
+0:318          imageLoad (global highp 4-component vector of uint)\r
+0:318            'rCA3' (layout(r32ui ) readonly uniform highp uimageCubeArray)\r
+0:318            's3' (temp highp 3-component vector of int)\r
+0:343  Function Definition: MSA( (global void)\r
+0:343    Function Parameters: \r
+0:345    Sequence\r
+0:345      Sequence\r
+0:345        move second child to first child (temp highp 4-component vector of float)\r
+0:345          'tf' (temp highp 4-component vector of float)\r
+0:345          textureFetch (global highp 4-component vector of float)\r
+0:345            'samp2DMSA' (uniform highp sampler2DMSArray)\r
+0:345            Constant:\r
+0:345              5 (const int)\r
+0:345              5 (const int)\r
+0:345              5 (const int)\r
+0:345            Constant:\r
+0:345              2 (const int)\r
+0:346      Sequence\r
+0:346        move second child to first child (temp highp 4-component vector of int)\r
+0:346          'tfi' (temp highp 4-component vector of int)\r
+0:346          textureFetch (global highp 4-component vector of int)\r
+0:346            'samp2DMSAi' (uniform highp isampler2DMSArray)\r
+0:346            Constant:\r
+0:346              5 (const int)\r
+0:346              5 (const int)\r
+0:346              5 (const int)\r
+0:346            Constant:\r
+0:346              2 (const int)\r
+0:347      Sequence\r
+0:347        move second child to first child (temp highp 4-component vector of uint)\r
+0:347          'tfu' (temp highp 4-component vector of uint)\r
+0:347          textureFetch (global highp 4-component vector of uint)\r
+0:347            'samp2DMSAu' (uniform highp usampler2DMSArray)\r
+0:347            Constant:\r
+0:347              5 (const int)\r
+0:347              5 (const int)\r
+0:347              5 (const int)\r
+0:347            Constant:\r
+0:347              2 (const int)\r
+0:349      Sequence\r
+0:349        move second child to first child (temp highp 3-component vector of int)\r
+0:349          'tfs' (temp highp 3-component vector of int)\r
+0:349          textureSize (global highp 3-component vector of int)\r
+0:349            'samp2DMSA' (uniform highp sampler2DMSArray)\r
+0:350      Sequence\r
+0:350        move second child to first child (temp highp 3-component vector of int)\r
+0:350          'tfsi' (temp highp 3-component vector of int)\r
+0:350          textureSize (global highp 3-component vector of int)\r
+0:350            'samp2DMSAi' (uniform highp isampler2DMSArray)\r
+0:352      Sequence\r
+0:352        move second child to first child (temp highp 3-component vector of int)\r
+0:352          'tfsu' (temp highp 3-component vector of int)\r
+0:352          textureSize (global highp 3-component vector of int)\r
+0:352            'samp2DMSAu' (uniform highp usampler2DMSArray)\r
+0:364  Function Definition: goodImageAtom( (global void)\r
+0:364    Function Parameters: \r
 0:?     Sequence\r
-0:358      imageAtomicAdd (global highp int)\r
-0:358        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:358        'P' (uniform highp 2-component vector of int)\r
-0:358        'dati' (temp highp int)\r
-0:359      imageAtomicAdd (global highp uint)\r
-0:359        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:359        'P' (uniform highp 2-component vector of int)\r
-0:359        'datu' (temp highp uint)\r
-0:360      imageAtomicMin (global highp int)\r
-0:360        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:360        'P' (uniform highp 2-component vector of int)\r
-0:360        'dati' (temp highp int)\r
-0:361      imageAtomicMin (global highp uint)\r
-0:361        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:361        'P' (uniform highp 2-component vector of int)\r
-0:361        'datu' (temp highp uint)\r
-0:362      imageAtomicMax (global highp int)\r
-0:362        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:362        'P' (uniform highp 2-component vector of int)\r
-0:362        'dati' (temp highp int)\r
-0:363      imageAtomicMax (global highp uint)\r
-0:363        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:363        'P' (uniform highp 2-component vector of int)\r
-0:363        'datu' (temp highp uint)\r
-0:364      imageAtomicAnd (global highp int)\r
-0:364        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:364        'P' (uniform highp 2-component vector of int)\r
-0:364        'dati' (temp highp int)\r
-0:365      imageAtomicAnd (global highp uint)\r
-0:365        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:365        'P' (uniform highp 2-component vector of int)\r
-0:365        'datu' (temp highp uint)\r
-0:366      imageAtomicOr (global highp int)\r
-0:366        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:366        'P' (uniform highp 2-component vector of int)\r
-0:366        'dati' (temp highp int)\r
-0:367      imageAtomicOr (global highp uint)\r
-0:367        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:367        'P' (uniform highp 2-component vector of int)\r
-0:367        'datu' (temp highp uint)\r
-0:368      imageAtomicXor (global highp int)\r
-0:368        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
-0:368        'P' (uniform highp 2-component vector of int)\r
-0:368        'dati' (temp highp int)\r
-0:369      imageAtomicXor (global highp uint)\r
-0:369        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
-0:369        'P' (uniform highp 2-component vector of int)\r
-0:369        'datu' (temp highp uint)\r
-0:370      imageAtomicExchange (global highp int)\r
+0:370      imageAtomicAdd (global highp int)\r
 0:370        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
 0:370        'P' (uniform highp 2-component vector of int)\r
 0:370        'dati' (temp highp int)\r
-0:371      imageAtomicExchange (global highp uint)\r
+0:371      imageAtomicAdd (global highp uint)\r
 0:371        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
 0:371        'P' (uniform highp 2-component vector of int)\r
 0:371        'datu' (temp highp uint)\r
-0:372      imageAtomicExchange (global highp float)\r
-0:372        'im2Df' (layout(r32f ) uniform highp image2D)\r
+0:372      imageAtomicMin (global highp int)\r
+0:372        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
 0:372        'P' (uniform highp 2-component vector of int)\r
-0:372        'datf' (temp highp float)\r
-0:373      imageAtomicCompSwap (global highp int)\r
-0:373        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:372        'dati' (temp highp int)\r
+0:373      imageAtomicMin (global highp uint)\r
+0:373        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
 0:373        'P' (uniform highp 2-component vector of int)\r
-0:373        Constant:\r
-0:373          3 (const int)\r
-0:373        'dati' (temp highp int)\r
-0:374      imageAtomicCompSwap (global highp uint)\r
-0:374        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:373        'datu' (temp highp uint)\r
+0:374      imageAtomicMax (global highp int)\r
+0:374        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
 0:374        'P' (uniform highp 2-component vector of int)\r
-0:374        Constant:\r
-0:374          5 (const uint)\r
-0:374        'datu' (temp highp uint)\r
-0:386  Function Definition: badInterp( (global void)\r
-0:386    Function Parameters: \r
-0:388    Sequence\r
-0:388      Constant:\r
-0:388        0.000000\r
-0:389      Constant:\r
-0:389        0.000000\r
-0:390      Constant:\r
-0:390        0.000000\r
+0:374        'dati' (temp highp int)\r
+0:375      imageAtomicMax (global highp uint)\r
+0:375        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:375        'P' (uniform highp 2-component vector of int)\r
+0:375        'datu' (temp highp uint)\r
+0:376      imageAtomicAnd (global highp int)\r
+0:376        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:376        'P' (uniform highp 2-component vector of int)\r
+0:376        'dati' (temp highp int)\r
+0:377      imageAtomicAnd (global highp uint)\r
+0:377        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:377        'P' (uniform highp 2-component vector of int)\r
+0:377        'datu' (temp highp uint)\r
+0:378      imageAtomicOr (global highp int)\r
+0:378        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:378        'P' (uniform highp 2-component vector of int)\r
+0:378        'dati' (temp highp int)\r
+0:379      imageAtomicOr (global highp uint)\r
+0:379        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:379        'P' (uniform highp 2-component vector of int)\r
+0:379        'datu' (temp highp uint)\r
+0:380      imageAtomicXor (global highp int)\r
+0:380        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:380        'P' (uniform highp 2-component vector of int)\r
+0:380        'dati' (temp highp int)\r
+0:381      imageAtomicXor (global highp uint)\r
+0:381        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:381        'P' (uniform highp 2-component vector of int)\r
+0:381        'datu' (temp highp uint)\r
+0:382      imageAtomicExchange (global highp int)\r
+0:382        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:382        'P' (uniform highp 2-component vector of int)\r
+0:382        'dati' (temp highp int)\r
+0:383      imageAtomicExchange (global highp uint)\r
+0:383        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:383        'P' (uniform highp 2-component vector of int)\r
+0:383        'datu' (temp highp uint)\r
+0:384      imageAtomicExchange (global highp float)\r
+0:384        'im2Df' (layout(r32f ) uniform highp image2D)\r
+0:384        'P' (uniform highp 2-component vector of int)\r
+0:384        'datf' (temp highp float)\r
+0:385      imageAtomicCompSwap (global highp int)\r
+0:385        'im2Di' (layout(r32i ) uniform highp iimage2D)\r
+0:385        'P' (uniform highp 2-component vector of int)\r
+0:385        Constant:\r
+0:385          3 (const int)\r
+0:385        'dati' (temp highp int)\r
+0:386      imageAtomicCompSwap (global highp uint)\r
+0:386        'im2Du' (layout(r32ui ) uniform highp uimage2D)\r
+0:386        'P' (uniform highp 2-component vector of int)\r
+0:386        Constant:\r
+0:386          5 (const uint)\r
+0:386        'datu' (temp highp uint)\r
+0:398  Function Definition: badInterp( (global void)\r
+0:398    Function Parameters: \r
+0:400    Sequence\r
+0:400      Constant:\r
+0:400        0.000000\r
+0:401      Constant:\r
+0:401        0.000000\r
+0:402      Constant:\r
+0:402        0.000000\r
 0:?   Linker Objects\r
 0:?     's' (shared highp 4-component vector of float)\r
 0:?     'v' (buffer highp 4-component vector of float)\r
@@ -1832,6 +1919,9 @@ ERROR: node is still EOpNull!
 0:?     'CA1' (writeonly uniform highp imageCubeArray)\r
 0:?     'CA2' (writeonly uniform highp iimageCubeArray)\r
 0:?     'CA3' (writeonly uniform highp uimageCubeArray)\r
+0:?     'rCA1' (layout(rgba16f ) readonly uniform highp imageCubeArray)\r
+0:?     'rCA2' (layout(rgba32i ) readonly uniform highp iimageCubeArray)\r
+0:?     'rCA3' (layout(r32ui ) readonly uniform highp uimageCubeArray)\r
 0:?     'CA4' (uniform highp samplerCubeArray)\r
 0:?     'CA5' (uniform highp samplerCubeArrayShadow)\r
 0:?     'CA6' (uniform highp isamplerCubeArray)\r
index f5874ed..40258ba 100644 (file)
@@ -32,12 +32,12 @@ Linked fragment stage:
                               Name 133  "ic1D"\r
                               Name 143  "ic2D"\r
                               Name 153  "ic3D"\r
-                              Name 172  "ic4D"\r
-                              Name 234  "ui"\r
-                              Name 238  "ii1D"\r
-                              Name 252  "ui2D"\r
-                              Name 255  "value"\r
-                              Name 370  "fragData"\r
+                              Name 231  "ui"\r
+                              Name 235  "ii1D"\r
+                              Name 249  "ui2D"\r
+                              Name 252  "value"\r
+                              Name 367  "fragData"\r
+                              Name 382  "ic4D"\r
                               Decorate 15(i1D) Binding 0\r
                               Decorate 25(i2D) Binding 1\r
                               Decorate 36(i3D) Binding 2\r
@@ -49,8 +49,9 @@ Linked fragment stage:
                               Decorate 87(iBuffer) Binding 8\r
                               Decorate 97(i2DMS) Binding 9\r
                               Decorate 107(i2DMSArray) Binding 10\r
-                              Decorate 238(ii1D) Binding 11\r
-                              Decorate 252(ui2D) Binding 12\r
+                              Decorate 235(ii1D) Binding 11\r
+                              Decorate 249(ui2D) Binding 12\r
+                              Decorate 382(ic4D) NoStaticUse\r
                2:             TypeVoid\r
                3:             TypeFunction 2\r
                6:             TypeInt 32 1\r
@@ -103,46 +104,46 @@ Linked fragment stage:
        143(ic2D):    142(ptr) Variable UniformConstant\r
              152:             TypePointer UniformConstant 7(ivec3)\r
        153(ic3D):    152(ptr) Variable UniformConstant\r
-             170:             TypeVector 6(int) 4\r
-             171:             TypePointer UniformConstant 170(ivec4)\r
-       172(ic4D):    171(ptr) Variable UniformConstant\r
-             214:      6(int) Constant 1\r
-             220:      6(int) Constant 2\r
-             224:      6(int) Constant 3\r
-             230:      6(int) Constant 4\r
-             232:             TypeInt 32 0\r
-             233:             TypePointer Function 232(int)\r
-             235:    232(int) Constant 0\r
-             236:             TypeImage 6(int) 1D nonsampled format:R32i\r
-             237:             TypePointer UniformConstant 236\r
-       238(ii1D):    237(ptr) Variable UniformConstant\r
-             240:      6(int) Constant 10\r
-             241:             TypePointer Image 6(int)\r
-             243:    232(int) Constant 1\r
-             250:             TypeImage 232(int) 2D nonsampled format:R32ui\r
-             251:             TypePointer UniformConstant 250\r
-       252(ui2D):    251(ptr) Variable UniformConstant\r
-             254:             TypePointer UniformConstant 232(int)\r
-      255(value):    254(ptr) Variable UniformConstant\r
-             257:             TypePointer Image 232(int)\r
-             263:      6(int) Constant 11\r
-             278:      6(int) Constant 12\r
-             293:      6(int) Constant 13\r
-             308:      6(int) Constant 14\r
-             323:      6(int) Constant 15\r
-             338:      6(int) Constant 16\r
-             353:      6(int) Constant 18\r
-             354:      6(int) Constant 17\r
-             363:    232(int) Constant 19\r
-             369:             TypePointer Output 126(fvec4)\r
-   370(fragData):    369(ptr) Variable Output\r
-             376:             TypeBool\r
+             211:      6(int) Constant 1\r
+             217:      6(int) Constant 2\r
+             221:      6(int) Constant 3\r
+             227:      6(int) Constant 4\r
+             229:             TypeInt 32 0\r
+             230:             TypePointer Function 229(int)\r
+             232:    229(int) Constant 0\r
+             233:             TypeImage 6(int) 1D nonsampled format:R32i\r
+             234:             TypePointer UniformConstant 233\r
+       235(ii1D):    234(ptr) Variable UniformConstant\r
+             237:      6(int) Constant 10\r
+             238:             TypePointer Image 6(int)\r
+             240:    229(int) Constant 1\r
+             247:             TypeImage 229(int) 2D nonsampled format:R32ui\r
+             248:             TypePointer UniformConstant 247\r
+       249(ui2D):    248(ptr) Variable UniformConstant\r
+             251:             TypePointer UniformConstant 229(int)\r
+      252(value):    251(ptr) Variable UniformConstant\r
+             254:             TypePointer Image 229(int)\r
+             260:      6(int) Constant 11\r
+             275:      6(int) Constant 12\r
+             290:      6(int) Constant 13\r
+             305:      6(int) Constant 14\r
+             320:      6(int) Constant 15\r
+             335:      6(int) Constant 16\r
+             350:      6(int) Constant 18\r
+             351:      6(int) Constant 17\r
+             360:    229(int) Constant 19\r
+             366:             TypePointer Output 126(fvec4)\r
+   367(fragData):    366(ptr) Variable Output\r
+             373:             TypeBool\r
+             380:             TypeVector 6(int) 4\r
+             381:             TypePointer UniformConstant 380(ivec4)\r
+       382(ic4D):    381(ptr) Variable UniformConstant\r
          4(main):           2 Function None 3\r
                5:             Label\r
            9(iv):      8(ptr) Variable Function\r
           128(v):    127(ptr) Variable Function\r
-         234(ui):    233(ptr) Variable Function\r
-             371:    127(ptr) Variable Function\r
+         231(ui):    230(ptr) Variable Function\r
+             368:    127(ptr) Variable Function\r
                               Store 9(iv) 11\r
               16:          13 Load 15(i1D)\r
               17:      6(int) ImageQuerySize 16\r
@@ -278,220 +279,220 @@ Linked fragment stage:
              168:  126(fvec4) Load 128(v)\r
                               ImageWrite 166 167 168\r
              169:          51 Load 53(iCubeArray)\r
-             173:  170(ivec4) Load 172(ic4D)\r
-             174:  126(fvec4) ImageRead 169 173\r
-             175:  126(fvec4) Load 128(v)\r
-             176:  126(fvec4) FAdd 175 174\r
-                              Store 128(v) 176\r
-             177:          51 Load 53(iCubeArray)\r
-             178:  170(ivec4) Load 172(ic4D)\r
-             179:  126(fvec4) Load 128(v)\r
-                              ImageWrite 177 178 179\r
-             180:          58 Load 60(i2DRect)\r
-             181:   27(ivec2) Load 143(ic2D)\r
-             182:  126(fvec4) ImageRead 180 181\r
-             183:  126(fvec4) Load 128(v)\r
-             184:  126(fvec4) FAdd 183 182\r
-                              Store 128(v) 184\r
-             185:          58 Load 60(i2DRect)\r
+             170:    7(ivec3) Load 153(ic3D)\r
+             171:  126(fvec4) ImageRead 169 170\r
+             172:  126(fvec4) Load 128(v)\r
+             173:  126(fvec4) FAdd 172 171\r
+                              Store 128(v) 173\r
+             174:          51 Load 53(iCubeArray)\r
+             175:    7(ivec3) Load 153(ic3D)\r
+             176:  126(fvec4) Load 128(v)\r
+                              ImageWrite 174 175 176\r
+             177:          58 Load 60(i2DRect)\r
+             178:   27(ivec2) Load 143(ic2D)\r
+             179:  126(fvec4) ImageRead 177 178\r
+             180:  126(fvec4) Load 128(v)\r
+             181:  126(fvec4) FAdd 180 179\r
+                              Store 128(v) 181\r
+             182:          58 Load 60(i2DRect)\r
+             183:   27(ivec2) Load 143(ic2D)\r
+             184:  126(fvec4) Load 128(v)\r
+                              ImageWrite 182 183 184\r
+             185:          68 Load 70(i1DArray)\r
              186:   27(ivec2) Load 143(ic2D)\r
-             187:  126(fvec4) Load 128(v)\r
-                              ImageWrite 185 186 187\r
-             188:          68 Load 70(i1DArray)\r
-             189:   27(ivec2) Load 143(ic2D)\r
-             190:  126(fvec4) ImageRead 188 189\r
-             191:  126(fvec4) Load 128(v)\r
-             192:  126(fvec4) FAdd 191 190\r
-                              Store 128(v) 192\r
-             193:          68 Load 70(i1DArray)\r
-             194:   27(ivec2) Load 143(ic2D)\r
-             195:  126(fvec4) Load 128(v)\r
-                              ImageWrite 193 194 195\r
-             196:          78 Load 80(i2DArray)\r
-             197:    7(ivec3) Load 153(ic3D)\r
-             198:  126(fvec4) ImageRead 196 197\r
-             199:  126(fvec4) Load 128(v)\r
-             200:  126(fvec4) FAdd 199 198\r
-                              Store 128(v) 200\r
-             201:          78 Load 80(i2DArray)\r
-             202:    7(ivec3) Load 153(ic3D)\r
-             203:  126(fvec4) Load 128(v)\r
-                              ImageWrite 201 202 203\r
-             204:          85 Load 87(iBuffer)\r
-             205:      6(int) Load 133(ic1D)\r
-             206:  126(fvec4) ImageRead 204 205\r
-             207:  126(fvec4) Load 128(v)\r
-             208:  126(fvec4) FAdd 207 206\r
-                              Store 128(v) 208\r
-             209:          85 Load 87(iBuffer)\r
-             210:      6(int) Load 133(ic1D)\r
-             211:  126(fvec4) Load 128(v)\r
-                              ImageWrite 209 210 211\r
-             212:          95 Load 97(i2DMS)\r
-             213:   27(ivec2) Load 143(ic2D)\r
-             215:  126(fvec4) ImageRead 212 213\r
-             216:  126(fvec4) Load 128(v)\r
-             217:  126(fvec4) FAdd 216 215\r
-                              Store 128(v) 217\r
-             218:          95 Load 97(i2DMS)\r
-             219:   27(ivec2) Load 143(ic2D)\r
-             221:  126(fvec4) Load 128(v)\r
-                              ImageWrite 218 219 220\r
-             222:         105 Load 107(i2DMSArray)\r
-             223:    7(ivec3) Load 153(ic3D)\r
-             225:  126(fvec4) ImageRead 222 223\r
-             226:  126(fvec4) Load 128(v)\r
-             227:  126(fvec4) FAdd 226 225\r
-                              Store 128(v) 227\r
-             228:         105 Load 107(i2DMSArray)\r
-             229:    7(ivec3) Load 153(ic3D)\r
-             231:  126(fvec4) Load 128(v)\r
-                              ImageWrite 228 229 230\r
-                              Store 234(ui) 235\r
-             239:      6(int) Load 133(ic1D)\r
-             242:    241(ptr) ImageTexelPointer 238(ii1D) 239 0\r
-             244:      6(int) AtomicIAdd 242 243 235 240\r
+             187:  126(fvec4) ImageRead 185 186\r
+             188:  126(fvec4) Load 128(v)\r
+             189:  126(fvec4) FAdd 188 187\r
+                              Store 128(v) 189\r
+             190:          68 Load 70(i1DArray)\r
+             191:   27(ivec2) Load 143(ic2D)\r
+             192:  126(fvec4) Load 128(v)\r
+                              ImageWrite 190 191 192\r
+             193:          78 Load 80(i2DArray)\r
+             194:    7(ivec3) Load 153(ic3D)\r
+             195:  126(fvec4) ImageRead 193 194\r
+             196:  126(fvec4) Load 128(v)\r
+             197:  126(fvec4) FAdd 196 195\r
+                              Store 128(v) 197\r
+             198:          78 Load 80(i2DArray)\r
+             199:    7(ivec3) Load 153(ic3D)\r
+             200:  126(fvec4) Load 128(v)\r
+                              ImageWrite 198 199 200\r
+             201:          85 Load 87(iBuffer)\r
+             202:      6(int) Load 133(ic1D)\r
+             203:  126(fvec4) ImageRead 201 202\r
+             204:  126(fvec4) Load 128(v)\r
+             205:  126(fvec4) FAdd 204 203\r
+                              Store 128(v) 205\r
+             206:          85 Load 87(iBuffer)\r
+             207:      6(int) Load 133(ic1D)\r
+             208:  126(fvec4) Load 128(v)\r
+                              ImageWrite 206 207 208\r
+             209:          95 Load 97(i2DMS)\r
+             210:   27(ivec2) Load 143(ic2D)\r
+             212:  126(fvec4) ImageRead 209 210\r
+             213:  126(fvec4) Load 128(v)\r
+             214:  126(fvec4) FAdd 213 212\r
+                              Store 128(v) 214\r
+             215:          95 Load 97(i2DMS)\r
+             216:   27(ivec2) Load 143(ic2D)\r
+             218:  126(fvec4) Load 128(v)\r
+                              ImageWrite 215 216 217\r
+             219:         105 Load 107(i2DMSArray)\r
+             220:    7(ivec3) Load 153(ic3D)\r
+             222:  126(fvec4) ImageRead 219 220\r
+             223:  126(fvec4) Load 128(v)\r
+             224:  126(fvec4) FAdd 223 222\r
+                              Store 128(v) 224\r
+             225:         105 Load 107(i2DMSArray)\r
+             226:    7(ivec3) Load 153(ic3D)\r
+             228:  126(fvec4) Load 128(v)\r
+                              ImageWrite 225 226 227\r
+                              Store 231(ui) 232\r
+             236:      6(int) Load 133(ic1D)\r
+             239:    238(ptr) ImageTexelPointer 235(ii1D) 236 0\r
+             241:      6(int) AtomicIAdd 239 240 232 237\r
+             242:    7(ivec3) Load 9(iv)\r
+             243:      6(int) CompositeExtract 242 0\r
+             244:      6(int) IAdd 243 241\r
              245:    7(ivec3) Load 9(iv)\r
-             246:      6(int) CompositeExtract 245 0\r
-             247:      6(int) IAdd 246 244\r
-             248:    7(ivec3) Load 9(iv)\r
-             249:    7(ivec3) CompositeInsert 247 248 0\r
-                              Store 9(iv) 249\r
-             253:   27(ivec2) Load 143(ic2D)\r
-             256:    232(int) Load 255(value)\r
-             258:    257(ptr) ImageTexelPointer 252(ui2D) 253 0\r
-             259:    232(int) AtomicIAdd 258 243 235 256\r
-             260:    232(int) Load 234(ui)\r
-             261:    232(int) IAdd 260 259\r
-                              Store 234(ui) 261\r
-             262:      6(int) Load 133(ic1D)\r
-             264:    241(ptr) ImageTexelPointer 238(ii1D) 262 0\r
-             265:      6(int) AtomicSMin 264 243 235 263\r
+             246:    7(ivec3) CompositeInsert 244 245 0\r
+                              Store 9(iv) 246\r
+             250:   27(ivec2) Load 143(ic2D)\r
+             253:    229(int) Load 252(value)\r
+             255:    254(ptr) ImageTexelPointer 249(ui2D) 250 0\r
+             256:    229(int) AtomicIAdd 255 240 232 253\r
+             257:    229(int) Load 231(ui)\r
+             258:    229(int) IAdd 257 256\r
+                              Store 231(ui) 258\r
+             259:      6(int) Load 133(ic1D)\r
+             261:    238(ptr) ImageTexelPointer 235(ii1D) 259 0\r
+             262:      6(int) AtomicSMin 261 240 232 260\r
+             263:    7(ivec3) Load 9(iv)\r
+             264:      6(int) CompositeExtract 263 0\r
+             265:      6(int) IAdd 264 262\r
              266:    7(ivec3) Load 9(iv)\r
-             267:      6(int) CompositeExtract 266 0\r
-             268:      6(int) IAdd 267 265\r
-             269:    7(ivec3) Load 9(iv)\r
-             270:    7(ivec3) CompositeInsert 268 269 0\r
-                              Store 9(iv) 270\r
-             271:   27(ivec2) Load 143(ic2D)\r
-             272:    232(int) Load 255(value)\r
-             273:    257(ptr) ImageTexelPointer 252(ui2D) 271 0\r
-             274:    232(int) AtomicUMin 273 243 235 272\r
-             275:    232(int) Load 234(ui)\r
-             276:    232(int) IAdd 275 274\r
-                              Store 234(ui) 276\r
-             277:      6(int) Load 133(ic1D)\r
-             279:    241(ptr) ImageTexelPointer 238(ii1D) 277 0\r
-             280:      6(int) AtomicSMax 279 243 235 278\r
+             267:    7(ivec3) CompositeInsert 265 266 0\r
+                              Store 9(iv) 267\r
+             268:   27(ivec2) Load 143(ic2D)\r
+             269:    229(int) Load 252(value)\r
+             270:    254(ptr) ImageTexelPointer 249(ui2D) 268 0\r
+             271:    229(int) AtomicUMin 270 240 232 269\r
+             272:    229(int) Load 231(ui)\r
+             273:    229(int) IAdd 272 271\r
+                              Store 231(ui) 273\r
+             274:      6(int) Load 133(ic1D)\r
+             276:    238(ptr) ImageTexelPointer 235(ii1D) 274 0\r
+             277:      6(int) AtomicSMax 276 240 232 275\r
+             278:    7(ivec3) Load 9(iv)\r
+             279:      6(int) CompositeExtract 278 0\r
+             280:      6(int) IAdd 279 277\r
              281:    7(ivec3) Load 9(iv)\r
-             282:      6(int) CompositeExtract 281 0\r
-             283:      6(int) IAdd 282 280\r
-             284:    7(ivec3) Load 9(iv)\r
-             285:    7(ivec3) CompositeInsert 283 284 0\r
-                              Store 9(iv) 285\r
-             286:   27(ivec2) Load 143(ic2D)\r
-             287:    232(int) Load 255(value)\r
-             288:    257(ptr) ImageTexelPointer 252(ui2D) 286 0\r
-             289:    232(int) AtomicUMax 288 243 235 287\r
-             290:    232(int) Load 234(ui)\r
-             291:    232(int) IAdd 290 289\r
-                              Store 234(ui) 291\r
-             292:      6(int) Load 133(ic1D)\r
-             294:    241(ptr) ImageTexelPointer 238(ii1D) 292 0\r
-             295:      6(int) AtomicAnd 294 243 235 293\r
+             282:    7(ivec3) CompositeInsert 280 281 0\r
+                              Store 9(iv) 282\r
+             283:   27(ivec2) Load 143(ic2D)\r
+             284:    229(int) Load 252(value)\r
+             285:    254(ptr) ImageTexelPointer 249(ui2D) 283 0\r
+             286:    229(int) AtomicUMax 285 240 232 284\r
+             287:    229(int) Load 231(ui)\r
+             288:    229(int) IAdd 287 286\r
+                              Store 231(ui) 288\r
+             289:      6(int) Load 133(ic1D)\r
+             291:    238(ptr) ImageTexelPointer 235(ii1D) 289 0\r
+             292:      6(int) AtomicAnd 291 240 232 290\r
+             293:    7(ivec3) Load 9(iv)\r
+             294:      6(int) CompositeExtract 293 0\r
+             295:      6(int) IAdd 294 292\r
              296:    7(ivec3) Load 9(iv)\r
-             297:      6(int) CompositeExtract 296 0\r
-             298:      6(int) IAdd 297 295\r
-             299:    7(ivec3) Load 9(iv)\r
-             300:    7(ivec3) CompositeInsert 298 299 0\r
-                              Store 9(iv) 300\r
-             301:   27(ivec2) Load 143(ic2D)\r
-             302:    232(int) Load 255(value)\r
-             303:    257(ptr) ImageTexelPointer 252(ui2D) 301 0\r
-             304:    232(int) AtomicAnd 303 243 235 302\r
-             305:    232(int) Load 234(ui)\r
-             306:    232(int) IAdd 305 304\r
-                              Store 234(ui) 306\r
-             307:      6(int) Load 133(ic1D)\r
-             309:    241(ptr) ImageTexelPointer 238(ii1D) 307 0\r
-             310:      6(int) AtomicOr 309 243 235 308\r
+             297:    7(ivec3) CompositeInsert 295 296 0\r
+                              Store 9(iv) 297\r
+             298:   27(ivec2) Load 143(ic2D)\r
+             299:    229(int) Load 252(value)\r
+             300:    254(ptr) ImageTexelPointer 249(ui2D) 298 0\r
+             301:    229(int) AtomicAnd 300 240 232 299\r
+             302:    229(int) Load 231(ui)\r
+             303:    229(int) IAdd 302 301\r
+                              Store 231(ui) 303\r
+             304:      6(int) Load 133(ic1D)\r
+             306:    238(ptr) ImageTexelPointer 235(ii1D) 304 0\r
+             307:      6(int) AtomicOr 306 240 232 305\r
+             308:    7(ivec3) Load 9(iv)\r
+             309:      6(int) CompositeExtract 308 0\r
+             310:      6(int) IAdd 309 307\r
              311:    7(ivec3) Load 9(iv)\r
-             312:      6(int) CompositeExtract 311 0\r
-             313:      6(int) IAdd 312 310\r
-             314:    7(ivec3) Load 9(iv)\r
-             315:    7(ivec3) CompositeInsert 313 314 0\r
-                              Store 9(iv) 315\r
-             316:   27(ivec2) Load 143(ic2D)\r
-             317:    232(int) Load 255(value)\r
-             318:    257(ptr) ImageTexelPointer 252(ui2D) 316 0\r
-             319:    232(int) AtomicOr 318 243 235 317\r
-             320:    232(int) Load 234(ui)\r
-             321:    232(int) IAdd 320 319\r
-                              Store 234(ui) 321\r
-             322:      6(int) Load 133(ic1D)\r
-             324:    241(ptr) ImageTexelPointer 238(ii1D) 322 0\r
-             325:      6(int) AtomicXor 324 243 235 323\r
+             312:    7(ivec3) CompositeInsert 310 311 0\r
+                              Store 9(iv) 312\r
+             313:   27(ivec2) Load 143(ic2D)\r
+             314:    229(int) Load 252(value)\r
+             315:    254(ptr) ImageTexelPointer 249(ui2D) 313 0\r
+             316:    229(int) AtomicOr 315 240 232 314\r
+             317:    229(int) Load 231(ui)\r
+             318:    229(int) IAdd 317 316\r
+                              Store 231(ui) 318\r
+             319:      6(int) Load 133(ic1D)\r
+             321:    238(ptr) ImageTexelPointer 235(ii1D) 319 0\r
+             322:      6(int) AtomicXor 321 240 232 320\r
+             323:    7(ivec3) Load 9(iv)\r
+             324:      6(int) CompositeExtract 323 0\r
+             325:      6(int) IAdd 324 322\r
              326:    7(ivec3) Load 9(iv)\r
-             327:      6(int) CompositeExtract 326 0\r
-             328:      6(int) IAdd 327 325\r
-             329:    7(ivec3) Load 9(iv)\r
-             330:    7(ivec3) CompositeInsert 328 329 0\r
-                              Store 9(iv) 330\r
-             331:   27(ivec2) Load 143(ic2D)\r
-             332:    232(int) Load 255(value)\r
-             333:    257(ptr) ImageTexelPointer 252(ui2D) 331 0\r
-             334:    232(int) AtomicXor 333 243 235 332\r
-             335:    232(int) Load 234(ui)\r
-             336:    232(int) IAdd 335 334\r
-                              Store 234(ui) 336\r
-             337:      6(int) Load 133(ic1D)\r
-             339:    241(ptr) ImageTexelPointer 238(ii1D) 337 0\r
-             340:      6(int) AtomicExchange 339 243 235 338\r
+             327:    7(ivec3) CompositeInsert 325 326 0\r
+                              Store 9(iv) 327\r
+             328:   27(ivec2) Load 143(ic2D)\r
+             329:    229(int) Load 252(value)\r
+             330:    254(ptr) ImageTexelPointer 249(ui2D) 328 0\r
+             331:    229(int) AtomicXor 330 240 232 329\r
+             332:    229(int) Load 231(ui)\r
+             333:    229(int) IAdd 332 331\r
+                              Store 231(ui) 333\r
+             334:      6(int) Load 133(ic1D)\r
+             336:    238(ptr) ImageTexelPointer 235(ii1D) 334 0\r
+             337:      6(int) AtomicExchange 336 240 232 335\r
+             338:    7(ivec3) Load 9(iv)\r
+             339:      6(int) CompositeExtract 338 0\r
+             340:      6(int) IAdd 339 337\r
              341:    7(ivec3) Load 9(iv)\r
-             342:      6(int) CompositeExtract 341 0\r
-             343:      6(int) IAdd 342 340\r
-             344:    7(ivec3) Load 9(iv)\r
-             345:    7(ivec3) CompositeInsert 343 344 0\r
-                              Store 9(iv) 345\r
-             346:   27(ivec2) Load 143(ic2D)\r
-             347:    232(int) Load 255(value)\r
-             348:    257(ptr) ImageTexelPointer 252(ui2D) 346 0\r
-             349:    232(int) AtomicExchange 348 243 235 347\r
-             350:    232(int) Load 234(ui)\r
-             351:    232(int) IAdd 350 349\r
-                              Store 234(ui) 351\r
-             352:      6(int) Load 133(ic1D)\r
-             355:    241(ptr) ImageTexelPointer 238(ii1D) 352 0\r
-             356:      6(int) AtomicCompareExchange 355 243 235 235 354 353\r
+             342:    7(ivec3) CompositeInsert 340 341 0\r
+                              Store 9(iv) 342\r
+             343:   27(ivec2) Load 143(ic2D)\r
+             344:    229(int) Load 252(value)\r
+             345:    254(ptr) ImageTexelPointer 249(ui2D) 343 0\r
+             346:    229(int) AtomicExchange 345 240 232 344\r
+             347:    229(int) Load 231(ui)\r
+             348:    229(int) IAdd 347 346\r
+                              Store 231(ui) 348\r
+             349:      6(int) Load 133(ic1D)\r
+             352:    238(ptr) ImageTexelPointer 235(ii1D) 349 0\r
+             353:      6(int) AtomicCompareExchange 352 240 232 232 351 350\r
+             354:    7(ivec3) Load 9(iv)\r
+             355:      6(int) CompositeExtract 354 0\r
+             356:      6(int) IAdd 355 353\r
              357:    7(ivec3) Load 9(iv)\r
-             358:      6(int) CompositeExtract 357 0\r
-             359:      6(int) IAdd 358 356\r
-             360:    7(ivec3) Load 9(iv)\r
-             361:    7(ivec3) CompositeInsert 359 360 0\r
-                              Store 9(iv) 361\r
-             362:   27(ivec2) Load 143(ic2D)\r
-             364:    232(int) Load 255(value)\r
-             365:    257(ptr) ImageTexelPointer 252(ui2D) 362 0\r
-             366:    232(int) AtomicCompareExchange 365 243 235 235 364 363\r
-             367:    232(int) Load 234(ui)\r
-             368:    232(int) IAdd 367 366\r
-                              Store 234(ui) 368\r
-             372:    232(int) Load 234(ui)\r
-             373:    7(ivec3) Load 9(iv)\r
-             374:      6(int) CompositeExtract 373 1\r
-             375:    232(int) Bitcast 374\r
-             377:   376(bool) INotEqual 372 375\r
-                              SelectionMerge 379 None\r
-                              BranchConditional 377 378 381\r
+             358:    7(ivec3) CompositeInsert 356 357 0\r
+                              Store 9(iv) 358\r
+             359:   27(ivec2) Load 143(ic2D)\r
+             361:    229(int) Load 252(value)\r
+             362:    254(ptr) ImageTexelPointer 249(ui2D) 359 0\r
+             363:    229(int) AtomicCompareExchange 362 240 232 232 361 360\r
+             364:    229(int) Load 231(ui)\r
+             365:    229(int) IAdd 364 363\r
+                              Store 231(ui) 365\r
+             369:    229(int) Load 231(ui)\r
+             370:    7(ivec3) Load 9(iv)\r
+             371:      6(int) CompositeExtract 370 1\r
+             372:    229(int) Bitcast 371\r
+             374:   373(bool) INotEqual 369 372\r
+                              SelectionMerge 376 None\r
+                              BranchConditional 374 375 378\r
+             375:               Label\r
+             377:  126(fvec4)   Load 128(v)\r
+                                Store 368 377\r
+                                Branch 376\r
              378:               Label\r
-             380:  126(fvec4)   Load 128(v)\r
-                                Store 371 380\r
-                                Branch 379\r
-             381:               Label\r
-                                Store 371 130\r
-                                Branch 379\r
-             379:             Label\r
-             382:  126(fvec4) Load 371\r
-                              Store 370(fragData) 382\r
+                                Store 368 130\r
+                                Branch 376\r
+             376:             Label\r
+             379:  126(fvec4) Load 368\r
+                              Store 367(fragData) 379\r
                               Return\r
                               FunctionEnd\r
index 21269ea..2ced0ac 100644 (file)
@@ -51,8 +51,8 @@ void main()
     imageStore(i3D, ic3D, v);\r
     v += imageLoad(iCube, ic3D);\r
     imageStore(iCube, ic3D, v);\r
-    v += imageLoad(iCubeArray, ic4D);\r
-    imageStore(iCubeArray, ic4D, v);\r
+    v += imageLoad(iCubeArray, ic3D);\r
+    imageStore(iCubeArray, ic3D, v);\r
     v += imageLoad(i2DRect, ic2D);\r
     imageStore(i2DRect, ic2D, v);\r
     v += imageLoad(i1DArray, ic2D);\r
index d3f11ca..414cf21 100644 (file)
@@ -2,5 +2,5 @@
 // For the version, it uses the latest git tag followed by the number of commits.
 // For the date, it uses the current date (when then script is run).
 
-#define GLSLANG_REVISION "3.0.776"
-#define GLSLANG_DATE "30-Sep-2015"
+#define GLSLANG_REVISION "3.0.777"
+#define GLSLANG_DATE "01-Oct-2015"
index df7ab84..e167620 100644 (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");