GLSL: fix shadow samplers, and textures generally.

1) Append "Shadow" to samplers representing depth textures.
2) Sampling a depth texture returns f32, not vec4<f32>
3) Sampling a depth texture requires a Dref parameter, so we must
   generate one if none is provided.
4) GLSL requires Dref to be appended to the texture coordinates vector,
   *unless* it's a samplerCubeArrayShadow, since this would require vec5.
   In that case, it's passed as a separate parameter.
5) GLSL's textureGather() with a depth sampler always requires a refZ
   parameter, so provide zero to emulate WGSL's compare-less textureGather().
6) texelFetch() does not support depth textures, so this will have to be
   validated out.
7) textureOffset() does not support sampler2DArrayShadow in GLES, so this will
   have to be validated out.

Bug: tint:1298
Change-Id: Idaebe89cac6c1ec97c50a361b1d3aa3b84fb6c12
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/78760
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/writer/glsl/generator_impl.cc b/src/writer/glsl/generator_impl.cc
index 100464d..0ac3782 100644
--- a/src/writer/glsl/generator_impl.cc
+++ b/src/writer/glsl/generator_impl.cc
@@ -1229,11 +1229,15 @@
   }
 
   uint32_t glsl_ret_width = 4u;
+  bool is_depth = texture_type->Is<sem::DepthTexture>();
 
   switch (intrinsic->Type()) {
     case sem::IntrinsicType::kTextureSample:
     case sem::IntrinsicType::kTextureSampleBias:
       out << "texture";
+      if (is_depth) {
+        glsl_ret_width = 1u;
+      }
       break;
     case sem::IntrinsicType::kTextureSampleLevel:
       out << "textureLod";
@@ -1283,19 +1287,37 @@
 
   if (auto* array_index = arg(Usage::kArrayIndex)) {
     // Array index needs to be appended to the coordinates.
-    auto* packed = AppendVector(&builder_, param_coords, array_index);
-    if (!EmitExpression(out, packed->Declaration())) {
-      return false;
-    }
-  } else {
-    if (!EmitExpression(out, param_coords)) {
-      return false;
+    param_coords =
+        AppendVector(&builder_, param_coords, array_index)->Declaration();
+  }
+  bool is_cube_array = texture_type->dim() == ast::TextureDimension::kCubeArray;
+
+  // GLSL requires Dref to be appended to the coordinates, *unless* it's
+  // samplerCubeArrayShadow, in which case it will be handled as a separate
+  // parameter [1].
+  if (is_depth && !is_cube_array) {
+    if (auto* depth_ref = arg(Usage::kDepthRef)) {
+      param_coords =
+          AppendVector(&builder_, param_coords, depth_ref)->Declaration();
+    } else if (intrinsic->Type() == sem::IntrinsicType::kTextureSample) {
+      // Sampling a depth texture in GLSL always requires a depth reference, so
+      // append zero here.
+      auto* f32 = builder_.create<sem::F32>();
+      auto* zero = builder_.Expr(0.0f);
+      auto* stmt = builder_.Sem().Get(param_coords)->Stmt();
+      auto* sem_zero =
+          builder_.create<sem::Expression>(zero, f32, stmt, sem::Constant{});
+      builder_.Sem().Add(zero, sem_zero);
+      param_coords = AppendVector(&builder_, param_coords, zero)->Declaration();
     }
   }
 
-  for (auto usage : {Usage::kDepthRef, Usage::kLevel, Usage::kDdx, Usage::kDdy,
-                     Usage::kSampleIndex, Usage::kOffset, Usage::kBias,
-                     Usage::kComponent, Usage::kValue}) {
+  if (!EmitExpression(out, param_coords)) {
+    return false;
+  }
+
+  for (auto usage : {Usage::kLevel, Usage::kDdx, Usage::kDdy,
+                     Usage::kSampleIndex, Usage::kValue}) {
     if (auto* e = arg(usage)) {
       out << ", ";
       if (!EmitExpression(out, e)) {
@@ -1304,6 +1326,32 @@
     }
   }
 
+  // GLSL's textureGather always requires a refZ parameter.
+  if (is_depth && intrinsic->Type() == sem::IntrinsicType::kTextureGather) {
+    out << ", 0.0";
+  }
+
+  for (auto usage : {Usage::kOffset, Usage::kComponent, Usage::kBias}) {
+    if (auto* e = arg(usage)) {
+      out << ", ";
+      if (!EmitExpression(out, e)) {
+        return false;
+      }
+    }
+  }
+
+  // [1] samplerCubeArrayShadow requires a separate depthRef parameter
+  if (is_depth && is_cube_array) {
+    if (auto* e = arg(Usage::kDepthRef)) {
+      out << ", ";
+      if (!EmitExpression(out, e)) {
+        return false;
+      }
+    } else if (intrinsic->Type() == sem::IntrinsicType::kTextureSample) {
+      out << ", 0.0f";
+    }
+  }
+
   out << ")";
 
   if (intrinsic->ReturnType()->Is<sem::Void>()) {
@@ -2377,6 +2425,9 @@
             << "unexpected TextureDimension " << tex->dim();
         return false;
     }
+    if (tex->Is<sem::DepthTexture>()) {
+      out << "Shadow";
+    }
   } else if (type->Is<sem::U32>()) {
     out << "uint";
   } else if (auto* vec = type->As<sem::Vector>()) {
diff --git a/src/writer/glsl/generator_impl_intrinsic_texture_test.cc b/src/writer/glsl/generator_impl_intrinsic_texture_test.cc
index 6026c49..3dcb58f 100644
--- a/src/writer/glsl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/glsl/generator_impl_intrinsic_texture_test.cc
@@ -76,27 +76,27 @@
     case ValidTextureOverload::kGatherCubeArrayF32:
       return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 0))";
     case ValidTextureOverload::kGatherDepth2dF32:
-      return R"(textureGather(tint_symbol_sampler, vec2(1.0f, 2.0f)))";
+      return R"(textureGather(tint_symbol_sampler, vec2(1.0f, 2.0f), 0.0))";
     case ValidTextureOverload::kGatherDepth2dOffsetF32:
-      return R"(textureGatherOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), ivec2(3, 4)))";
+      return R"(textureGatherOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 0.0, ivec2(3, 4))";
     case ValidTextureOverload::kGatherDepth2dArrayF32:
-      return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3))))";
+      return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 0.0))";
     case ValidTextureOverload::kGatherDepth2dArrayOffsetF32:
-      return R"(textureGatherOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5)))";
+      return R"(textureGatherOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 0.0, ivec2(4, 5)))";
     case ValidTextureOverload::kGatherDepthCubeF32:
-      return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f)))";
+      return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 0.0))";
     case ValidTextureOverload::kGatherDepthCubeArrayF32:
-      return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4))))";
+      return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 0.0))";
     case ValidTextureOverload::kGatherCompareDepth2dF32:
-      return R"(textureGather(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f))";
+      return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f))";
     case ValidTextureOverload::kGatherCompareDepth2dOffsetF32:
-      return R"(textureGatherOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5)))";
+      return R"(textureGatherOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), ivec2(4, 5)))";
     case ValidTextureOverload::kGatherCompareDepth2dArrayF32:
-      return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 4.0f))";
+      return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, float(3), 4.0f)))";
     case ValidTextureOverload::kGatherCompareDepth2dArrayOffsetF32:
-      return R"(textureGatherOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 4.0f, ivec2(5, 6)))";
+      return R"(textureGatherOffset(tint_symbol_sampler, vec4(1.0f, 2.0f, float(3), 4.0f), ivec2(5, 6)))";
     case ValidTextureOverload::kGatherCompareDepthCubeF32:
-      return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f))";
+      return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, 4.0f)))";
     case ValidTextureOverload::kGatherCompareDepthCubeArrayF32:
       return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
     case ValidTextureOverload::kNumLayers2dArray:
@@ -136,17 +136,17 @@
     case ValidTextureOverload::kSampleCubeArrayF32:
       return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)));)";
     case ValidTextureOverload::kSampleDepth2dF32:
-      return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f)).x;)";
+      return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 0.0f));)";
     case ValidTextureOverload::kSampleDepth2dOffsetF32:
-      return R"(textureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), ivec2(3, 4)).x;)";
+      return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, 0.0f), ivec2(3, 4));)";
     case ValidTextureOverload::kSampleDepth2dArrayF32:
-      return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3))).x;)";
+      return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, float(3), 0.0f));)";
     case ValidTextureOverload::kSampleDepth2dArrayOffsetF32:
-      return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5)).x;)";
+      return R"(textureOffset(tint_symbol_sampler, vec4(1.0f, 2.0f, float(3), 0.0f), ivec2(4, 5));)";
     case ValidTextureOverload::kSampleDepthCubeF32:
-      return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f)).x;)";
+      return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, 0.0f));)";
     case ValidTextureOverload::kSampleDepthCubeArrayF32:
-      return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4))).x;)";
+      return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 0.0f);)";
     case ValidTextureOverload::kSampleBias2dF32:
       return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
     case ValidTextureOverload::kSampleBias2dOffsetF32:
@@ -208,23 +208,23 @@
     case ValidTextureOverload::kSampleGradCubeArrayF32:
       return R"(textureGrad(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), vec3(5.0f, 6.0f, 7.0f), vec3(8.0f, 9.0f, 10.0f));)";
     case ValidTextureOverload::kSampleCompareDepth2dF32:
-      return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
+      return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f));)";
     case ValidTextureOverload::kSampleCompareDepth2dOffsetF32:
-      return R"(textureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
+      return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), ivec2(4, 5));)";
     case ValidTextureOverload::kSampleCompareDepth2dArrayF32:
-      return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f);)";
+      return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, float(4), 3.0f));)";
     case ValidTextureOverload::kSampleCompareDepth2dArrayOffsetF32:
-      return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f, ivec2(5, 6));)";
+      return R"(textureOffset(tint_symbol_sampler, vec4(1.0f, 2.0f, float(4), 3.0f), ivec2(5, 6));)";
     case ValidTextureOverload::kSampleCompareDepthCubeF32:
-      return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
+      return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, 4.0f));)";
     case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
       return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
     case ValidTextureOverload::kSampleCompareLevelDepth2dF32:
-      return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
+      return R"(yyytexture(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
     case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
-      return R"(textureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
+      return R"(yyytextureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
     case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
-      return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f);)";
+      return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, float(4)), 3.0f);)";
     case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
       return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f, ivec2(5, 6));)";
     case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
diff --git a/src/writer/glsl/generator_impl_type_test.cc b/src/writer/glsl/generator_impl_type_test.cc
index 9ab92a2..8e7dd0e 100644
--- a/src/writer/glsl/generator_impl_type_test.cc
+++ b/src/writer/glsl/generator_impl_type_test.cc
@@ -330,13 +330,14 @@
 INSTANTIATE_TEST_SUITE_P(
     GlslGeneratorImplTest_Type,
     GlslDepthTexturesTest,
-    testing::Values(
-        GlslDepthTextureData{ast::TextureDimension::k2d, "sampler2D tex;"},
-        GlslDepthTextureData{ast::TextureDimension::k2dArray,
-                             "sampler2DArray tex;"},
-        GlslDepthTextureData{ast::TextureDimension::kCube, "samplerCube tex;"},
-        GlslDepthTextureData{ast::TextureDimension::kCubeArray,
-                             "samplerCubeArray tex;"}));
+    testing::Values(GlslDepthTextureData{ast::TextureDimension::k2d,
+                                         "sampler2DShadow tex;"},
+                    GlslDepthTextureData{ast::TextureDimension::k2dArray,
+                                         "sampler2DArrayShadow tex;"},
+                    GlslDepthTextureData{ast::TextureDimension::kCube,
+                                         "samplerCubeShadow tex;"},
+                    GlslDepthTextureData{ast::TextureDimension::kCubeArray,
+                                         "samplerCubeArrayShadow tex;"}));
 
 using GlslDepthMultisampledTexturesTest = TestHelper;
 TEST_F(GlslDepthMultisampledTexturesTest, Emit) {
diff --git a/test/benchmark/shadow-fragment.wgsl.expected.glsl b/test/benchmark/shadow-fragment.wgsl.expected.glsl
deleted file mode 100644
index 54815b2..0000000
--- a/test/benchmark/shadow-fragment.wgsl.expected.glsl
+++ /dev/null
@@ -1,64 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-layout(location = 0) in vec3 shadowPos_1;
-layout(location = 1) in vec3 fragPos_1;
-layout(location = 2) in vec3 fragNorm_1;
-layout(location = 0) out vec4 value;
-const float shadowDepthTextureSize = 1024.0f;
-struct Scene {
-  mat4 lightViewProjMatrix;
-  mat4 cameraViewProjMatrix;
-  vec3 lightPos;
-};
-
-layout(binding = 0) uniform Scene_1 {
-  mat4 lightViewProjMatrix;
-  mat4 cameraViewProjMatrix;
-  vec3 lightPos;
-} scene;
-
-struct FragmentInput {
-  vec3 shadowPos;
-  vec3 fragPos;
-  vec3 fragNorm;
-};
-
-const vec3 albedo = vec3(0.899999976f, 0.899999976f, 0.899999976f);
-const float ambientFactor = 0.200000003f;
-uniform highp sampler2D shadowMap_shadowSampler;
-
-vec4 tint_symbol(FragmentInput tint_symbol_1) {
-  float visibility = 0.0f;
-  float oneOverShadowDepthTextureSize = (1.0f / shadowDepthTextureSize);
-  {
-    for(int y = -1; (y <= 1); y = (y + 1)) {
-      {
-        for(int x = -1; (x <= 1); x = (x + 1)) {
-          vec2 offset = vec2((float(x) * oneOverShadowDepthTextureSize), (float(y) * oneOverShadowDepthTextureSize));
-          visibility = (visibility + texture(shadowMap_shadowSampler, (tint_symbol_1.shadowPos.xy + offset), (tint_symbol_1.shadowPos.z - 0.007f)));
-        }
-      }
-    }
-  }
-  visibility = (visibility / 9.0f);
-  float lambertFactor = max(dot(normalize((scene.lightPos - tint_symbol_1.fragPos)), tint_symbol_1.fragNorm), 0.0f);
-  float lightingFactor = min((ambientFactor + (visibility * lambertFactor)), 1.0f);
-  return vec4((lightingFactor * albedo), 1.0f);
-}
-
-void main() {
-  FragmentInput tint_symbol_2 = FragmentInput(shadowPos_1, fragPos_1, fragNorm_1);
-  vec4 inner_result = tint_symbol(tint_symbol_2);
-  value = inner_result;
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:39: 'assign' :  cannot convert from ' temp highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:39: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.glsl b/test/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.glsl
index fd15d06..71076fb 100644
--- a/test/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.glsl
+++ b/test/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.glsl
@@ -107,8 +107,8 @@
 layout(binding = 7) buffer LightShadows_1 {
   ShadowProperties properties[];
 } shadow;
-uniform highp sampler2D shadowTexture_1;
-uniform highp sampler2D shadowTexture_shadowSampler;
+uniform highp sampler2DShadow shadowTexture_1;
+uniform highp sampler2DShadow shadowTexture_shadowSampler;
 
 float dirLightVisibility(vec3 worldPos) {
   int shadowIndex = lightShadowTable.light[0u];
@@ -124,7 +124,7 @@
   float visibility = 0.0f;
   {
     for(uint i = 0u; (i < shadowSampleCount); i = (i + 1u)) {
-      visibility = (visibility + texture(shadowTexture_shadowSampler, clamp((viewportPos + (shadowSampleOffsets[i] * texelSize)), clampRect.xy, clampRect.zw), (shadowPos.z - 0.003f)));
+      visibility = (visibility + texture(shadowTexture_shadowSampler, vec3(clamp((viewportPos + (shadowSampleOffsets[i] * texelSize)), clampRect.xy, clampRect.zw), (shadowPos.z - 0.003f))));
     }
   }
   return (visibility / float(shadowSampleCount));
@@ -169,7 +169,7 @@
   float visibility = 0.0f;
   {
     for(uint i = 0u; (i < shadowSampleCount); i = (i + 1u)) {
-      visibility = (visibility + texture(shadowTexture_shadowSampler, clamp((viewportPos + (shadowSampleOffsets[i] * texelSize)), clampRect.xy, clampRect.zw), (shadowPos.z - 0.01f)));
+      visibility = (visibility + texture(shadowTexture_shadowSampler, vec3(clamp((viewportPos + (shadowSampleOffsets[i] * texelSize)), clampRect.xy, clampRect.zw), (shadowPos.z - 0.01f))));
     }
   }
   return (visibility / float(shadowSampleCount));
diff --git a/test/bug/chromium/1290107.wgsl.expected.glsl b/test/bug/chromium/1290107.wgsl.expected.glsl
index debb813..a2b89e4 100644
--- a/test/bug/chromium/1290107.wgsl.expected.glsl
+++ b/test/bug/chromium/1290107.wgsl.expected.glsl
@@ -10,22 +10,21 @@
 layout(binding = 0) buffer arr_block_1 {
   S inner[];
 } arr;
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void tint_symbol() {
   uint tint_symbol_2 = 0u;
   arr.inner.GetDimensions(tint_symbol_2);
   uint tint_symbol_3 = (tint_symbol_2 / 4u);
   uint len = tint_symbol_3;
-  return;
 }
 
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   tint_symbol();
+  return;
 }
-
 Error parsing GLSL shader:
-ERROR: 0:14: '.' : cannot apply to an array: GetDimensions
-ERROR: 0:14: '' : compilation terminated 
+ERROR: 0:13: '.' : cannot apply to an array: GetDimensions
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/bug/tint/827.wgsl.expected.glsl b/test/bug/tint/827.wgsl.expected.glsl
index 9933ba5..f221389 100644
--- a/test/bug/tint/827.wgsl.expected.glsl
+++ b/test/bug/tint/827.wgsl.expected.glsl
@@ -1,3 +1,5 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
@@ -5,7 +7,7 @@
 layout(binding = 1) buffer Result_1 {
   float values[];
 } result;
-uniform highp sampler2D tex_1;
+uniform highp sampler2DShadow tex_1;
 void tint_symbol(uvec3 GlobalInvocationId) {
   result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = texelFetch(tex_1, ivec2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0).x;
 }
@@ -15,3 +17,10 @@
   tint_symbol(gl_GlobalInvocationID);
   return;
 }
+Error parsing GLSL shader:
+ERROR: 0:10: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/bug/tint/978.wgsl.expected.glsl b/test/bug/tint/978.wgsl.expected.glsl
index b7bebd2..6f05f96 100644
--- a/test/bug/tint/978.wgsl.expected.glsl
+++ b/test/bug/tint/978.wgsl.expected.glsl
@@ -11,10 +11,10 @@
   vec4 color;
 };
 
-uniform highp sampler2D depthMap_texSampler;
+uniform highp sampler2DShadow depthMap_texSampler;
 
 FragmentOutput tint_symbol(FragmentInput fIn) {
-  float tint_symbol_1 = texture(depthMap_texSampler, fIn.vUv).x;
+  float tint_symbol_1 = texture(depthMap_texSampler, vec3(fIn.vUv, 0.0f));
   vec3 color = vec3(tint_symbol_1, tint_symbol_1, tint_symbol_1);
   FragmentOutput fOut = FragmentOutput(vec4(0.0f, 0.0f, 0.0f, 0.0f));
   fOut.color = vec4(color, 1.0f);
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.glsl
index d6210f5..f889637 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureDimensions_12c9bb() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -21,7 +21,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureDimensions_12c9bb() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -37,7 +37,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureDimensions_12c9bb() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
diff --git a/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.glsl
index 14c08b8..d92dc4b 100644
--- a/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureDimensions_57e28f() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -21,7 +21,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureDimensions_57e28f() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -37,7 +37,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureDimensions_57e28f() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.glsl
index 8831c41..9b130c1 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureDimensions_72e5d6() {
   ivec2 res = textureSize(arg_0_1, 0).xy;
 }
@@ -21,7 +21,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureDimensions_72e5d6() {
   ivec2 res = textureSize(arg_0_1, 0).xy;
 }
@@ -37,7 +37,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureDimensions_72e5d6() {
   ivec2 res = textureSize(arg_0_1, 0).xy;
 }
diff --git a/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.glsl
index 7e1e045..253a19a 100644
--- a/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureDimensions_7bf826() {
   ivec2 res = textureSize(arg_0_1, 0).xy;
 }
@@ -21,7 +21,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureDimensions_7bf826() {
   ivec2 res = textureSize(arg_0_1, 0).xy;
 }
@@ -37,7 +37,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureDimensions_7bf826() {
   ivec2 res = textureSize(arg_0_1, 0).xy;
 }
diff --git a/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.glsl
index 8085723..860456f 100644
--- a/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureDimensions_90340b() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -21,7 +21,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -30,7 +30,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureDimensions_90340b() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -44,7 +44,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -53,7 +53,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureDimensions_90340b() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -68,7 +68,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.glsl
index e1b42df..f67bf4f 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureDimensions_9393b0() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -21,7 +21,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureDimensions_9393b0() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -37,7 +37,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureDimensions_9393b0() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
diff --git a/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.glsl
index b8fd95b..780591a 100644
--- a/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureDimensions_939fdb() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -21,7 +21,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureDimensions_939fdb() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -37,7 +37,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureDimensions_939fdb() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.glsl
index 2cedd1e..38d7ddc 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureDimensions_a01845() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -21,7 +21,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -30,7 +30,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureDimensions_a01845() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -44,7 +44,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -53,7 +53,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureDimensions_a01845() {
   ivec2 res = textureSize(arg_0_1, 0);
 }
@@ -68,7 +68,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureGather/10c554.wgsl.expected.glsl b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.glsl
index a52c1d4..28babb5 100644
--- a/test/intrinsics/gen/textureGather/10c554.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureGather_10c554() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f));
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 0.0);
 }
 
 vec4 vertex_main() {
@@ -22,10 +22,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureGather_10c554() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f));
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 0.0);
 }
 
 void fragment_main() {
@@ -39,10 +39,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureGather_10c554() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f));
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 0.0);
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.glsl b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.glsl
index 004593d..9339d5e 100644
--- a/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGather_2e0ed5() {
-  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f));
+  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f), 0.0);
 }
 
 vec4 vertex_main() {
@@ -22,10 +22,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGather_2e0ed5() {
-  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f));
+  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f), 0.0);
 }
 
 void fragment_main() {
@@ -39,10 +39,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGather_2e0ed5() {
-  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f));
+  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f), 0.0);
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGather/43025d.wgsl.expected.glsl b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.glsl
index c29566b..4ea4e1e 100644
--- a/test/intrinsics/gen/textureGather/43025d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)));
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0.0);
 }
 
 vec4 vertex_main() {
@@ -22,7 +22,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -31,10 +31,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)));
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0.0);
 }
 
 void fragment_main() {
@@ -46,7 +46,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -55,10 +55,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)));
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0.0);
 }
 
 void compute_main() {
@@ -71,7 +71,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.glsl b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.glsl
index cfc3c9e..4b25344 100644
--- a/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGather_53ece6() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0.0, ivec2(0, 0));
 }
 
 vec4 vertex_main() {
@@ -22,10 +22,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGather_53ece6() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0.0, ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -39,10 +39,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGather_53ece6() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0.0, ivec2(0, 0));
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.glsl b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.glsl
index c79ce78..8a59c9d 100644
--- a/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGather_9a6358() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)));
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0.0);
 }
 
 vec4 vertex_main() {
@@ -22,10 +22,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGather_9a6358() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)));
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0.0);
 }
 
 void fragment_main() {
@@ -39,10 +39,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGather_9a6358() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)));
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0.0);
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.glsl b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.glsl
index 4211e7b..a5a1a5b 100644
--- a/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGather_c409ae() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 0.0, ivec2(0, 0));
 }
 
 vec4 vertex_main() {
@@ -22,10 +22,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGather_c409ae() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 0.0, ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -39,10 +39,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGather_c409ae() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 0.0, ivec2(0, 0));
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.glsl b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.glsl
index 74cb012..a201e81 100644
--- a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureGatherCompare_182fd4() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,10 +32,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureGatherCompare_182fd4() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 1.0f));
 }
 
 void fragment_main() {
@@ -57,10 +57,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureGatherCompare_182fd4() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 1.0f));
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.glsl b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.glsl
index 55be136..45a3533 100644
--- a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
   vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
@@ -22,7 +22,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
   vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
@@ -46,7 +46,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
   vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
@@ -71,7 +71,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.glsl b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.glsl
index 8ada980..8a77fa3 100644
--- a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGatherCompare_6d9352() {
-  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,10 +32,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGatherCompare_6d9352() {
-  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f));
 }
 
 void fragment_main() {
@@ -57,10 +57,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGatherCompare_6d9352() {
-  vec4 res = textureGather(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f));
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.glsl b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.glsl
index cfe99da..82b518d 100644
--- a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_6f1267() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f, ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0, 0));
 }
 
 vec4 vertex_main() {
@@ -32,10 +32,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_6f1267() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f, ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -57,10 +57,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_6f1267() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f, ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0, 0));
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.glsl b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.glsl
index 02015bd..dda9b95 100644
--- a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_783e65() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,10 +32,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_783e65() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f));
 }
 
 void fragment_main() {
@@ -57,10 +57,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_783e65() {
-  vec4 res = textureGather(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f));
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.glsl b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.glsl
index bec1404..e5bca3d 100644
--- a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGatherCompare_a5f587() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f, ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f), ivec2(0, 0));
 }
 
 vec4 vertex_main() {
@@ -32,10 +32,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGatherCompare_a5f587() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f, ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f), ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -57,10 +57,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureGatherCompare_a5f587() {
-  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f, ivec2(0, 0));
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f), ivec2(0, 0));
 }
 
 void compute_main() {
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.glsl
index 8e1ff9d..85672e2 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureLoad_19cf87() {
   float res = texelFetch(arg_0_1, ivec2(0, 0), 0).x;
 }
@@ -18,10 +20,17 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
+Error parsing GLSL shader:
+ERROR: 0:6: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureLoad_19cf87() {
   float res = texelFetch(arg_0_1, ivec2(0, 0), 0).x;
 }
@@ -34,10 +43,17 @@
   fragment_main();
   return;
 }
+Error parsing GLSL shader:
+ERROR: 0:6: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureLoad_19cf87() {
   float res = texelFetch(arg_0_1, ivec2(0, 0), 0).x;
 }
@@ -51,3 +67,10 @@
   compute_main();
   return;
 }
+Error parsing GLSL shader:
+ERROR: 0:6: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.glsl
index 74b106d..486d345 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureLoad_9b2667() {
   float res = texelFetch(arg_0_1, ivec3(0, 0, 1), 0).x;
 }
@@ -18,10 +20,17 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
+Error parsing GLSL shader:
+ERROR: 0:6: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureLoad_9b2667() {
   float res = texelFetch(arg_0_1, ivec3(0, 0, 1), 0).x;
 }
@@ -34,10 +43,17 @@
   fragment_main();
   return;
 }
+Error parsing GLSL shader:
+ERROR: 0:6: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureLoad_9b2667() {
   float res = texelFetch(arg_0_1, ivec3(0, 0, 1), 0).x;
 }
@@ -51,3 +67,10 @@
   compute_main();
   return;
 }
+Error parsing GLSL shader:
+ERROR: 0:6: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureNumLayers/778bd1.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/778bd1.wgsl.expected.glsl
index 87da8dc..f555bc1 100644
--- a/test/intrinsics/gen/textureNumLayers/778bd1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/778bd1.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureNumLayers_778bd1() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -21,7 +21,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -30,7 +30,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureNumLayers_778bd1() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -44,7 +44,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -53,7 +53,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureNumLayers_778bd1() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -68,7 +68,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureNumLayers/e653c0.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/e653c0.wgsl.expected.glsl
index a50d766..8062850 100644
--- a/test/intrinsics/gen/textureNumLayers/e653c0.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/e653c0.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureNumLayers_e653c0() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureNumLayers_e653c0() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureNumLayers_e653c0() {
   int res = textureQueryLevels(arg_0_1);;
 }
diff --git a/test/intrinsics/gen/textureNumLevels/076cb5.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLevels/076cb5.wgsl.expected.glsl
index 8277c6d..f2a54ab 100644
--- a/test/intrinsics/gen/textureNumLevels/076cb5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLevels/076cb5.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureNumLevels_076cb5() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureNumLevels_076cb5() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_1;
+uniform highp samplerCubeShadow arg_0_1;
 void textureNumLevels_076cb5() {
   int res = textureQueryLevels(arg_0_1);;
 }
diff --git a/test/intrinsics/gen/textureNumLevels/2c3575.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLevels/2c3575.wgsl.expected.glsl
index 6194cd1..c7839a2 100644
--- a/test/intrinsics/gen/textureNumLevels/2c3575.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLevels/2c3575.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureNumLevels_2c3575() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -21,7 +21,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -30,7 +30,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureNumLevels_2c3575() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -44,7 +44,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -53,7 +53,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_1;
+uniform highp samplerCubeArrayShadow arg_0_1;
 void textureNumLevels_2c3575() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -68,7 +68,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl.expected.glsl
index cc6f345..beca961 100644
--- a/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureNumLevels_b1b12b() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureNumLevels_b1b12b() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_1;
+uniform highp sampler2DShadow arg_0_1;
 void textureNumLevels_b1b12b() {
   int res = textureQueryLevels(arg_0_1);;
 }
diff --git a/test/intrinsics/gen/textureNumLevels/f5828d.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLevels/f5828d.wgsl.expected.glsl
index 17944a8..79ae984 100644
--- a/test/intrinsics/gen/textureNumLevels/f5828d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLevels/f5828d.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureNumLevels_f5828d() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureNumLevels_f5828d() {
   int res = textureQueryLevels(arg_0_1);;
 }
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_1;
+uniform highp sampler2DArrayShadow arg_0_1;
 void textureNumLevels_f5828d() {
   int res = textureQueryLevels(arg_0_1);;
 }
diff --git a/test/intrinsics/gen/textureSample/38bbb9.wgsl.expected.glsl b/test/intrinsics/gen/textureSample/38bbb9.wgsl.expected.glsl
index a9d17e7..b2554c9 100644
--- a/test/intrinsics/gen/textureSample/38bbb9.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSample/38bbb9.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSample_38bbb9() {
-  float res = texture(arg_0_arg_1, vec2(0.0f, 0.0f)).x;
+  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f));
 }
 
 void fragment_main() {
diff --git a/test/intrinsics/gen/textureSample/667d76.wgsl.expected.glsl b/test/intrinsics/gen/textureSample/667d76.wgsl.expected.glsl
index 8302945..ca5c5c7 100644
--- a/test/intrinsics/gen/textureSample/667d76.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSample/667d76.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSample_667d76() {
-  float res = textureOffset(arg_0_arg_1, vec2(0.0f, 0.0f), ivec2(0, 0)).x;
+  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), ivec2(0, 0));
 }
 
 void fragment_main() {
diff --git a/test/intrinsics/gen/textureSample/7e9ffd.wgsl.expected.glsl b/test/intrinsics/gen/textureSample/7e9ffd.wgsl.expected.glsl
index 86c2155..08b4dee 100644
--- a/test/intrinsics/gen/textureSample/7e9ffd.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSample/7e9ffd.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSample_7e9ffd() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, float(1))).x;
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f));
 }
 
 void fragment_main() {
diff --git a/test/intrinsics/gen/textureSample/8522e7.wgsl.expected.glsl b/test/intrinsics/gen/textureSample/8522e7.wgsl.expected.glsl
index 87741c0..762475e 100644
--- a/test/intrinsics/gen/textureSample/8522e7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSample/8522e7.wgsl.expected.glsl
@@ -1,10 +1,12 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSample_8522e7() {
-  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), ivec2(0, 0)).x;
+  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -15,3 +17,10 @@
   fragment_main();
   return;
 }
+Error parsing GLSL shader:
+ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:7: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureSample/c2f4e8.wgsl.expected.glsl b/test/intrinsics/gen/textureSample/c2f4e8.wgsl.expected.glsl
index 7153e8c..a3e7932 100644
--- a/test/intrinsics/gen/textureSample/c2f4e8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSample/c2f4e8.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSample_c2f4e8() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1))).x;
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0.0f);
 }
 
 void fragment_main() {
@@ -18,7 +18,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureSample/ea7030.wgsl.expected.glsl b/test/intrinsics/gen/textureSample/ea7030.wgsl.expected.glsl
index f1d193e..3803280 100644
--- a/test/intrinsics/gen/textureSample/ea7030.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSample/ea7030.wgsl.expected.glsl
@@ -1,10 +1,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSample_ea7030() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f)).x;
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 void fragment_main() {
diff --git a/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl.expected.glsl
index ff08b55..9e4ad0c 100644
--- a/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleCompare_25fcd1() {
-  float res = textureOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f, ivec2(0, 0));
+  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f), ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -17,10 +15,3 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl.expected.glsl
index 60f4e27..7210133 100644
--- a/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleCompare_3a5923() {
-  float res = texture(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f);
+  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f));
 }
 
 void fragment_main() {
@@ -17,10 +15,3 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl.expected.glsl
index c0fcda1..43a8eaa 100644
--- a/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleCompare_63fb83() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 1.0f));
 }
 
 void fragment_main() {
@@ -17,10 +15,3 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl.expected.glsl
index e8c1d5c..0064717 100644
--- a/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_98b85c() {
-  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f, ivec2(0, 0));
+  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -18,7 +18,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureOffset' : no matching overloaded function found 
+ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
 ERROR: 0:7: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl.expected.glsl
index 34b1fea..870eca9 100644
--- a/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_a3ca7e() {
   float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
@@ -18,7 +18,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl.expected.glsl
index 79482dc..db905e8 100644
--- a/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_dd431d() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f));
 }
 
 void fragment_main() {
@@ -17,10 +15,3 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl.expected.glsl
index 40fe943..92ebaf2 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_011a8f() {
-  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f, ivec2(0, 0));
+  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0, 0));
 }
 
 vec4 vertex_main() {
@@ -22,7 +22,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureOffset' : no matching overloaded function found 
+ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
 ERROR: 0:7: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -31,10 +31,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_011a8f() {
-  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f, ivec2(0, 0));
+  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -46,7 +46,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureOffset' : no matching overloaded function found 
+ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
 ERROR: 0:7: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -55,10 +55,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_011a8f() {
-  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f, ivec2(0, 0));
+  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0, 0));
 }
 
 void compute_main() {
@@ -71,7 +71,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureOffset' : no matching overloaded function found 
+ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
 ERROR: 0:7: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl.expected.glsl
index 5b38908..40a0692 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_1116ed() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f));
 }
 
 vec4 vertex_main() {
@@ -21,20 +19,13 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: 'texture' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_1116ed() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f));
 }
 
 void fragment_main() {
@@ -45,20 +36,13 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_1116ed() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f));
 }
 
 void compute_main() {
@@ -70,10 +54,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl.expected.glsl
index b2824ef..5c32b88 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_1568e3() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 1.0f));
 }
 
 vec4 vertex_main() {
@@ -21,20 +19,13 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: 'texture' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_1568e3() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 1.0f));
 }
 
 void fragment_main() {
@@ -45,20 +36,13 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_1568e3() {
-  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 1.0f));
 }
 
 void compute_main() {
@@ -70,10 +54,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.glsl
index 0091bc0..ef5bda4 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_2ad2b1() {
-  float res = texture(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f);
+  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f));
 }
 
 vec4 vertex_main() {
@@ -21,20 +19,13 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: 'texture' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_2ad2b1() {
-  float res = texture(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f);
+  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f));
 }
 
 void fragment_main() {
@@ -45,20 +36,13 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_2ad2b1() {
-  float res = texture(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f);
+  float res = texture(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f));
 }
 
 void compute_main() {
@@ -70,10 +54,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
index d52c23e..aba1bb7 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
   float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
@@ -22,7 +22,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
   float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
@@ -46,7 +46,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
   float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
@@ -71,7 +71,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl.expected.glsl
index 2d0da97..cf7b97e 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_f8121c() {
-  float res = textureOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f, ivec2(0, 0));
+  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f), ivec2(0, 0));
 }
 
 vec4 vertex_main() {
@@ -21,20 +19,13 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_f8121c() {
-  float res = textureOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f, ivec2(0, 0));
+  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f), ivec2(0, 0));
 }
 
 void fragment_main() {
@@ -45,20 +36,13 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_f8121c() {
-  float res = textureOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 1.0f, ivec2(0, 0));
+  float res = textureOffset(arg_0_arg_1, vec3(0.0f, 0.0f, 1.0f), ivec2(0, 0));
 }
 
 void compute_main() {
@@ -70,10 +54,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.glsl
index d35e590..78593fb 100644
--- a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleLevel_02be59() {
   float res = textureLod(arg_0_arg_1, vec2(0.0f, 0.0f), 0).x;
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleLevel_02be59() {
   float res = textureLod(arg_0_arg_1, vec2(0.0f, 0.0f), 0).x;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleLevel_02be59() {
   float res = textureLod(arg_0_arg_1, vec2(0.0f, 0.0f), 0).x;
diff --git a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.glsl
index fe01f53..d214205 100644
--- a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
   float res = textureLod(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 0).x;
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
   float res = textureLod(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 0).x;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube arg_0_arg_1;
+uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
   float res = textureLod(arg_0_arg_1, vec3(0.0f, 0.0f, 0.0f), 0).x;
diff --git a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.glsl
index 720dd30..086ea29 100644
--- a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
   float res = textureLod(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0).x;
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
   float res = textureLod(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0).x;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
   float res = textureLod(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0).x;
diff --git a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.glsl
index a41ec42..3c0c6ed 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleLevel_47daa4() {
   float res = textureLodOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 0, ivec2(0, 0)).x;
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleLevel_47daa4() {
   float res = textureLodOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 0, ivec2(0, 0)).x;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D arg_0_arg_1;
+uniform highp sampler2DShadow arg_0_arg_1;
 
 void textureSampleLevel_47daa4() {
   float res = textureLodOffset(arg_0_arg_1, vec2(0.0f, 0.0f), 0, ivec2(0, 0)).x;
diff --git a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.glsl
index f617dbb..e3da837 100644
--- a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
   float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0).x;
@@ -22,7 +22,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
   float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0).x;
@@ -46,7 +46,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray arg_0_arg_1;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
   float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0).x;
@@ -71,7 +71,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.glsl b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.glsl
index d44d806..e6d7019 100644
--- a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ba93b3() {
   float res = textureLodOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0, ivec2(0, 0)).x;
@@ -31,7 +31,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ba93b3() {
   float res = textureLodOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0, ivec2(0, 0)).x;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray arg_0_arg_1;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ba93b3() {
   float res = textureLodOffset(arg_0_arg_1, vec3(0.0f, 0.0f, float(1)), 0, ivec2(0, 0)).x;
diff --git a/test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageFetch_Depth_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.glsl
similarity index 67%
copy from test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl
copy to test/unittest/reader/spirv/ImageFetch_Depth_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.glsl
index 35020aa..6a06607 100644
--- a/test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageFetch_Depth_SpvParserHandleTest_ImageAccessTest_Variable_0.spvasm.expected.glsl
@@ -3,10 +3,12 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D x_20_x_10;
-
+uniform highp sampler2DShadow x_20_1;
 void main_1() {
-  float float_var = 0.0f;
+  float f1 = 1.0f;
+  vec2 vf12 = vec2(1.0f, 2.0f);
+  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
+  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
   int i1 = 1;
   ivec2 vi12 = ivec2(1, 2);
   ivec3 vi123 = ivec3(1, 2, 3);
@@ -15,12 +17,8 @@
   uvec2 vu12 = uvec2(1u, 2u);
   uvec3 vu123 = uvec3(1u, 2u, 3u);
   uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  float x_73 = texture(x_20_x_10, vf12, 0.200000003f);
-  uint x_1000 = 0u;
+  ivec2 offsets2d = ivec2(3, 4);
+  vec4 x_99 = vec4(texelFetch(x_20_1, vi12, 0).x, 0.0f, 0.0f, 0.0f);
   return;
 }
 
@@ -33,8 +31,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:20: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:20: '' : compilation terminated 
+ERROR: 0:19: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:19: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.glsl
similarity index 67%
copy from test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl
copy to test/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.glsl
index 35020aa..6a06607 100644
--- a/test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_2.spvasm.expected.glsl
@@ -3,10 +3,12 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D x_20_x_10;
-
+uniform highp sampler2DShadow x_20_1;
 void main_1() {
-  float float_var = 0.0f;
+  float f1 = 1.0f;
+  vec2 vf12 = vec2(1.0f, 2.0f);
+  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
+  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
   int i1 = 1;
   ivec2 vi12 = ivec2(1, 2);
   ivec3 vi123 = ivec3(1, 2, 3);
@@ -15,12 +17,8 @@
   uvec2 vu12 = uvec2(1u, 2u);
   uvec3 vu123 = uvec3(1u, 2u, 3u);
   uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  float x_73 = texture(x_20_x_10, vf12, 0.200000003f);
-  uint x_1000 = 0u;
+  ivec2 offsets2d = ivec2(3, 4);
+  vec4 x_99 = vec4(texelFetch(x_20_1, vi12, 0).x, 0.0f, 0.0f, 0.0f);
   return;
 }
 
@@ -33,8 +31,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:20: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:20: '' : compilation terminated 
+ERROR: 0:19: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:19: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.glsl
similarity index 67%
rename from test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl
rename to test/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.glsl
index 35020aa..92ab94d 100644
--- a/test/unittest/reader/spirv/PreserveFloatCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_4.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageFetch_OptionalParams_SpvParserHandleTest_ImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -3,10 +3,12 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D x_20_x_10;
-
+uniform highp sampler2DShadow x_20_1;
 void main_1() {
-  float float_var = 0.0f;
+  float f1 = 1.0f;
+  vec2 vf12 = vec2(1.0f, 2.0f);
+  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
+  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
   int i1 = 1;
   ivec2 vi12 = ivec2(1, 2);
   ivec3 vi123 = ivec3(1, 2, 3);
@@ -15,12 +17,8 @@
   uvec2 vu12 = uvec2(1u, 2u);
   uvec3 vu123 = uvec3(1u, 2u, 3u);
   uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  float x_73 = texture(x_20_x_10, vf12, 0.200000003f);
-  uint x_1000 = 0u;
+  ivec2 offsets2d = ivec2(3, 4);
+  vec4 x_99 = vec4(texelFetch(x_20_1, vi12, 3).x, 0.0f, 0.0f, 0.0f);
   return;
 }
 
@@ -33,8 +31,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:20: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:20: '' : compilation terminated 
+ERROR: 0:19: 'texelFetch' : no matching overloaded function found 
+ERROR: 0:19: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
index d850b05..bfa9002 100644
--- a/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D x_20_1;
+uniform highp sampler2DShadow x_20_1;
 void main_1() {
   float f1 = 1.0f;
   vec2 vf12 = vec2(1.0f, 2.0f);
diff --git a/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.glsl
index f84f06c..0748c12 100644
--- a/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray x_20_1;
+uniform highp sampler2DArrayShadow x_20_1;
 void main_1() {
   float f1 = 1.0f;
   vec2 vf12 = vec2(1.0f, 2.0f);
diff --git a/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.glsl
index 44ddcb5..6a90652 100644
--- a/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCube x_20_1;
+uniform highp samplerCubeShadow x_20_1;
 void main_1() {
   float f1 = 1.0f;
   vec2 vf12 = vec2(1.0f, 2.0f);
diff --git a/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.glsl
index 5e70fed..1098786 100644
--- a/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray x_20_1;
+uniform highp samplerCubeArrayShadow x_20_1;
 void main_1() {
   float f1 = 1.0f;
   vec2 vf12 = vec2(1.0f, 2.0f);
@@ -35,7 +35,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
index 9a35a8e..e89097a 100644
--- a/test/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray x_20_1;
+uniform highp sampler2DArrayShadow x_20_1;
 void main_1() {
   float f1 = 1.0f;
   vec2 vf12 = vec2(1.0f, 2.0f);
diff --git a/test/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
index 4ad3ddc..b46b5cd 100644
--- a/test/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray x_20_1;
+uniform highp samplerCubeArrayShadow x_20_1;
 void main_1() {
   float f1 = 1.0f;
   vec2 vf12 = vec2(1.0f, 2.0f);
@@ -35,7 +35,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
deleted file mode 100644
index 16fe00a..0000000
--- a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
+++ /dev/null
@@ -1,43 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = texture(x_20_x_10, vf12, 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:23: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
deleted file mode 100644
index 83f1c0e..0000000
--- a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
+++ /dev/null
@@ -1,44 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2DArray x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec2 coords12 = vf12;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = texture(x_20_x_10, vec3(coords123.xy, float(int(round(coords123.z)))), 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:24: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
deleted file mode 100644
index 3e10a01..0000000
--- a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
+++ /dev/null
@@ -1,43 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = textureOffset(x_20_x_10, vf12, 0.200000003f, ivec2(3, 4));
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:23: 'textureOffset' : no matching overloaded function found 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
index 0f52792..25aaca0 100644
--- a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray x_20_x_10;
+uniform highp sampler2DArrayShadow x_20_x_10;
 
 void main_1() {
   float f1 = 1.0f;
@@ -23,7 +23,7 @@
   vec2 coords12 = vf12;
   vec3 coords123 = vf123;
   vec4 coords1234 = vf1234;
-  float x_79 = textureOffset(x_20_x_10, vec3(coords123.xy, float(int(round(coords123.z)))), 0.200000003f, ivec2(3, 4));
+  float x_79 = textureOffset(x_20_x_10, vec4(vec3(coords123.xy, float(int(round(coords123.z)))), 0.200000003f), ivec2(3, 4));
   return;
 }
 
@@ -36,7 +36,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:24: 'textureOffset' : no matching overloaded function found 
+ERROR: 0:24: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
 ERROR: 0:24: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.glsl
deleted file mode 100644
index 3e14f13..0000000
--- a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.glsl
+++ /dev/null
@@ -1,43 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp samplerCube x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec2 coords12 = vf12;
-  vec4 coords1234 = vf1234;
-  float x_79 = texture(x_20_x_10, vf123, 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:23: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
index 2023f1f..702ca99 100644
--- a/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp samplerCubeArray x_20_x_10;
+uniform highp samplerCubeArrayShadow x_20_x_10;
 
 void main_1() {
   float f1 = 1.0f;
@@ -36,7 +36,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
deleted file mode 100644
index 16fe00a..0000000
--- a/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
+++ /dev/null
@@ -1,43 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = texture(x_20_x_10, vf12, 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:23: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
deleted file mode 100644
index 83f1c0e..0000000
--- a/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
+++ /dev/null
@@ -1,44 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2DArray x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec2 coords12 = vf12;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = texture(x_20_x_10, vec3(coords123.xy, float(int(round(coords123.z)))), 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:24: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
deleted file mode 100644
index 3e10a01..0000000
--- a/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
+++ /dev/null
@@ -1,43 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = textureOffset(x_20_x_10, vf12, 0.200000003f, ivec2(3, 4));
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:23: 'textureOffset' : no matching overloaded function found 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
index 0f52792..25aaca0 100644
--- a/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2DArray x_20_x_10;
+uniform highp sampler2DArrayShadow x_20_x_10;
 
 void main_1() {
   float f1 = 1.0f;
@@ -23,7 +23,7 @@
   vec2 coords12 = vf12;
   vec3 coords123 = vf123;
   vec4 coords1234 = vf1234;
-  float x_79 = textureOffset(x_20_x_10, vec3(coords123.xy, float(int(round(coords123.z)))), 0.200000003f, ivec2(3, 4));
+  float x_79 = textureOffset(x_20_x_10, vec4(vec3(coords123.xy, float(int(round(coords123.z)))), 0.200000003f), ivec2(3, 4));
   return;
 }
 
@@ -36,7 +36,7 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:24: 'textureOffset' : no matching overloaded function found 
+ERROR: 0:24: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
 ERROR: 0:24: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
index ba0a97a..b8afb19 100644
--- a/test/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp sampler2D x_20_x_10;
+uniform highp sampler2DShadow x_20_x_10;
 
 void main_1() {
   float f1 = 1.0f;
diff --git a/test/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
deleted file mode 100644
index 9a443a9..0000000
--- a/test/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-uniform highp sampler2D x_20_x_30;
-
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec2 coords12 = vf12;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  vec4 x_200 = vec4(texture(x_20_x_10, coords12).x, 0.0f, 0.0f, 0.0f);
-  float x_210 = texture(x_20_x_30, coords12, 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:27: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:27: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.glsl
deleted file mode 100644
index 36fdc50..0000000
--- a/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float float_var = 0.0f;
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  float x_73 = texture(x_20_x_10, (vf1234.xy / vf1234.z), 0.200000003f);
-  uint x_1000 = 0u;
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:20: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.glsl
deleted file mode 100644
index 36fdc50..0000000
--- a/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float float_var = 0.0f;
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  float x_73 = texture(x_20_x_10, (vf1234.xy / vf1234.z), 0.200000003f);
-  uint x_1000 = 0u;
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:20: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
deleted file mode 100644
index 3d0551f..0000000
--- a/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
+++ /dev/null
@@ -1,44 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec2 coords12 = vf12;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = texture(x_20_x_10, (coords123.xy / coords123.z), f1);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:24: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
deleted file mode 100644
index be82c2c..0000000
--- a/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
+++ /dev/null
@@ -1,44 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec2 vf21 = vec2(2.0f, 1.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  vec2 coords12 = vf12;
-  vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = textureOffset(x_20_x_10, (coords123.xy / coords123.z), f1, ivec2(3, 4));
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:24: 'textureOffset' : no matching overloaded function found 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl b/test/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl
deleted file mode 100644
index 9a9cc5c..0000000
--- a/test/unittest/reader/spirv/PreserveFloatCoords_Arrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2DArray x_20_x_10;
-
-void main_1() {
-  float float_var = 0.0f;
-  int i1 = 1;
-  ivec2 vi12 = ivec2(1, 2);
-  ivec3 vi123 = ivec3(1, 2, 3);
-  ivec4 vi1234 = ivec4(1, 2, 3, 4);
-  uint u1 = 1u;
-  uvec2 vu12 = uvec2(1u, 2u);
-  uvec3 vu123 = uvec3(1u, 2u, 3u);
-  uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
-  float f1 = 1.0f;
-  vec2 vf12 = vec2(1.0f, 2.0f);
-  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
-  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  float x_73 = texture(x_20_x_10, vec3(vf123.xy, float(int(round(vf123.z)))), 0.200000003f);
-  uint x_1000 = 0u;
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:20: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_4.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_4.spvasm.expected.glsl
deleted file mode 100644
index 9c6e1b0..0000000
--- a/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_4.spvasm.expected.glsl
+++ /dev/null
@@ -1,27 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float x_131 = texture(x_20_x_10, vec2(0.0f, 0.0f), 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_8.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_8.spvasm.expected.glsl
deleted file mode 100644
index f5952b4..0000000
--- a/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_8.spvasm.expected.glsl
+++ /dev/null
@@ -1,27 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float x_131 = texture(x_20_x_10, (vec3(0.0f, 0.0f, 0.0f).xy / vec3(0.0f, 0.0f, 0.0f).z), 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_9.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_9.spvasm.expected.glsl
deleted file mode 100644
index f5952b4..0000000
--- a/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_SampledImage_Variable_9.spvasm.expected.glsl
+++ /dev/null
@@ -1,27 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2D x_20_x_10;
-
-void main_1() {
-  float x_131 = texture(x_20_x_10, (vec3(0.0f, 0.0f, 0.0f).xy / vec3(0.0f, 0.0f, 0.0f).z), 0.200000003f);
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:7: '=' :  cannot convert from ' global highp 4-component vector of float' to ' temp mediump float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-