[glsl][ir] Handle texture transforms

The GLSL AST backend has several texture transforms, this Cl translates
them to the IR backend

Bug: 42251044
Change-Id: I42c7d873eef3665a56dbe1f9004bbedc2419a05c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/208654
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/glsl/writer/builtin_test.cc b/src/tint/lang/glsl/writer/builtin_test.cc
index 40c3411..4eeb3c0 100644
--- a/src/tint/lang/glsl/writer/builtin_test.cc
+++ b/src/tint/lang/glsl/writer/builtin_test.cc
@@ -843,8 +843,8 @@
     ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
     EXPECT_EQ(output_.glsl, R"(#version 460
 
-uint foo(highp sampler1D t) {
-  return uint(textureSize(t, 0));
+uint foo(highp sampler2D t) {
+  return uvec2(textureSize(t, 0)).x;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
@@ -1167,9 +1167,9 @@
 precision highp float;
 precision highp int;
 
-uniform highp sampler1D v;
+uniform highp sampler2D v;
 void main() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   vec4 x = texelFetch(v, v_1, int(3u));
 }
 )");
@@ -1314,9 +1314,9 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32f) uniform highp writeonly image1D v;
+layout(binding = 0, r32f) uniform highp writeonly image2D v;
 void main() {
-  imageStore(v, 1, vec4(0.5f, 0.0f, 0.0f, 1.0f));
+  imageStore(v, ivec2(1, 0), vec4(0.5f, 0.0f, 0.0f, 1.0f));
 }
 )");
 }
diff --git a/src/tint/lang/glsl/writer/printer/printer.cc b/src/tint/lang/glsl/writer/printer/printer.cc
index c4cc0fd..f84c85d 100644
--- a/src/tint/lang/glsl/writer/printer/printer.cc
+++ b/src/tint/lang/glsl/writer/printer/printer.cc
@@ -240,8 +240,6 @@
                        << ", local_size_z = " << wg[2] << ") in;";
             }
 
-            // TODO(dsinclair): Handle return type attributes
-
             EmitType(out, func->ReturnType());
             out << " ";
 
@@ -357,7 +355,7 @@
                 out << "w";
                 break;
             default:
-                TINT_UNREACHABLE();
+                TINT_UNREACHABLE() << "invalid index for component";
         }
     }
 
@@ -615,7 +613,6 @@
             },
             [&](const core::type::Texture* t) { EmitTextureType(out, t); },
 
-            // TODO(dsinclair): Handle remaining types
             TINT_ICE_ON_NO_MATCH);
     }
 
@@ -736,7 +733,7 @@
                     break;
                 }
                 default:
-                    TINT_UNREACHABLE();
+                    TINT_UNREACHABLE() << "invalid storage access";
             }
         }
         auto* subtype = sampled   ? sampled->Type()
@@ -756,9 +753,6 @@
         out << (storage ? "image" : "sampler");
 
         switch (t->Dim()) {
-            case core::type::TextureDimension::k1d:
-                out << "1D";
-                break;
             case core::type::TextureDimension::k2d:
                 out << "2D";
                 if (ms || depth_ms) {
@@ -782,7 +776,7 @@
                 out << "CubeArray";
                 break;
             default:
-                TINT_UNREACHABLE();
+                TINT_UNREACHABLE() << "unknown texture dimension: " << t->Dim();
         }
         if (t->Is<core::type::DepthTexture>()) {
             out << "Shadow";
@@ -1501,7 +1495,6 @@
             [&](const core::type::Matrix* m) { EmitConstantMatrix(out, m, c); },
             [&](const core::type::Struct* s) { EmitConstantStruct(out, s, c); },
 
-            // TODO(dsinclair): Emit remaining constant types
             TINT_ICE_ON_NO_MATCH);
     }
 
diff --git a/src/tint/lang/glsl/writer/raise/BUILD.bazel b/src/tint/lang/glsl/writer/raise/BUILD.bazel
index 145cd6a..aa88cef 100644
--- a/src/tint/lang/glsl/writer/raise/BUILD.bazel
+++ b/src/tint/lang/glsl/writer/raise/BUILD.bazel
@@ -44,6 +44,7 @@
     "builtin_polyfill.cc",
     "raise.cc",
     "shader_io.cc",
+    "texture_polyfill.cc",
   ],
   hdrs = [
     "binary_polyfill.h",
@@ -51,6 +52,7 @@
     "builtin_polyfill.h",
     "raise.h",
     "shader_io.h",
+    "texture_polyfill.h",
   ],
   deps = [
     "//src/tint/api/common",
@@ -100,6 +102,7 @@
     "bitcast_polyfill_test.cc",
     "builtin_polyfill_test.cc",
     "shader_io_test.cc",
+    "texture_polyfill_test.cc",
   ],
   deps = [
     "//src/tint/api/common",
diff --git a/src/tint/lang/glsl/writer/raise/BUILD.cmake b/src/tint/lang/glsl/writer/raise/BUILD.cmake
index 3888ead..cd6bc40 100644
--- a/src/tint/lang/glsl/writer/raise/BUILD.cmake
+++ b/src/tint/lang/glsl/writer/raise/BUILD.cmake
@@ -51,6 +51,8 @@
   lang/glsl/writer/raise/raise.h
   lang/glsl/writer/raise/shader_io.cc
   lang/glsl/writer/raise/shader_io.h
+  lang/glsl/writer/raise/texture_polyfill.cc
+  lang/glsl/writer/raise/texture_polyfill.h
 )
 
 tint_target_add_dependencies(tint_lang_glsl_writer_raise lib
@@ -107,6 +109,7 @@
   lang/glsl/writer/raise/bitcast_polyfill_test.cc
   lang/glsl/writer/raise/builtin_polyfill_test.cc
   lang/glsl/writer/raise/shader_io_test.cc
+  lang/glsl/writer/raise/texture_polyfill_test.cc
 )
 
 tint_target_add_dependencies(tint_lang_glsl_writer_raise_test test
diff --git a/src/tint/lang/glsl/writer/raise/BUILD.gn b/src/tint/lang/glsl/writer/raise/BUILD.gn
index 562dc8a..b5dc097 100644
--- a/src/tint/lang/glsl/writer/raise/BUILD.gn
+++ b/src/tint/lang/glsl/writer/raise/BUILD.gn
@@ -55,6 +55,8 @@
       "raise.h",
       "shader_io.cc",
       "shader_io.h",
+      "texture_polyfill.cc",
+      "texture_polyfill.h",
     ]
     deps = [
       "${dawn_root}/src/utils:utils",
@@ -102,6 +104,7 @@
         "bitcast_polyfill_test.cc",
         "builtin_polyfill_test.cc",
         "shader_io_test.cc",
+        "texture_polyfill_test.cc",
       ]
       deps = [
         "${dawn_root}/src/utils:utils",
diff --git a/src/tint/lang/glsl/writer/raise/builtin_polyfill.cc b/src/tint/lang/glsl/writer/raise/builtin_polyfill.cc
index 141439c..1711137 100644
--- a/src/tint/lang/glsl/writer/raise/builtin_polyfill.cc
+++ b/src/tint/lang/glsl/writer/raise/builtin_polyfill.cc
@@ -91,10 +91,6 @@
                     case core::BuiltinFn::kSelect:
                     case core::BuiltinFn::kStorageBarrier:
                     case core::BuiltinFn::kTextureBarrier:
-                    case core::BuiltinFn::kTextureDimensions:
-                    case core::BuiltinFn::kTextureLoad:
-                    case core::BuiltinFn::kTextureNumLayers:
-                    case core::BuiltinFn::kTextureStore:
                     case core::BuiltinFn::kWorkgroupBarrier:
                         call_worklist.Push(call);
                         break;
@@ -161,18 +157,6 @@
                 case core::BuiltinFn::kWorkgroupBarrier:
                     Barrier(call);
                     break;
-                case core::BuiltinFn::kTextureDimensions:
-                    TextureDimensions(call);
-                    break;
-                case core::BuiltinFn::kTextureLoad:
-                    TextureLoad(call);
-                    break;
-                case core::BuiltinFn::kTextureNumLayers:
-                    TextureNumLayers(call);
-                    break;
-                case core::BuiltinFn::kTextureStore:
-                    TextureStore(call);
-                    break;
                 default:
                     TINT_UNREACHABLE();
             }
@@ -375,192 +359,6 @@
         call->Destroy();
     }
 
-    // `textureDimensions` returns an unsigned scalar / vector in WGSL. `textureSize` and
-    // `imageSize` return a signed scalar / vector in GLSL.  So, we  need to cast the result to
-    // the needed WGSL type.
-    void TextureDimensions(core::ir::BuiltinCall* call) {
-        auto args = call->Args();
-        auto* tex = args[0]->Type()->As<core::type::Texture>();
-
-        b.InsertBefore(call, [&] {
-            auto func = glsl::BuiltinFn::kTextureSize;
-            if (tex->Is<core::type::StorageTexture>()) {
-                func = glsl::BuiltinFn::kImageSize;
-            }
-
-            Vector<core::ir::Value*, 2> new_args;
-            new_args.Push(args[0]);
-
-            if (!(tex->Is<core::type::StorageTexture>() ||
-                  tex->Is<core::type::MultisampledTexture>() ||
-                  tex->Is<core::type::DepthMultisampledTexture>())) {
-                // Add a LOD to any texture other then storage, and multi-sampled textures which
-                // does not already have an LOD.
-                if (args.Length() == 1) {
-                    new_args.Push(b.Constant(0_i));
-                } else {
-                    // Make sure the LOD is a i32
-                    new_args.Push(b.Bitcast(ty.i32(), args[1])->Result(0));
-                }
-            }
-
-            auto ret_type = call->Result(0)->Type();
-
-            // In GLSL the array dimensions return a 3rd parameter.
-            if (tex->Dim() == core::type::TextureDimension::k2dArray ||
-                tex->Dim() == core::type::TextureDimension::kCubeArray) {
-                ret_type = ty.vec(ty.i32(), 3);
-            } else {
-                ret_type = ty.MatchWidth(ty.i32(), call->Result(0)->Type());
-            }
-
-            core::ir::Value* result =
-                b.Call<glsl::ir::BuiltinCall>(ret_type, func, new_args)->Result(0);
-
-            // `textureSize` on array samplers returns the array size in the final component, WGSL
-            // requires a 2 component response, so drop the array size
-            if (tex->Dim() == core::type::TextureDimension::k2dArray ||
-                tex->Dim() == core::type::TextureDimension::kCubeArray) {
-                ret_type = ty.MatchWidth(ty.i32(), call->Result(0)->Type());
-                result = b.Swizzle(ret_type, result, {0, 1})->Result(0);
-            }
-
-            b.BitcastWithResult(call->DetachResult(), result);
-        });
-        call->Destroy();
-    }
-
-    // `textureNumLayers` returns an unsigned scalar in WGSL. `textureSize` and `imageSize`
-    // return a signed scalar / vector in GLSL.
-    //
-    // For the `textureSize` and `imageSize` calls the valid WGSL values always produce a `vec3` in
-    // GLSL so we extract the `z` component for the number of layers.
-    void TextureNumLayers(core::ir::BuiltinCall* call) {
-        b.InsertBefore(call, [&] {
-            auto args = call->Args();
-            auto* tex = args[0]->Type()->As<core::type::Texture>();
-
-            auto func = glsl::BuiltinFn::kTextureSize;
-            if (tex->Is<core::type::StorageTexture>()) {
-                func = glsl::BuiltinFn::kImageSize;
-            }
-
-            Vector<core::ir::Value*, 2> new_args;
-            new_args.Push(args[0]);
-
-            // Non-storage textures require a LOD
-            if (!tex->Is<core::type::StorageTexture>()) {
-                new_args.Push(b.Constant(0_i));
-            }
-
-            auto* new_call = b.Call<glsl::ir::BuiltinCall>(ty.vec(ty.i32(), 3), func, new_args);
-
-            auto* swizzle = b.Swizzle(ty.i32(), new_call, {2});
-            b.BitcastWithResult(call->DetachResult(), swizzle->Result(0));
-        });
-        call->Destroy();
-    }
-
-    void TextureLoad(core::ir::CoreBuiltinCall* call) {
-        auto args = call->Args();
-        auto* tex = args[0];
-
-        // No loading from a depth texture in GLSL, so we should never have gotten here.
-        TINT_ASSERT(!tex->Type()->Is<core::type::DepthTexture>());
-
-        auto* tex_type = tex->Type()->As<core::type::Texture>();
-
-        glsl::BuiltinFn func = glsl::BuiltinFn::kNone;
-        if (tex_type->Is<core::type::StorageTexture>()) {
-            func = glsl::BuiltinFn::kImageLoad;
-        } else {
-            func = glsl::BuiltinFn::kTexelFetch;
-        }
-
-        bool is_ms = tex_type->Is<core::type::MultisampledTexture>();
-        bool is_storage = tex_type->Is<core::type::StorageTexture>();
-        b.InsertBefore(call, [&] {
-            Vector<core::ir::Value*, 3> call_args{tex};
-            switch (tex_type->Dim()) {
-                case core::type::TextureDimension::k1d: {
-                    call_args.Push(b.Convert(ty.i32(), args[1])->Result(0));
-                    if (!is_storage) {
-                        call_args.Push(b.Convert(ty.i32(), args[2])->Result(0));
-                    }
-                    break;
-                }
-                case core::type::TextureDimension::k2d: {
-                    call_args.Push(b.Convert(ty.vec2<i32>(), args[1])->Result(0));
-                    if (is_ms) {
-                        call_args.Push(b.Convert(ty.i32(), args[2])->Result(0));
-                    } else {
-                        if (!is_storage) {
-                            call_args.Push(b.Convert(ty.i32(), args[2])->Result(0));
-                        }
-                    }
-                    break;
-                }
-                case core::type::TextureDimension::k2dArray: {
-                    auto* coord = b.Convert(ty.vec2<i32>(), args[1]);
-                    auto* ary_idx = b.Convert(ty.i32(), args[2]);
-                    call_args.Push(b.Construct(ty.vec3<i32>(), coord, ary_idx)->Result(0));
-
-                    if (!is_storage) {
-                        call_args.Push(b.Convert(ty.i32(), args[3])->Result(0));
-                    }
-                    break;
-                }
-                case core::type::TextureDimension::k3d: {
-                    call_args.Push(b.Convert(ty.vec3<i32>(), args[1])->Result(0));
-
-                    if (!is_storage) {
-                        call_args.Push(b.Convert(ty.i32(), args[2])->Result(0));
-                    }
-                    break;
-                }
-                default:
-                    TINT_UNREACHABLE();
-            }
-
-            b.CallWithResult<glsl::ir::BuiltinCall>(call->DetachResult(), func,
-                                                    std::move(call_args));
-        });
-        call->Destroy();
-    }
-
-    void TextureStore(core::ir::BuiltinCall* call) {
-        auto args = call->Args();
-        auto* tex = args[0];
-        auto* tex_type = tex->Type()->As<core::type::StorageTexture>();
-        TINT_ASSERT(tex_type);
-
-        Vector<core::ir::Value*, 3> new_args;
-        new_args.Push(tex);
-
-        b.InsertBefore(call, [&] {
-            if (tex_type->Dim() == core::type::TextureDimension::k2dArray) {
-                auto* coords = args[1];
-                auto* array_idx = args[2];
-
-                auto* coords_ty = coords->Type()->As<core::type::Vector>();
-                TINT_ASSERT(coords_ty);
-
-                auto* new_coords = b.Construct(ty.vec3(coords_ty->Type()), coords,
-                                               b.Convert(coords_ty->Type(), array_idx));
-                new_args.Push(new_coords->Result(0));
-
-                new_args.Push(args[3]);
-            } else {
-                new_args.Push(args[1]);
-                new_args.Push(args[2]);
-            }
-
-            b.CallWithResult<glsl::ir::BuiltinCall>(
-                call->DetachResult(), glsl::BuiltinFn::kImageStore, std::move(new_args));
-        });
-        call->Destroy();
-    }
-
     void AtomicCompareExchangeWeak(core::ir::BuiltinCall* call) {
         auto args = call->Args();
         auto* type = args[1]->Type();
diff --git a/src/tint/lang/glsl/writer/raise/builtin_polyfill_test.cc b/src/tint/lang/glsl/writer/raise/builtin_polyfill_test.cc
index f692dc6..b112d46 100644
--- a/src/tint/lang/glsl/writer/raise/builtin_polyfill_test.cc
+++ b/src/tint/lang/glsl/writer/raise/builtin_polyfill_test.cc
@@ -399,215 +399,6 @@
     EXPECT_EQ(expect, str());
 }
 
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureDimensions_1d) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k1d, ty.f32()));
-    auto* func = b.Function("foo", ty.u32());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* result = b.Call<u32>(core::BuiltinFn::kTextureDimensions, t);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_1d<f32>):u32 {
-  $B1: {
-    %3:u32 = textureDimensions %t
-    ret %3
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_1d<f32>):u32 {
-  $B1: {
-    %3:i32 = glsl.textureSize %t, 0i
-    %4:u32 = bitcast %3
-    ret %4
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureDimensions_2d_WithoutLod) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2d, ty.f32()));
-    auto* func = b.Function("foo", ty.vec2<u32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_2d<f32>):vec2<u32> {
-  $B1: {
-    %3:vec2<u32> = textureDimensions %t
-    ret %3
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_2d<f32>):vec2<u32> {
-  $B1: {
-    %3:vec2<i32> = glsl.textureSize %t, 0i
-    %4:vec2<u32> = bitcast %3
-    ret %4
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureDimensions_2d_WithU32Lod) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2d, ty.f32()));
-    auto* func = b.Function("foo", ty.vec2<u32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t, 3_u);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_2d<f32>):vec2<u32> {
-  $B1: {
-    %3:vec2<u32> = textureDimensions %t, 3u
-    ret %3
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_2d<f32>):vec2<u32> {
-  $B1: {
-    %3:i32 = bitcast 3u
-    %4:vec2<i32> = glsl.textureSize %t, %3
-    %5:vec2<u32> = bitcast %4
-    ret %5
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureDimensions_2dArray) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2dArray, ty.f32()));
-    auto* func = b.Function("foo", ty.vec2<u32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_2d_array<f32>):vec2<u32> {
-  $B1: {
-    %3:vec2<u32> = textureDimensions %t
-    ret %3
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_2d_array<f32>):vec2<u32> {
-  $B1: {
-    %3:vec3<i32> = glsl.textureSize %t, 0i
-    %4:vec2<i32> = swizzle %3, xy
-    %5:vec2<u32> = bitcast %4
-    ret %5
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureDimensions_Storage2D) {
-    auto* t = b.FunctionParam(
-        "t",
-        ty.Get<core::type::StorageTexture>(
-            core::type::TextureDimension::k2d, core::TexelFormat::kRg32Float, core::Access::kRead,
-            core::type::StorageTexture::SubtypeFor(core::TexelFormat::kRg32Float, ty)));
-    auto* func = b.Function("foo", ty.vec2<u32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_storage_2d<rg32float, read>):vec2<u32> {
-  $B1: {
-    %3:vec2<u32> = textureDimensions %t
-    ret %3
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_storage_2d<rg32float, read>):vec2<u32> {
-  $B1: {
-    %3:vec2<i32> = glsl.imageSize %t
-    %4:vec2<u32> = bitcast %3
-    ret %4
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureDimensions_DepthMultisampled) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::DepthMultisampledTexture>(core::type::TextureDimension::k2d));
-    auto* func = b.Function("foo", ty.vec2<u32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_depth_multisampled_2d):vec2<u32> {
-  $B1: {
-    %3:vec2<u32> = textureDimensions %t
-    ret %3
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_depth_multisampled_2d):vec2<u32> {
-  $B1: {
-    %3:vec2<i32> = glsl.textureSize %t
-    %4:vec2<u32> = bitcast %3
-    ret %4
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
 TEST_F(GlslWriter_BuiltinPolyfillTest, CountOneBits) {
     auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
     b.Append(func->Block(), [&] {
@@ -709,605 +500,6 @@
     EXPECT_EQ(expect, str());
 }
 
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureNumLayers_2DArray) {
-    auto* var =
-        b.Var("v", handle,
-              ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2dArray, ty.f32()),
-              core::Access::kReadWrite);
-    var->SetBindingPoint(0, 0);
-    b.ir.root_block->Append(var);
-
-    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
-    b.Append(func->Block(), [&] {
-        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
-        b.Return(func);
-    });
-
-    auto* src = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_2d_array<f32>, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_2d_array<f32> = load %v
-    %4:u32 = textureNumLayers %3
-    %x:u32 = let %4
-    ret
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_2d_array<f32>, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_2d_array<f32> = load %v
-    %4:vec3<i32> = glsl.textureSize %3, 0i
-    %5:i32 = swizzle %4, z
-    %6:u32 = bitcast %5
-    %x:u32 = let %6
-    ret
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureNumLayers_Depth2DArray) {
-    auto* var =
-        b.Var("v", handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2dArray),
-              core::Access::kReadWrite);
-    var->SetBindingPoint(0, 0);
-    b.ir.root_block->Append(var);
-
-    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
-    b.Append(func->Block(), [&] {
-        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
-        b.Return(func);
-    });
-
-    auto* src = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_depth_2d_array, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_depth_2d_array = load %v
-    %4:u32 = textureNumLayers %3
-    %x:u32 = let %4
-    ret
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_depth_2d_array, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_depth_2d_array = load %v
-    %4:vec3<i32> = glsl.textureSize %3, 0i
-    %5:i32 = swizzle %4, z
-    %6:u32 = bitcast %5
-    %x:u32 = let %6
-    ret
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureNumLayers_CubeArray) {
-    auto* var = b.Var(
-        "v", handle,
-        ty.Get<core::type::SampledTexture>(core::type::TextureDimension::kCubeArray, ty.f32()),
-        core::Access::kReadWrite);
-    var->SetBindingPoint(0, 0);
-    b.ir.root_block->Append(var);
-
-    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
-    b.Append(func->Block(), [&] {
-        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
-        b.Return(func);
-    });
-
-    auto* src = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_cube_array<f32>, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_cube_array<f32> = load %v
-    %4:u32 = textureNumLayers %3
-    %x:u32 = let %4
-    ret
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_cube_array<f32>, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_cube_array<f32> = load %v
-    %4:vec3<i32> = glsl.textureSize %3, 0i
-    %5:i32 = swizzle %4, z
-    %6:u32 = bitcast %5
-    %x:u32 = let %6
-    ret
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureNumLayers_DepthCubeArray) {
-    auto* var = b.Var("v", handle,
-                      ty.Get<core::type::DepthTexture>(core::type::TextureDimension::kCubeArray),
-                      core::Access::kReadWrite);
-    var->SetBindingPoint(0, 0);
-    b.ir.root_block->Append(var);
-
-    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
-    b.Append(func->Block(), [&] {
-        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
-        b.Return(func);
-    });
-
-    auto* src = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_depth_cube_array, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_depth_cube_array = load %v
-    %4:u32 = textureNumLayers %3
-    %x:u32 = let %4
-    ret
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_depth_cube_array, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_depth_cube_array = load %v
-    %4:vec3<i32> = glsl.textureSize %3, 0i
-    %5:i32 = swizzle %4, z
-    %6:u32 = bitcast %5
-    %x:u32 = let %6
-    ret
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureNumLayers_Storage2DArray) {
-    auto* storage_ty = ty.Get<core::type::StorageTexture>(
-        core::type::TextureDimension::k2dArray, core::TexelFormat::kRg32Float, core::Access::kRead,
-        core::type::StorageTexture::SubtypeFor(core::TexelFormat::kRg32Float, ty));
-
-    auto* var = b.Var("v", handle, storage_ty, core::Access::kReadWrite);
-    var->SetBindingPoint(0, 0);
-    b.ir.root_block->Append(var);
-
-    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
-    b.Append(func->Block(), [&] {
-        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
-        b.Return(func);
-    });
-
-    auto* src = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_storage_2d_array<rg32float, read>, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_storage_2d_array<rg32float, read> = load %v
-    %4:u32 = textureNumLayers %3
-    %x:u32 = let %4
-    ret
-  }
-}
-)";
-    EXPECT_EQ(src, str());
-
-    auto* expect = R"(
-$B1: {  # root
-  %v:ptr<handle, texture_storage_2d_array<rg32float, read>, read_write> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_storage_2d_array<rg32float, read> = load %v
-    %4:vec3<i32> = glsl.imageSize %3
-    %5:i32 = swizzle %4, z
-    %6:u32 = bitcast %5
-    %x:u32 = let %6
-    ret
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureLoad_1DF32) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k1d, ty.f32()));
-    auto* func = b.Function("foo", ty.vec4<f32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* coords = b.Zero<i32>();
-        auto* level = b.Zero<u32>();
-        auto* result = b.Call<vec4<f32>>(core::BuiltinFn::kTextureLoad, t, coords, level);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_1d<f32>):vec4<f32> {
-  $B1: {
-    %3:vec4<f32> = textureLoad %t, 0i, 0u
-    ret %3
-  }
-}
-)";
-    ASSERT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_1d<f32>):vec4<f32> {
-  $B1: {
-    %3:i32 = convert 0i
-    %4:i32 = convert 0u
-    %5:vec4<f32> = glsl.texelFetch %t, %3, %4
-    ret %5
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureLoad_2DLevelI32) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2d, ty.i32()));
-    auto* func = b.Function("foo", ty.vec4<i32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* coords = b.Zero<vec2<i32>>();
-        auto* level = b.Zero<i32>();
-        auto* result = b.Call<vec4<i32>>(core::BuiltinFn::kTextureLoad, t, coords, level);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_2d<i32>):vec4<i32> {
-  $B1: {
-    %3:vec4<i32> = textureLoad %t, vec2<i32>(0i), 0i
-    ret %3
-  }
-}
-)";
-    ASSERT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_2d<i32>):vec4<i32> {
-  $B1: {
-    %3:vec2<i32> = convert vec2<i32>(0i)
-    %4:i32 = convert 0i
-    %5:vec4<i32> = glsl.texelFetch %t, %3, %4
-    ret %5
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureLoad_3DLevelU32) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k3d, ty.f32()));
-    auto* func = b.Function("foo", ty.vec4<f32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* coords = b.Zero<vec3<i32>>();
-        auto* level = b.Zero<u32>();
-        auto* result = b.Call<vec4<f32>>(core::BuiltinFn::kTextureLoad, t, coords, level);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_3d<f32>):vec4<f32> {
-  $B1: {
-    %3:vec4<f32> = textureLoad %t, vec3<i32>(0i), 0u
-    ret %3
-  }
-}
-)";
-    ASSERT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_3d<f32>):vec4<f32> {
-  $B1: {
-    %3:vec3<i32> = convert vec3<i32>(0i)
-    %4:i32 = convert 0u
-    %5:vec4<f32> = glsl.texelFetch %t, %3, %4
-    ret %5
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureLoad_Multisampled2DI32) {
-    auto* t = b.FunctionParam(
-        "t", ty.Get<core::type::MultisampledTexture>(core::type::TextureDimension::k2d, ty.i32()));
-    auto* func = b.Function("foo", ty.vec4<i32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* coords = b.Zero<vec2<i32>>();
-        auto* sample_idx = b.Zero<u32>();
-        auto* result = b.Call<vec4<i32>>(core::BuiltinFn::kTextureLoad, t, coords, sample_idx);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_multisampled_2d<i32>):vec4<i32> {
-  $B1: {
-    %3:vec4<i32> = textureLoad %t, vec2<i32>(0i), 0u
-    ret %3
-  }
-}
-)";
-    ASSERT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_multisampled_2d<i32>):vec4<i32> {
-  $B1: {
-    %3:vec2<i32> = convert vec2<i32>(0i)
-    %4:i32 = convert 0u
-    %5:vec4<i32> = glsl.texelFetch %t, %3, %4
-    ret %5
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureLoad_Storage2D) {
-    auto* t = b.FunctionParam(
-        "t",
-        ty.Get<core::type::StorageTexture>(
-            core::type::TextureDimension::k2d, core::TexelFormat::kRg32Float, core::Access::kRead,
-            core::type::StorageTexture::SubtypeFor(core::TexelFormat::kRg32Float, ty)));
-    auto* func = b.Function("foo", ty.vec4<f32>());
-    func->SetParams({t});
-    b.Append(func->Block(), [&] {
-        auto* coords = b.Zero<vec2<i32>>();
-        auto* result = b.Call<vec4<f32>>(core::BuiltinFn::kTextureLoad, t, coords);
-        b.Return(func, result);
-    });
-
-    auto* src = R"(
-%foo = func(%t:texture_storage_2d<rg32float, read>):vec4<f32> {
-  $B1: {
-    %3:vec4<f32> = textureLoad %t, vec2<i32>(0i)
-    ret %3
-  }
-}
-)";
-    ASSERT_EQ(src, str());
-
-    auto* expect = R"(
-%foo = func(%t:texture_storage_2d<rg32float, read>):vec4<f32> {
-  $B1: {
-    %3:vec2<i32> = convert vec2<i32>(0i)
-    %4:vec4<f32> = glsl.imageLoad %t, %3
-    ret %4
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureStore1D) {
-    auto* t = b.Var(ty.ptr(
-        handle, ty.Get<core::type::StorageTexture>(
-                    core::type::TextureDimension::k1d, core::TexelFormat::kR32Float,
-                    core::Access::kReadWrite,
-                    core::type::StorageTexture::SubtypeFor(core::TexelFormat::kR32Float, ty))));
-    t->SetBindingPoint(0, 0);
-    b.ir.root_block->Append(t);
-
-    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
-    b.Append(func->Block(), [&] {
-        auto* coords = b.Value(1_i);
-        auto* value = b.Composite(ty.vec4<f32>(), .5_f, 0_f, 0_f, 1_f);
-        b.Call(ty.void_(), core::BuiltinFn::kTextureStore, b.Load(t), coords, value);
-        b.Return(func);
-    });
-
-    auto* src = R"(
-$B1: {  # root
-  %1:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_storage_1d<r32float, read_write> = load %1
-    %4:void = textureStore %3, 1i, vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f)
-    ret
-  }
-}
-)";
-    ASSERT_EQ(src, str());
-
-    auto* expect = R"(
-$B1: {  # root
-  %1:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_storage_1d<r32float, read_write> = load %1
-    %4:void = glsl.imageStore %3, 1i, vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f)
-    ret
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureStore3D) {
-    auto* t = b.Var(ty.ptr(
-        handle, ty.Get<core::type::StorageTexture>(
-                    core::type::TextureDimension::k3d, core::TexelFormat::kR32Float,
-                    core::Access::kReadWrite,
-                    core::type::StorageTexture::SubtypeFor(core::TexelFormat::kR32Float, ty))));
-    t->SetBindingPoint(0, 0);
-    b.ir.root_block->Append(t);
-
-    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
-    b.Append(func->Block(), [&] {
-        auto* coords = b.Composite(ty.vec3<i32>(), 1_i, 2_i, 3_i);
-        auto* value = b.Composite(ty.vec4<f32>(), .5_f, 0_f, 0_f, 1_f);
-        b.Call(ty.void_(), core::BuiltinFn::kTextureStore, b.Load(t), coords, value);
-        b.Return(func);
-    });
-
-    auto* src = R"(
-$B1: {  # root
-  %1:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_storage_3d<r32float, read_write> = load %1
-    %4:void = textureStore %3, vec3<i32>(1i, 2i, 3i), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f)
-    ret
-  }
-}
-)";
-    ASSERT_EQ(src, str());
-
-    auto* expect = R"(
-$B1: {  # root
-  %1:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_storage_3d<r32float, read_write> = load %1
-    %4:void = glsl.imageStore %3, vec3<i32>(1i, 2i, 3i), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f)
-    ret
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-
-    EXPECT_EQ(expect, str());
-}
-
-TEST_F(GlslWriter_BuiltinPolyfillTest, TextureStoreArray) {
-    auto* t = b.Var(ty.ptr(
-        handle, ty.Get<core::type::StorageTexture>(
-                    core::type::TextureDimension::k2dArray, core::TexelFormat::kRgba32Float,
-                    core::Access::kReadWrite,
-                    core::type::StorageTexture::SubtypeFor(core::TexelFormat::kR32Float, ty))));
-    t->SetBindingPoint(0, 0);
-    b.ir.root_block->Append(t);
-
-    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
-    b.Append(func->Block(), [&] {
-        auto* coords = b.Composite(ty.vec2<i32>(), 1_i, 2_i);
-        auto* value = b.Composite(ty.vec4<f32>(), .5_f, .4_f, .3_f, 1_f);
-        b.Call(ty.void_(), core::BuiltinFn::kTextureStore, b.Load(t), coords, 3_u, value);
-        b.Return(func);
-    });
-
-    auto* src = R"(
-$B1: {  # root
-  %1:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_storage_2d_array<rgba32float, read_write> = load %1
-    %4:void = textureStore %3, vec2<i32>(1i, 2i), 3u, vec4<f32>(0.5f, 0.40000000596046447754f, 0.30000001192092895508f, 1.0f)
-    ret
-  }
-}
-)";
-    ASSERT_EQ(src, str());
-
-    auto* expect = R"(
-$B1: {  # root
-  %1:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(0, 0)
-}
-
-%foo = @fragment func():void {
-  $B2: {
-    %3:texture_storage_2d_array<rgba32float, read_write> = load %1
-    %4:i32 = convert 3u
-    %5:vec3<i32> = construct vec2<i32>(1i, 2i), %4
-    %6:void = glsl.imageStore %3, %5, vec4<f32>(0.5f, 0.40000000596046447754f, 0.30000001192092895508f, 1.0f)
-    ret
-  }
-}
-)";
-
-    Run(BuiltinPolyfill);
-    EXPECT_EQ(expect, str());
-}
-
 TEST_F(GlslWriter_BuiltinPolyfillTest, FMA_f32) {
     auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
     b.Append(func->Block(), [&] {
diff --git a/src/tint/lang/glsl/writer/raise/raise.cc b/src/tint/lang/glsl/writer/raise/raise.cc
index 0959342..3cf41ab 100644
--- a/src/tint/lang/glsl/writer/raise/raise.cc
+++ b/src/tint/lang/glsl/writer/raise/raise.cc
@@ -52,6 +52,7 @@
 #include "src/tint/lang/glsl/writer/raise/bitcast_polyfill.h"
 #include "src/tint/lang/glsl/writer/raise/builtin_polyfill.h"
 #include "src/tint/lang/glsl/writer/raise/shader_io.h"
+#include "src/tint/lang/glsl/writer/raise/texture_polyfill.h"
 
 namespace tint::glsl::writer {
 
@@ -115,7 +116,6 @@
     // TODO(dsinclair): OffsetFirstIndex
     // TODO(dsinclair): CombineSamplers
     // TODO(dsinclair): PadStructs
-    // TODO(dsinclair): Texture1DTo2D
 
     RUN_TRANSFORM(core::ir::transform::DirectVariableAccess, module,
                   core::ir::transform::DirectVariableAccessOptions{});
@@ -130,6 +130,7 @@
     RUN_TRANSFORM(raise::BinaryPolyfill, module);
     // Must come after zero-init as it will add builtins
     RUN_TRANSFORM(raise::BuiltinPolyfill, module);
+    RUN_TRANSFORM(raise::TexturePolyfill, module);
     // Must come after BuiltinPolyfill as builtins can add bitcasts
     RUN_TRANSFORM(raise::BitcastPolyfill, module);
 
diff --git a/src/tint/lang/glsl/writer/raise/texture_polyfill.cc b/src/tint/lang/glsl/writer/raise/texture_polyfill.cc
new file mode 100644
index 0000000..674b153
--- /dev/null
+++ b/src/tint/lang/glsl/writer/raise/texture_polyfill.cc
@@ -0,0 +1,414 @@
+// Copyright 2024 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "src/tint/lang/glsl/writer/raise/texture_polyfill.h"
+
+#include <utility>
+
+#include "src/tint/lang/core/fluent_types.h"  // IWYU pragma: export
+#include "src/tint/lang/core/ir/builder.h"
+#include "src/tint/lang/core/ir/module.h"
+#include "src/tint/lang/core/ir/validator.h"
+#include "src/tint/lang/core/type/depth_multisampled_texture.h"
+#include "src/tint/lang/core/type/depth_texture.h"
+#include "src/tint/lang/core/type/multisampled_texture.h"
+#include "src/tint/lang/core/type/sampled_texture.h"
+#include "src/tint/lang/core/type/storage_texture.h"
+#include "src/tint/lang/glsl/ir/builtin_call.h"
+#include "src/tint/lang/glsl/ir/member_builtin_call.h"
+
+namespace tint::glsl::writer::raise {
+namespace {
+
+using namespace tint::core::fluent_types;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+
+/// PIMPL state for the transform.
+struct State {
+    /// The IR module.
+    core::ir::Module& ir;
+
+    /// The IR builder.
+    core::ir::Builder b{ir};
+
+    /// The type manager.
+    core::type::Manager& ty{ir.Types()};
+
+    /// Process the module.
+    void Process() {
+        /// Converts all 1D texture types and accesses to 2D. This is required for GLSL ES, which
+        /// does not support 1D textures. We do this for desktop GL as well for consistency. This
+        /// could be relaxed in the future if desired.
+        UpgradeTexture1DVars();
+        UpgradeTexture1DParams();
+
+        Vector<core::ir::CoreBuiltinCall*, 4> call_worklist;
+        for (auto* inst : ir.Instructions()) {
+            if (auto* call = inst->As<core::ir::CoreBuiltinCall>()) {
+                switch (call->Func()) {
+                    case core::BuiltinFn::kTextureDimensions:
+                    case core::BuiltinFn::kTextureLoad:
+                    case core::BuiltinFn::kTextureNumLayers:
+                    case core::BuiltinFn::kTextureStore:
+                        call_worklist.Push(call);
+                        break;
+                    default:
+                        break;
+                }
+                continue;
+            }
+        }
+
+        // Replace the builtin calls that we found
+        for (auto* call : call_worklist) {
+            switch (call->Func()) {
+                case core::BuiltinFn::kTextureDimensions:
+                    TextureDimensions(call);
+                    break;
+                case core::BuiltinFn::kTextureLoad:
+                    TextureLoad(call);
+                    break;
+                case core::BuiltinFn::kTextureNumLayers:
+                    TextureNumLayers(call);
+                    break;
+                case core::BuiltinFn::kTextureStore:
+                    TextureStore(call);
+                    break;
+                default:
+                    TINT_UNREACHABLE();
+            }
+        }
+    }
+
+    std::optional<const core::type::Type*> UpgradeTexture1D(core::ir::Value* value) {
+        bool is_1d = false;
+        const core::type::Type* new_type = nullptr;
+        tint::Switch(
+            value->Type()->UnwrapPtr(),
+            [&](const core::type::SampledTexture* s) {
+                is_1d = s->Dim() == core::type::TextureDimension::k1d;
+                new_type = ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2d,
+                                                              s->Type());
+            },
+            [&](const core::type::StorageTexture* s) {
+                is_1d = s->Dim() == core::type::TextureDimension::k1d;
+                new_type = ty.Get<core::type::StorageTexture>(
+                    core::type::TextureDimension::k2d, s->TexelFormat(), s->Access(), s->Type());
+            });
+        if (!is_1d) {
+            return std::nullopt;
+        }
+
+        if (auto* ptr = value->Type()->As<core::type::Pointer>()) {
+            new_type = ty.ptr(ptr->AddressSpace(), new_type, ptr->Access());
+        }
+
+        // For each 1d texture usage we have to make sure return values and arguments are modified
+        // to fit the 2d texture.
+        for (auto usage : value->UsagesUnsorted()) {
+            if (auto* call = usage->instruction->As<core::ir::CoreBuiltinCall>()) {
+                switch (call->Func()) {
+                    case core::BuiltinFn::kTextureDimensions: {
+                        // Upgrade result to a vec2 and swizzle out the `x` component.
+                        auto* res = call->DetachResult();
+                        call->SetResults(b.InstructionResult(ty.vec2<u32>()));
+
+                        b.InsertAfter(call, [&] {
+                            auto* s = b.Swizzle(res->Type(), call, Vector<uint32_t, 1>{0});
+                            res->ReplaceAllUsesWith(s->Result(0));
+                        });
+                        break;
+                    }
+                    case core::BuiltinFn::kTextureLoad:
+                    case core::BuiltinFn::kTextureStore: {
+                        // Add a new coord item so it's a vec2.
+                        auto arg = call->Args()[1];
+                        b.InsertBefore(call, [&] {
+                            call->SetArg(1,
+                                         b.Construct(ty.vec2(arg->Type()), arg, b.Zero(arg->Type()))
+                                             ->Result(0));
+                        });
+                        break;
+                    }
+                    case core::BuiltinFn::kTextureSample: {
+                        // Add a new coord item so it's a vec2.
+                        auto arg = call->Args()[1];
+                        b.InsertBefore(call, [&] {
+                            call->SetArg(1,
+                                         b.Construct(ty.vec2(arg->Type()), arg, 0.5_f)->Result(0));
+                        });
+                        break;
+                    }
+                    case core::BuiltinFn::kTextureNumLevels:
+                        // No changes needed.
+                        break;
+                    default:
+                        TINT_UNREACHABLE() << "unknown usage instruction for texture";
+                }
+            }
+        }
+
+        return {new_type};
+    }
+
+    void UpgradeTexture1DVars() {
+        for (auto* inst : *ir.root_block) {
+            auto* var = inst->As<core::ir::Var>();
+            if (!var) {
+                continue;
+            }
+            auto new_type = UpgradeTexture1D(var->Result(0));
+            if (!new_type.has_value()) {
+                continue;
+            }
+            var->Result(0)->SetType(new_type.value());
+
+            // All of the usages of the textures should involve loading them as the `var`
+            // declarations will be pointers and the function usages require non-pointer textures.
+            for (auto usage : var->Result(0)->UsagesUnsorted()) {
+                UpgradeLoadOf1DTexture(usage->instruction);
+            }
+        }
+    }
+
+    void UpgradeTexture1DParams() {
+        for (auto func : ir.functions) {
+            for (auto* param : func->Params()) {
+                auto new_type = UpgradeTexture1D(param);
+                if (!new_type.has_value()) {
+                    continue;
+                }
+                param->SetType(new_type.value());
+            }
+        }
+    }
+
+    void UpgradeLoadOf1DTexture(core::ir::Instruction* inst) {
+        auto* ld = inst->As<core::ir::Load>();
+        TINT_ASSERT(ld);
+
+        auto new_type = UpgradeTexture1D(ld->Result(0));
+        if (!new_type.has_value()) {
+            return;
+        }
+        ld->Result(0)->SetType(new_type.value());
+    }
+
+    // `textureDimensions` returns an unsigned scalar / vector in WGSL. `textureSize` and
+    // `imageSize` return a signed scalar / vector in GLSL.  So, we  need to cast the result to
+    // the needed WGSL type.
+    void TextureDimensions(core::ir::BuiltinCall* call) {
+        auto args = call->Args();
+        auto* tex = args[0]->Type()->As<core::type::Texture>();
+
+        b.InsertBefore(call, [&] {
+            auto func = glsl::BuiltinFn::kTextureSize;
+            if (tex->Is<core::type::StorageTexture>()) {
+                func = glsl::BuiltinFn::kImageSize;
+            }
+
+            Vector<core::ir::Value*, 2> new_args;
+            new_args.Push(args[0]);
+
+            if (!(tex->Is<core::type::StorageTexture>() ||
+                  tex->Is<core::type::MultisampledTexture>() ||
+                  tex->Is<core::type::DepthMultisampledTexture>())) {
+                // Add a LOD to any texture other then storage, and multi-sampled textures which
+                // does not already have an LOD.
+                if (args.Length() == 1) {
+                    new_args.Push(b.Constant(0_i));
+                } else {
+                    // Make sure the LOD is a i32
+                    new_args.Push(b.Bitcast(ty.i32(), args[1])->Result(0));
+                }
+            }
+
+            auto ret_type = call->Result(0)->Type();
+
+            // In GLSL the array dimensions return a 3rd parameter.
+            if (tex->Dim() == core::type::TextureDimension::k2dArray ||
+                tex->Dim() == core::type::TextureDimension::kCubeArray) {
+                ret_type = ty.vec(ty.i32(), 3);
+            } else {
+                ret_type = ty.MatchWidth(ty.i32(), call->Result(0)->Type());
+            }
+
+            core::ir::Value* result =
+                b.Call<glsl::ir::BuiltinCall>(ret_type, func, new_args)->Result(0);
+
+            // `textureSize` on array samplers returns the array size in the final component, WGSL
+            // requires a 2 component response, so drop the array size
+            if (tex->Dim() == core::type::TextureDimension::k2dArray ||
+                tex->Dim() == core::type::TextureDimension::kCubeArray) {
+                ret_type = ty.MatchWidth(ty.i32(), call->Result(0)->Type());
+                result = b.Swizzle(ret_type, result, {0, 1})->Result(0);
+            }
+
+            b.BitcastWithResult(call->DetachResult(), result)->Result(0);
+        });
+        call->Destroy();
+    }
+
+    // `textureNumLayers` returns an unsigned scalar in WGSL. `textureSize` and `imageSize`
+    // return a signed scalar / vector in GLSL.
+    //
+    // For the `textureSize` and `imageSize` calls the valid WGSL values always produce a `vec3` in
+    // GLSL so we extract the `z` component for the number of layers.
+    void TextureNumLayers(core::ir::BuiltinCall* call) {
+        b.InsertBefore(call, [&] {
+            auto args = call->Args();
+            auto* tex = args[0]->Type()->As<core::type::Texture>();
+
+            auto func = glsl::BuiltinFn::kTextureSize;
+            if (tex->Is<core::type::StorageTexture>()) {
+                func = glsl::BuiltinFn::kImageSize;
+            }
+
+            Vector<core::ir::Value*, 2> new_args;
+            new_args.Push(args[0]);
+
+            // Non-storage textures require a LOD
+            if (!tex->Is<core::type::StorageTexture>()) {
+                new_args.Push(b.Constant(0_i));
+            }
+
+            auto* new_call = b.Call<glsl::ir::BuiltinCall>(ty.vec(ty.i32(), 3), func, new_args);
+
+            auto* swizzle = b.Swizzle(ty.i32(), new_call, {2});
+            b.BitcastWithResult(call->DetachResult(), swizzle->Result(0));
+        });
+        call->Destroy();
+    }
+
+    void TextureLoad(core::ir::CoreBuiltinCall* call) {
+        auto args = call->Args();
+        auto* tex = args[0];
+
+        // No loading from a depth texture in GLSL, so we should never have gotten here.
+        TINT_ASSERT(!tex->Type()->Is<core::type::DepthTexture>());
+
+        auto* tex_type = tex->Type()->As<core::type::Texture>();
+
+        glsl::BuiltinFn func = glsl::BuiltinFn::kNone;
+        if (tex_type->Is<core::type::StorageTexture>()) {
+            func = glsl::BuiltinFn::kImageLoad;
+        } else {
+            func = glsl::BuiltinFn::kTexelFetch;
+        }
+
+        bool is_ms = tex_type->Is<core::type::MultisampledTexture>();
+        bool is_storage = tex_type->Is<core::type::StorageTexture>();
+        b.InsertBefore(call, [&] {
+            Vector<core::ir::Value*, 3> call_args{tex};
+            switch (tex_type->Dim()) {
+                case core::type::TextureDimension::k2d: {
+                    call_args.Push(b.Convert(ty.vec2<i32>(), args[1])->Result(0));
+                    if (is_ms) {
+                        call_args.Push(b.Convert(ty.i32(), args[2])->Result(0));
+                    } else {
+                        if (!is_storage) {
+                            call_args.Push(b.Convert(ty.i32(), args[2])->Result(0));
+                        }
+                    }
+                    break;
+                }
+                case core::type::TextureDimension::k2dArray: {
+                    auto* coord = b.Convert(ty.vec2<i32>(), args[1]);
+                    auto* ary_idx = b.Convert(ty.i32(), args[2]);
+                    call_args.Push(b.Construct(ty.vec3<i32>(), coord, ary_idx)->Result(0));
+
+                    if (!is_storage) {
+                        call_args.Push(b.Convert(ty.i32(), args[3])->Result(0));
+                    }
+                    break;
+                }
+                case core::type::TextureDimension::k3d: {
+                    call_args.Push(b.Convert(ty.vec3<i32>(), args[1])->Result(0));
+
+                    if (!is_storage) {
+                        call_args.Push(b.Convert(ty.i32(), args[2])->Result(0));
+                    }
+                    break;
+                }
+                default:
+                    TINT_UNREACHABLE();
+            }
+
+            b.CallWithResult<glsl::ir::BuiltinCall>(call->DetachResult(), func,
+                                                    std::move(call_args));
+        });
+        call->Destroy();
+    }
+
+    void TextureStore(core::ir::BuiltinCall* call) {
+        auto args = call->Args();
+        auto* tex = args[0];
+        auto* tex_type = tex->Type()->As<core::type::StorageTexture>();
+        TINT_ASSERT(tex_type);
+
+        Vector<core::ir::Value*, 3> new_args;
+        new_args.Push(tex);
+
+        b.InsertBefore(call, [&] {
+            if (tex_type->Dim() == core::type::TextureDimension::k2dArray) {
+                auto* coords = args[1];
+                auto* array_idx = args[2];
+
+                auto* coords_ty = coords->Type()->As<core::type::Vector>();
+                TINT_ASSERT(coords_ty);
+
+                auto* new_coords = b.Construct(ty.vec3(coords_ty->Type()), coords,
+                                               b.Convert(coords_ty->Type(), array_idx));
+                new_args.Push(new_coords->Result(0));
+
+                new_args.Push(args[3]);
+            } else {
+                new_args.Push(args[1]);
+                new_args.Push(args[2]);
+            }
+
+            b.CallWithResult<glsl::ir::BuiltinCall>(
+                call->DetachResult(), glsl::BuiltinFn::kImageStore, std::move(new_args));
+        });
+        call->Destroy();
+    }
+};
+
+}  // namespace
+
+Result<SuccessType> TexturePolyfill(core::ir::Module& ir) {
+    auto result = ValidateAndDumpIfNeeded(ir, "glsl.TexturePolyfill transform");
+    if (result != Success) {
+        return result.Failure();
+    }
+
+    State{ir}.Process();
+
+    return Success;
+}
+
+}  // namespace tint::glsl::writer::raise
diff --git a/src/tint/lang/glsl/writer/raise/texture_polyfill.h b/src/tint/lang/glsl/writer/raise/texture_polyfill.h
new file mode 100644
index 0000000..4879b38
--- /dev/null
+++ b/src/tint/lang/glsl/writer/raise/texture_polyfill.h
@@ -0,0 +1,49 @@
+// Copyright 2024 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef SRC_TINT_LANG_GLSL_WRITER_RAISE_TEXTURE_POLYFILL_H_
+#define SRC_TINT_LANG_GLSL_WRITER_RAISE_TEXTURE_POLYFILL_H_
+
+#include "src/tint/utils/result/result.h"
+
+// Forward declarations.
+namespace tint::core::ir {
+class Module;
+}  // namespace tint::core::ir
+
+namespace tint::glsl::writer::raise {
+
+/// TexturePolyfill is a transform that replaces textures, samplers and functions calls to make them
+/// compatible with GLSL ES 3.10
+///
+/// @param module the module to transform
+/// @returns success or failure
+Result<SuccessType> TexturePolyfill(core::ir::Module& module);
+
+}  // namespace tint::glsl::writer::raise
+
+#endif  // SRC_TINT_LANG_GLSL_WRITER_RAISE_TEXTURE_POLYFILL_H_
diff --git a/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc b/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc
new file mode 100644
index 0000000..dfa9faa
--- /dev/null
+++ b/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc
@@ -0,0 +1,859 @@
+// Copyright 2024 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "src/tint/lang/glsl/writer/raise/texture_polyfill.h"
+
+#include "gtest/gtest.h"
+#include "src/tint/lang/core/fluent_types.h"
+#include "src/tint/lang/core/ir/transform/helper_test.h"
+#include "src/tint/lang/core/number.h"
+#include "src/tint/lang/core/type/depth_multisampled_texture.h"
+#include "src/tint/lang/core/type/depth_texture.h"
+#include "src/tint/lang/core/type/multisampled_texture.h"
+#include "src/tint/lang/core/type/sampled_texture.h"
+#include "src/tint/lang/core/type/storage_texture.h"
+
+using namespace tint::core::fluent_types;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+
+namespace tint::glsl::writer::raise {
+namespace {
+
+using GlslWriter_TexturePolyfillTest = core::ir::transform::TransformTest;
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureDimensions_1d) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k1d, ty.f32()));
+    auto* func = b.Function("foo", ty.u32());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* result = b.Call<u32>(core::BuiltinFn::kTextureDimensions, t);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_1d<f32>):u32 {
+  $B1: {
+    %3:u32 = textureDimensions %t
+    ret %3
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_2d<f32>):u32 {
+  $B1: {
+    %3:vec2<i32> = glsl.textureSize %t, 0i
+    %4:vec2<u32> = bitcast %3
+    %5:u32 = swizzle %4, x
+    ret %5
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureDimensions_2d_WithoutLod) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2d, ty.f32()));
+    auto* func = b.Function("foo", ty.vec2<u32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_2d<f32>):vec2<u32> {
+  $B1: {
+    %3:vec2<u32> = textureDimensions %t
+    ret %3
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_2d<f32>):vec2<u32> {
+  $B1: {
+    %3:vec2<i32> = glsl.textureSize %t, 0i
+    %4:vec2<u32> = bitcast %3
+    ret %4
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureDimensions_2d_WithU32Lod) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2d, ty.f32()));
+    auto* func = b.Function("foo", ty.vec2<u32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t, 3_u);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_2d<f32>):vec2<u32> {
+  $B1: {
+    %3:vec2<u32> = textureDimensions %t, 3u
+    ret %3
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_2d<f32>):vec2<u32> {
+  $B1: {
+    %3:i32 = bitcast 3u
+    %4:vec2<i32> = glsl.textureSize %t, %3
+    %5:vec2<u32> = bitcast %4
+    ret %5
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureDimensions_2dArray) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2dArray, ty.f32()));
+    auto* func = b.Function("foo", ty.vec2<u32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_2d_array<f32>):vec2<u32> {
+  $B1: {
+    %3:vec2<u32> = textureDimensions %t
+    ret %3
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_2d_array<f32>):vec2<u32> {
+  $B1: {
+    %3:vec3<i32> = glsl.textureSize %t, 0i
+    %4:vec2<i32> = swizzle %3, xy
+    %5:vec2<u32> = bitcast %4
+    ret %5
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureDimensions_Storage2D) {
+    auto* t = b.FunctionParam(
+        "t",
+        ty.Get<core::type::StorageTexture>(
+            core::type::TextureDimension::k2d, core::TexelFormat::kRg32Float, core::Access::kRead,
+            core::type::StorageTexture::SubtypeFor(core::TexelFormat::kRg32Float, ty)));
+    auto* func = b.Function("foo", ty.vec2<u32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_storage_2d<rg32float, read>):vec2<u32> {
+  $B1: {
+    %3:vec2<u32> = textureDimensions %t
+    ret %3
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_storage_2d<rg32float, read>):vec2<u32> {
+  $B1: {
+    %3:vec2<i32> = glsl.imageSize %t
+    %4:vec2<u32> = bitcast %3
+    ret %4
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureDimensions_DepthMultisampled) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::DepthMultisampledTexture>(core::type::TextureDimension::k2d));
+    auto* func = b.Function("foo", ty.vec2<u32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* result = b.Call<vec2<u32>>(core::BuiltinFn::kTextureDimensions, t);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_depth_multisampled_2d):vec2<u32> {
+  $B1: {
+    %3:vec2<u32> = textureDimensions %t
+    ret %3
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_depth_multisampled_2d):vec2<u32> {
+  $B1: {
+    %3:vec2<i32> = glsl.textureSize %t
+    %4:vec2<u32> = bitcast %3
+    ret %4
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureNumLayers_2DArray) {
+    auto* var =
+        b.Var("v", handle,
+              ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2dArray, ty.f32()),
+              core::Access::kReadWrite);
+    var->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(var);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_2d_array<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_2d_array<f32> = load %v
+    %4:u32 = textureNumLayers %3
+    %x:u32 = let %4
+    ret
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_2d_array<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_2d_array<f32> = load %v
+    %4:vec3<i32> = glsl.textureSize %3, 0i
+    %5:i32 = swizzle %4, z
+    %6:u32 = bitcast %5
+    %x:u32 = let %6
+    ret
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureNumLayers_Depth2DArray) {
+    auto* var =
+        b.Var("v", handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2dArray),
+              core::Access::kReadWrite);
+    var->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(var);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_depth_2d_array, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_depth_2d_array = load %v
+    %4:u32 = textureNumLayers %3
+    %x:u32 = let %4
+    ret
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_depth_2d_array, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_depth_2d_array = load %v
+    %4:vec3<i32> = glsl.textureSize %3, 0i
+    %5:i32 = swizzle %4, z
+    %6:u32 = bitcast %5
+    %x:u32 = let %6
+    ret
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureNumLayers_CubeArray) {
+    auto* var = b.Var(
+        "v", handle,
+        ty.Get<core::type::SampledTexture>(core::type::TextureDimension::kCubeArray, ty.f32()),
+        core::Access::kReadWrite);
+    var->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(var);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_cube_array<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_cube_array<f32> = load %v
+    %4:u32 = textureNumLayers %3
+    %x:u32 = let %4
+    ret
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_cube_array<f32>, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_cube_array<f32> = load %v
+    %4:vec3<i32> = glsl.textureSize %3, 0i
+    %5:i32 = swizzle %4, z
+    %6:u32 = bitcast %5
+    %x:u32 = let %6
+    ret
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureNumLayers_DepthCubeArray) {
+    auto* var = b.Var("v", handle,
+                      ty.Get<core::type::DepthTexture>(core::type::TextureDimension::kCubeArray),
+                      core::Access::kReadWrite);
+    var->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(var);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_depth_cube_array, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_depth_cube_array = load %v
+    %4:u32 = textureNumLayers %3
+    %x:u32 = let %4
+    ret
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_depth_cube_array, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_depth_cube_array = load %v
+    %4:vec3<i32> = glsl.textureSize %3, 0i
+    %5:i32 = swizzle %4, z
+    %6:u32 = bitcast %5
+    %x:u32 = let %6
+    ret
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureNumLayers_Storage2DArray) {
+    auto* storage_ty = ty.Get<core::type::StorageTexture>(
+        core::type::TextureDimension::k2dArray, core::TexelFormat::kRg32Float, core::Access::kRead,
+        core::type::StorageTexture::SubtypeFor(core::TexelFormat::kRg32Float, ty));
+
+    auto* var = b.Var("v", handle, storage_ty, core::Access::kReadWrite);
+    var->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(var);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        b.Let("x", b.Call(ty.u32(), core::BuiltinFn::kTextureNumLayers, b.Load(var)));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_storage_2d_array<rg32float, read>, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d_array<rg32float, read> = load %v
+    %4:u32 = textureNumLayers %3
+    %x:u32 = let %4
+    ret
+  }
+}
+)";
+    EXPECT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %v:ptr<handle, texture_storage_2d_array<rg32float, read>, read_write> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d_array<rg32float, read> = load %v
+    %4:vec3<i32> = glsl.imageSize %3
+    %5:i32 = swizzle %4, z
+    %6:u32 = bitcast %5
+    %x:u32 = let %6
+    ret
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureLoad_1DF32) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k1d, ty.f32()));
+    auto* func = b.Function("foo", ty.vec4<f32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Zero<i32>();
+        auto* level = b.Zero<u32>();
+        auto* result = b.Call<vec4<f32>>(core::BuiltinFn::kTextureLoad, t, coords, level);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_1d<f32>):vec4<f32> {
+  $B1: {
+    %3:vec4<f32> = textureLoad %t, 0i, 0u
+    ret %3
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_2d<f32>):vec4<f32> {
+  $B1: {
+    %3:vec2<i32> = construct 0i, 0i
+    %4:vec2<i32> = convert %3
+    %5:i32 = convert 0u
+    %6:vec4<f32> = glsl.texelFetch %t, %4, %5
+    ret %6
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureLoad_2DLevelI32) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k2d, ty.i32()));
+    auto* func = b.Function("foo", ty.vec4<i32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Zero<vec2<i32>>();
+        auto* level = b.Zero<i32>();
+        auto* result = b.Call<vec4<i32>>(core::BuiltinFn::kTextureLoad, t, coords, level);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_2d<i32>):vec4<i32> {
+  $B1: {
+    %3:vec4<i32> = textureLoad %t, vec2<i32>(0i), 0i
+    ret %3
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_2d<i32>):vec4<i32> {
+  $B1: {
+    %3:vec2<i32> = convert vec2<i32>(0i)
+    %4:i32 = convert 0i
+    %5:vec4<i32> = glsl.texelFetch %t, %3, %4
+    ret %5
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureLoad_3DLevelU32) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::SampledTexture>(core::type::TextureDimension::k3d, ty.f32()));
+    auto* func = b.Function("foo", ty.vec4<f32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Zero<vec3<i32>>();
+        auto* level = b.Zero<u32>();
+        auto* result = b.Call<vec4<f32>>(core::BuiltinFn::kTextureLoad, t, coords, level);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_3d<f32>):vec4<f32> {
+  $B1: {
+    %3:vec4<f32> = textureLoad %t, vec3<i32>(0i), 0u
+    ret %3
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_3d<f32>):vec4<f32> {
+  $B1: {
+    %3:vec3<i32> = convert vec3<i32>(0i)
+    %4:i32 = convert 0u
+    %5:vec4<f32> = glsl.texelFetch %t, %3, %4
+    ret %5
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureLoad_Multisampled2DI32) {
+    auto* t = b.FunctionParam(
+        "t", ty.Get<core::type::MultisampledTexture>(core::type::TextureDimension::k2d, ty.i32()));
+    auto* func = b.Function("foo", ty.vec4<i32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Zero<vec2<i32>>();
+        auto* sample_idx = b.Zero<u32>();
+        auto* result = b.Call<vec4<i32>>(core::BuiltinFn::kTextureLoad, t, coords, sample_idx);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_multisampled_2d<i32>):vec4<i32> {
+  $B1: {
+    %3:vec4<i32> = textureLoad %t, vec2<i32>(0i), 0u
+    ret %3
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_multisampled_2d<i32>):vec4<i32> {
+  $B1: {
+    %3:vec2<i32> = convert vec2<i32>(0i)
+    %4:i32 = convert 0u
+    %5:vec4<i32> = glsl.texelFetch %t, %3, %4
+    ret %5
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureLoad_Storage2D) {
+    auto* t = b.FunctionParam(
+        "t",
+        ty.Get<core::type::StorageTexture>(
+            core::type::TextureDimension::k2d, core::TexelFormat::kRg32Float, core::Access::kRead,
+            core::type::StorageTexture::SubtypeFor(core::TexelFormat::kRg32Float, ty)));
+    auto* func = b.Function("foo", ty.vec4<f32>());
+    func->SetParams({t});
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Zero<vec2<i32>>();
+        auto* result = b.Call<vec4<f32>>(core::BuiltinFn::kTextureLoad, t, coords);
+        b.Return(func, result);
+    });
+
+    auto* src = R"(
+%foo = func(%t:texture_storage_2d<rg32float, read>):vec4<f32> {
+  $B1: {
+    %3:vec4<f32> = textureLoad %t, vec2<i32>(0i)
+    ret %3
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+%foo = func(%t:texture_storage_2d<rg32float, read>):vec4<f32> {
+  $B1: {
+    %3:vec2<i32> = convert vec2<i32>(0i)
+    %4:vec4<f32> = glsl.imageLoad %t, %3
+    ret %4
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureStore1D) {
+    auto* t = b.Var(ty.ptr(
+        handle, ty.Get<core::type::StorageTexture>(
+                    core::type::TextureDimension::k1d, core::TexelFormat::kR32Float,
+                    core::Access::kReadWrite,
+                    core::type::StorageTexture::SubtypeFor(core::TexelFormat::kR32Float, ty))));
+    t->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(t);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Value(1_i);
+        auto* value = b.Composite(ty.vec4<f32>(), .5_f, 0_f, 0_f, 1_f);
+        b.Call(ty.void_(), core::BuiltinFn::kTextureStore, b.Load(t), coords, value);
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_1d<r32float, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_1d<r32float, read_write> = load %1
+    %4:void = textureStore %3, 1i, vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_2d<r32float, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d<r32float, read_write> = load %1
+    %4:vec2<i32> = construct 1i, 0i
+    %5:void = glsl.imageStore %3, %4, vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureStore3D) {
+    auto* t = b.Var(ty.ptr(
+        handle, ty.Get<core::type::StorageTexture>(
+                    core::type::TextureDimension::k3d, core::TexelFormat::kR32Float,
+                    core::Access::kReadWrite,
+                    core::type::StorageTexture::SubtypeFor(core::TexelFormat::kR32Float, ty))));
+    t->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(t);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Composite(ty.vec3<i32>(), 1_i, 2_i, 3_i);
+        auto* value = b.Composite(ty.vec4<f32>(), .5_f, 0_f, 0_f, 1_f);
+        b.Call(ty.void_(), core::BuiltinFn::kTextureStore, b.Load(t), coords, value);
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_3d<r32float, read_write> = load %1
+    %4:void = textureStore %3, vec3<i32>(1i, 2i, 3i), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_3d<r32float, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_3d<r32float, read_write> = load %1
+    %4:void = glsl.imageStore %3, vec3<i32>(1i, 2i, 3i), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f)
+    ret
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureStoreArray) {
+    auto* t = b.Var(ty.ptr(
+        handle, ty.Get<core::type::StorageTexture>(
+                    core::type::TextureDimension::k2dArray, core::TexelFormat::kRgba32Float,
+                    core::Access::kReadWrite,
+                    core::type::StorageTexture::SubtypeFor(core::TexelFormat::kR32Float, ty))));
+    t->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(t);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Composite(ty.vec2<i32>(), 1_i, 2_i);
+        auto* value = b.Composite(ty.vec4<f32>(), .5_f, .4_f, .3_f, 1_f);
+        b.Call(ty.void_(), core::BuiltinFn::kTextureStore, b.Load(t), coords, 3_u, value);
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d_array<rgba32float, read_write> = load %1
+    %4:void = textureStore %3, vec2<i32>(1i, 2i), 3u, vec4<f32>(0.5f, 0.40000000596046447754f, 0.30000001192092895508f, 1.0f)
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_2d_array<rgba32float, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d_array<rgba32float, read_write> = load %1
+    %4:i32 = convert 3u
+    %5:vec3<i32> = construct vec2<i32>(1i, 2i), %4
+    %6:void = glsl.imageStore %3, %5, vec4<f32>(0.5f, 0.40000000596046447754f, 0.30000001192092895508f, 1.0f)
+    ret
+  }
+}
+)";
+
+    Run(TexturePolyfill);
+    EXPECT_EQ(expect, str());
+}
+
+}  // namespace
+}  // namespace tint::glsl::writer::raise
diff --git a/src/tint/lang/glsl/writer/type_test.cc b/src/tint/lang/glsl/writer/type_test.cc
index 26343c2..8d4d2cd 100644
--- a/src/tint/lang/glsl/writer/type_test.cc
+++ b/src/tint/lang/glsl/writer/type_test.cc
@@ -712,7 +712,6 @@
     GlslWriterTest,
     GlslWriterSampledTextureNonESTest,
     testing::Values(
-        GlslTextureData{core::type::TextureDimension::k1d, TextureDataType::kF32, "sampler1D"},
         GlslTextureData{core::type::TextureDimension::k2d, TextureDataType::kF32, "sampler2D"},
         GlslTextureData{core::type::TextureDimension::k2dArray, TextureDataType::kF32,
                         "sampler2DArray"},
@@ -721,7 +720,6 @@
         GlslTextureData{core::type::TextureDimension::kCubeArray, TextureDataType::kF32,
                         "samplerCubeArray"},
 
-        GlslTextureData{core::type::TextureDimension::k1d, TextureDataType::kI32, "isampler1D"},
         GlslTextureData{core::type::TextureDimension::k2d, TextureDataType::kI32, "isampler2D"},
         GlslTextureData{core::type::TextureDimension::k2dArray, TextureDataType::kI32,
                         "isampler2DArray"},
@@ -730,7 +728,6 @@
         GlslTextureData{core::type::TextureDimension::kCubeArray, TextureDataType::kI32,
                         "isamplerCubeArray"},
 
-        GlslTextureData{core::type::TextureDimension::k1d, TextureDataType::kU32, "usampler1D"},
         GlslTextureData{core::type::TextureDimension::k2d, TextureDataType::kU32, "usampler2D"},
         GlslTextureData{core::type::TextureDimension::k2dArray, TextureDataType::kU32,
                         "usampler2DArray"},
@@ -983,8 +980,6 @@
     GlslWriterTest,
     GlslWriterStorageTextureNonESTest,
     testing::Values(
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kRead,
-                               TextureDataType::kF32, "readonly image1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kRead,
                                TextureDataType::kF32, "readonly image2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kRead,
@@ -996,8 +991,6 @@
         GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kRead,
                                TextureDataType::kF32, "readonly imageCubeArray"},
 
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kWrite,
-                               TextureDataType::kF32, "writeonly image1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kWrite,
                                TextureDataType::kF32, "writeonly image2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kWrite,
@@ -1009,8 +1002,6 @@
         GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kWrite,
                                TextureDataType::kF32, "writeonly imageCubeArray"},
 
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kReadWrite,
-                               TextureDataType::kF32, "image1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kReadWrite,
                                TextureDataType::kF32, "image2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kReadWrite,
@@ -1022,8 +1013,6 @@
         GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kReadWrite,
                                TextureDataType::kF32, "imageCubeArray"},
 
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kRead,
-                               TextureDataType::kI32, "readonly iimage1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kRead,
                                TextureDataType::kI32, "readonly iimage2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kRead,
@@ -1035,8 +1024,6 @@
         GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kRead,
                                TextureDataType::kI32, "readonly iimageCubeArray"},
 
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kWrite,
-                               TextureDataType::kI32, "writeonly iimage1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kWrite,
                                TextureDataType::kI32, "writeonly iimage2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kWrite,
@@ -1048,8 +1035,6 @@
         GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kWrite,
                                TextureDataType::kI32, "writeonly iimageCubeArray"},
 
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kReadWrite,
-                               TextureDataType::kI32, "iimage1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kReadWrite,
                                TextureDataType::kI32, "iimage2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kReadWrite,
@@ -1061,8 +1046,6 @@
         GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kReadWrite,
                                TextureDataType::kI32, "iimageCubeArray"},
 
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kRead,
-                               TextureDataType::kU32, "readonly uimage1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kRead,
                                TextureDataType::kU32, "readonly uimage2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kRead,
@@ -1074,8 +1057,6 @@
         GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kRead,
                                TextureDataType::kU32, "readonly uimageCubeArray"},
 
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kWrite,
-                               TextureDataType::kU32, "writeonly uimage1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kWrite,
                                TextureDataType::kU32, "writeonly uimage2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kWrite,
@@ -1087,8 +1068,6 @@
         GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kWrite,
                                TextureDataType::kU32, "writeonly uimageCubeArray"},
 
-        GlslStorageTextureData{core::type::TextureDimension::k1d, core::Access::kReadWrite,
-                               TextureDataType::kU32, "uimage1D"},
         GlslStorageTextureData{core::type::TextureDimension::k2d, core::Access::kReadWrite,
                                TextureDataType::kU32, "uimage2D"},
         GlslStorageTextureData{core::type::TextureDimension::k2dArray, core::Access::kReadWrite,
diff --git a/test/tint/bug/chromium/1405676.wgsl.expected.ir.glsl b/test/tint/bug/chromium/1405676.wgsl.expected.ir.glsl
index 735f3d9..709e4bc 100644
--- a/test/tint/bug/chromium/1405676.wgsl.expected.ir.glsl
+++ b/test/tint/bug/chromium/1405676.wgsl.expected.ir.glsl
@@ -1,8 +1,8 @@
 #version 310 es
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 void d() {
-  int v = int(1);
+  ivec2 v = ivec2(ivec2(1, 0));
   texelFetch(arg_0, v, int(0));
   float l = 0.14112000167369842529f;
 }
diff --git a/test/tint/bug/chromium/342840932.wgsl.expected.ir.glsl b/test/tint/bug/chromium/342840932.wgsl.expected.ir.glsl
index d77fc04..72afc1d 100644
--- a/test/tint/bug/chromium/342840932.wgsl.expected.ir.glsl
+++ b/test/tint/bug/chromium/342840932.wgsl.expected.ir.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
-layout(binding = 0, r32ui) uniform highp readonly uimage1D image_dup_src;
-layout(binding = 1, r32ui) uniform highp writeonly uimage1D image_dst;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D image_dup_src;
+layout(binding = 1, r32ui) uniform highp writeonly uimage2D image_dst;
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/01e21e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/01e21e.wgsl.expected.ir.glsl
index ff7d4c6..a0979f2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/01e21e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/01e21e.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uint textureDimensions_01e21e() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uint textureDimensions_01e21e() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.glsl
index 1b7d6c4..19cb9a4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_022903() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_022903();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_022903() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_022903();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_022903() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0329b0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/0329b0.wgsl.expected.ir.glsl
index e341638..9bce7e7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0329b0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0329b0.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_0329b0() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_0329b0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_0329b0() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_0329b0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_0329b0() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/033ea7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/033ea7.wgsl.expected.ir.glsl
index 64615d9..5269180 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/033ea7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/033ea7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 uint textureDimensions_033ea7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_033ea7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 uint textureDimensions_033ea7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_033ea7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_033ea7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/09140b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/09140b.wgsl.expected.ir.glsl
index a5d9dbf..229091d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/09140b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/09140b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_09140b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_09140b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_09140b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_09140b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0c0b0c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/0c0b0c.wgsl.expected.ir.glsl
index 960f9cc..f7ed7ec 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0c0b0c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0c0b0c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_0c0b0c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_0c0b0c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_0c0b0c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_0c0b0c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/20ecef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/20ecef.wgsl.expected.ir.glsl
index 3b20861..94d6891 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/20ecef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/20ecef.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 uint textureDimensions_20ecef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_20ecef();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 uint textureDimensions_20ecef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_20ecef();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/212362.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/212362.wgsl.expected.ir.glsl
index 3d1e9c2..c3d21d6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/212362.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/212362.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_212362() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_212362();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_212362() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_212362();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_212362() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/26d6bf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/26d6bf.wgsl.expected.ir.glsl
index 95b5f4c..39e012e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/26d6bf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/26d6bf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_26d6bf() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_26d6bf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_26d6bf() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_26d6bf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_26d6bf() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/284c27.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/284c27.wgsl.expected.ir.glsl
index ee62b99..b1c7a5d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/284c27.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/284c27.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_284c27() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_284c27() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_284c27() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2bafdf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/2bafdf.wgsl.expected.ir.glsl
index 13a27a1..f6f4cee 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2bafdf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2bafdf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 uint textureDimensions_2bafdf() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_2bafdf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 uint textureDimensions_2bafdf() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_2bafdf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_2bafdf() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2dc5c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/2dc5c5.wgsl.expected.ir.glsl
index c061f89..9a8d190 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2dc5c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2dc5c5.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_2dc5c5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_2dc5c5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_2dc5c5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_2dc5c5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_2dc5c5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3af3e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/3af3e7.wgsl.expected.ir.glsl
index 8fc3fdb..5e108b6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3af3e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3af3e7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_3af3e7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_3af3e7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_3af3e7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_3af3e7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4e540a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/4e540a.wgsl.expected.ir.glsl
index 7bd888c..5e2a9ee 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4e540a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4e540a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 uint textureDimensions_4e540a() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_4e540a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 uint textureDimensions_4e540a() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_4e540a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/542c62.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/542c62.wgsl.expected.ir.glsl
index 52e135b..699148d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/542c62.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/542c62.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_542c62() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_542c62() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/58a82d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/58a82d.wgsl.expected.ir.glsl
index f752e2c..2c26aad 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/58a82d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/58a82d.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_58a82d() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_58a82d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_58a82d() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_58a82d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5df042.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/5df042.wgsl.expected.ir.glsl
index 842526b..586e59f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5df042.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5df042.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_5df042() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_5df042();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_5df042() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_5df042();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_5df042() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/607979.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/607979.wgsl.expected.ir.glsl
index af5f1870..13c9f0e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/607979.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/607979.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_607979() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_607979();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_607979() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_607979();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/709357.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/709357.wgsl.expected.ir.glsl
index 17937c4..dfa5e40 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/709357.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/709357.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_709357() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_709357();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_709357() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_709357();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_709357() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7228de.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/7228de.wgsl.expected.ir.glsl
index 17331d8..1773eeb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7228de.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7228de.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_7228de() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_7228de();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_7228de() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_7228de();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/740e7c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/740e7c.wgsl.expected.ir.glsl
index bf76697..1fbb56b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/740e7c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/740e7c.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 uint textureDimensions_740e7c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 uint textureDimensions_740e7c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/797c30.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/797c30.wgsl.expected.ir.glsl
index 87647b0..7b15ed3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/797c30.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/797c30.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_797c30() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_797c30();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_797c30() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_797c30();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_797c30() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7c753b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/7c753b.wgsl.expected.ir.glsl
index 9f8cb41..5f3a8b4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7c753b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7c753b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_7c753b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_7c753b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_7c753b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_7c753b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_7c753b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7d8439.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/7d8439.wgsl.expected.ir.glsl
index f9412ab..15246e5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7d8439.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7d8439.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_7d8439() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_7d8439() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_7d8439() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/841ebe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/841ebe.wgsl.expected.ir.glsl
index ce15bac..4a944fa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/841ebe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/841ebe.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_841ebe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_841ebe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_841ebe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_841ebe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_841ebe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/84f363.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/84f363.wgsl.expected.ir.glsl
index e005440..8bd9e13 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/84f363.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/84f363.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_84f363() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_84f363();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_84f363() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_84f363();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8e5de6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/8e5de6.wgsl.expected.ir.glsl
index 7598198..1f614ca 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8e5de6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8e5de6.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_8e5de6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_8e5de6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_8e5de6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_8e5de6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_8e5de6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8efd47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/8efd47.wgsl.expected.ir.glsl
index c7797a0..618c7df 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8efd47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8efd47.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_8efd47() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_8efd47();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_8efd47() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_8efd47();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.glsl
index 7d6fffa..2650195 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_920006() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_920006();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_920006() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_920006();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_920006() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/92552e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/92552e.wgsl.expected.ir.glsl
index 320e279..505944c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/92552e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/92552e.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_92552e() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_92552e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_92552e() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_92552e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/965645.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/965645.wgsl.expected.ir.glsl
index d8e1b51..6a4cbe4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/965645.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/965645.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_965645() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_965645();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_965645() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_965645();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_965645() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9944d5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/9944d5.wgsl.expected.ir.glsl
index 73c9e4a..3f3af91 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9944d5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9944d5.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uint textureDimensions_9944d5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_9944d5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uint textureDimensions_9944d5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_9944d5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.glsl
index fc458cf..ccbfb40 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_9c7a00() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_9c7a00();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_9c7a00() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_9c7a00();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_9c7a00() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9d68b8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/9d68b8.wgsl.expected.ir.glsl
index 45ca21f..61c555a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9d68b8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9d68b8.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 uint textureDimensions_9d68b8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_9d68b8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 uint textureDimensions_9d68b8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_9d68b8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_9d68b8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.glsl
index 245b172..5fecf20 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_aac604() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_aac604();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_aac604() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_aac604();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_aac604() {
-  uint res = uint(textureSize(arg_0, int(1u)));
+  uint res = uvec2(textureSize(arg_0, int(1u))).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ad7d3b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/ad7d3b.wgsl.expected.ir.glsl
index 9929e0e..7f8173ab 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ad7d3b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ad7d3b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_ad7d3b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_ad7d3b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_ad7d3b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_ad7d3b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.glsl
index bf663f3..53a51c5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_b46d97() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_b46d97();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_b46d97() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_b46d97();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_b46d97() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.ir.glsl
index 57d0907..cdbeaa9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_b51345() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_b51345() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b5ba03.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/b5ba03.wgsl.expected.ir.glsl
index 3eaad35..0e4b550 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b5ba03.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b5ba03.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 uint textureDimensions_b5ba03() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_b5ba03();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 uint textureDimensions_b5ba03() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_b5ba03();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_b5ba03() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b9e7ef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/b9e7ef.wgsl.expected.ir.glsl
index 897b331..5408015 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b9e7ef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b9e7ef.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_b9e7ef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_b9e7ef();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_b9e7ef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_b9e7ef();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_b9e7ef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c6b985.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/c6b985.wgsl.expected.ir.glsl
index 831ad2e..babe0d8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c6b985.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c6b985.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 uint textureDimensions_c6b985() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 uint textureDimensions_c6b985() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c7ea63.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/c7ea63.wgsl.expected.ir.glsl
index 060bb69..7d7e1e3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c7ea63.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c7ea63.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 uint textureDimensions_c7ea63() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 uint textureDimensions_c7ea63() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cedabd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/cedabd.wgsl.expected.ir.glsl
index 3859f2b..608a09e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cedabd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cedabd.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_cedabd() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_cedabd() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_cedabd() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d08a94.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/d08a94.wgsl.expected.ir.glsl
index 08ecb25..80f9a3d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d08a94.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d08a94.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_d08a94() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_d08a94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_d08a94() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_d08a94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/da30d2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/da30d2.wgsl.expected.ir.glsl
index 3c77c80..171827a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/da30d2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/da30d2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_da30d2() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_da30d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_da30d2() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_da30d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/de03c6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/de03c6.wgsl.expected.ir.glsl
index 7ff4c0b..7f0f3e3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/de03c6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/de03c6.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_de03c6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_de03c6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_de03c6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_de03c6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_de03c6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e122fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/e122fe.wgsl.expected.ir.glsl
index 0f6b3bc..b653349 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e122fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e122fe.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 uint textureDimensions_e122fe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_e122fe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 uint textureDimensions_e122fe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_e122fe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ea066c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/ea066c.wgsl.expected.ir.glsl
index 8d52381..25e0668 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ea066c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ea066c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_ea066c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_ea066c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_ea066c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_ea066c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.ir.glsl
index 71e39f9..cc3ca15 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_ea25bc() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_ea25bc() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.glsl
index 169940e..bf5355c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_f17acd() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_f17acd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_f17acd() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_f17acd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_f17acd() {
-  uint res = uint(textureSize(arg_0, 1));
+  uint res = uvec2(textureSize(arg_0, 1)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.ir.glsl
index a5fe970..1e83692 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_f264a3() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_f264a3() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fdbae8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureDimensions/fdbae8.wgsl.expected.ir.glsl
index e87a849..5072f15 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fdbae8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fdbae8.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 uint textureDimensions_fdbae8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 uint textureDimensions_fdbae8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_fdbae8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/0cb698.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/0cb698.wgsl.expected.ir.glsl
index 664dc47..ecd9723 100644
--- a/test/tint/builtins/gen/literal/textureLoad/0cb698.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/0cb698.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_0cb698() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   ivec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_0cb698();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_0cb698() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   ivec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_0cb698();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   ivec4 prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_0cb698() {
-  int v = int(1u);
+  ivec2 v = ivec2(uvec2(1u, 0u));
   ivec4 res = texelFetch(arg_0, v, int(1u));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/1373dc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/1373dc.wgsl.expected.ir.glsl
index a91910a..fed6fc2 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1373dc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1373dc.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_1373dc() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   vec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_1373dc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_1373dc() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   vec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_1373dc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   vec4 prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_1373dc() {
-  int v = int(1u);
+  ivec2 v = ivec2(uvec2(1u, 0u));
   vec4 res = texelFetch(arg_0, v, int(1));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/1561a7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/1561a7.wgsl.expected.ir.glsl
index a7ccf11..377f1d6 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1561a7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1561a7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_1561a7() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_1561a7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_1561a7() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_1561a7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_1561a7() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/18ac11.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/18ac11.wgsl.expected.ir.glsl
index 89ec210..a11a6c8 100644
--- a/test/tint/builtins/gen/literal/textureLoad/18ac11.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/18ac11.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_18ac11() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_18ac11() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_18ac11() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/1a8452.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/1a8452.wgsl.expected.ir.glsl
index b2b376c..f73a078 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1a8452.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1a8452.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_1a8452() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_1a8452();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_1a8452() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_1a8452();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_1a8452() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.ir.glsl
index 90a5900..2941ca2 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_1b8588() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   uvec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_1b8588();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_1b8588() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   uvec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_1b8588();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   uvec4 prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_1b8588() {
-  int v = int(1);
+  ivec2 v = ivec2(ivec2(1, 0));
   uvec4 res = texelFetch(arg_0, v, int(1));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/1e6baa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/1e6baa.wgsl.expected.ir.glsl
index 89afd6e..4286c7b 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1e6baa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1e6baa.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 vec4 textureLoad_1e6baa() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 vec4 textureLoad_1e6baa() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureLoad/206a08.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/206a08.wgsl.expected.ir.glsl
index 121e468..6878f9d 100644
--- a/test/tint/builtins/gen/literal/textureLoad/206a08.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/206a08.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_206a08() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_206a08();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_206a08() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_206a08();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_206a08() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/216c37.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/216c37.wgsl.expected.ir.glsl
index 1e7ae56..4e6ebd0 100644
--- a/test/tint/builtins/gen/literal/textureLoad/216c37.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/216c37.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_216c37() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   uvec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_216c37();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_216c37() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   uvec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_216c37();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   uvec4 prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_216c37() {
-  int v = int(1u);
+  ivec2 v = ivec2(uvec2(1u, 0u));
   uvec4 res = texelFetch(arg_0, v, int(1));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/276643.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/276643.wgsl.expected.ir.glsl
index 0239d82..70c74ad 100644
--- a/test/tint/builtins/gen/literal/textureLoad/276643.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/276643.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_276643() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_276643() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_276643() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/276a2c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/276a2c.wgsl.expected.ir.glsl
index 63822c5..255f541 100644
--- a/test/tint/builtins/gen/literal/textureLoad/276a2c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/276a2c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_276a2c() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_276a2c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_276a2c() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_276a2c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_276a2c() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/2887d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/2887d7.wgsl.expected.ir.glsl
index 7b44843..471505a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/2887d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/2887d7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_2887d7() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_2887d7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_2887d7() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_2887d7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_2887d7() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/2d6cf7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/2d6cf7.wgsl.expected.ir.glsl
index 6342bc0..03e4bcf 100644
--- a/test/tint/builtins/gen/literal/textureLoad/2d6cf7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/2d6cf7.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_2d6cf7() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_2d6cf7() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_2d6cf7() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/31db4b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/31db4b.wgsl.expected.ir.glsl
index 225c77f..e23e840 100644
--- a/test/tint/builtins/gen/literal/textureLoad/31db4b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/31db4b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_31db4b() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_31db4b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_31db4b() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_31db4b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_31db4b() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/33d3aa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/33d3aa.wgsl.expected.ir.glsl
index 56c7f2c..d592134 100644
--- a/test/tint/builtins/gen/literal/textureLoad/33d3aa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/33d3aa.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_33d3aa() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_33d3aa();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_33d3aa() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_33d3aa();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_33d3aa() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/35a5e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/35a5e2.wgsl.expected.ir.glsl
index 689754b..51810eb 100644
--- a/test/tint/builtins/gen/literal/textureLoad/35a5e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/35a5e2.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 vec4 textureLoad_35a5e2() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 vec4 textureLoad_35a5e2() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureLoad/388688.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/388688.wgsl.expected.ir.glsl
index 05c80d1..53782f9 100644
--- a/test/tint/builtins/gen/literal/textureLoad/388688.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/388688.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 vec4 textureLoad_388688() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_388688();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 vec4 textureLoad_388688() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_388688();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_388688() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/39ef40.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/39ef40.wgsl.expected.ir.glsl
index 3494ee2..2d7c114 100644
--- a/test/tint/builtins/gen/literal/textureLoad/39ef40.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/39ef40.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_39ef40() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_39ef40();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_39ef40() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_39ef40();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_39ef40() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/3bbc2b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/3bbc2b.wgsl.expected.ir.glsl
index dfdb111..db04375 100644
--- a/test/tint/builtins/gen/literal/textureLoad/3bbc2b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/3bbc2b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 vec4 textureLoad_3bbc2b() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_3bbc2b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 vec4 textureLoad_3bbc2b() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_3bbc2b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/3da3ed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/3da3ed.wgsl.expected.ir.glsl
index 54ade1a..ea5c6d8 100644
--- a/test/tint/builtins/gen/literal/textureLoad/3da3ed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/3da3ed.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_3da3ed() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   vec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_3da3ed();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_3da3ed() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   vec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_3da3ed();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   vec4 prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_3da3ed() {
-  int v = int(1);
+  ivec2 v = ivec2(ivec2(1, 0));
   vec4 res = texelFetch(arg_0, v, int(1u));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/44c826.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/44c826.wgsl.expected.ir.glsl
index 62e6cc6..39201cc 100644
--- a/test/tint/builtins/gen/literal/textureLoad/44c826.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/44c826.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_44c826() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_44c826() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_44c826() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/454347.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/454347.wgsl.expected.ir.glsl
index 09f36ad..6798b76 100644
--- a/test/tint/builtins/gen/literal/textureLoad/454347.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/454347.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_454347() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_454347();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_454347() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_454347();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_454347() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/469912.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/469912.wgsl.expected.ir.glsl
index 0c7da0f..5a9c9b9 100644
--- a/test/tint/builtins/gen/literal/textureLoad/469912.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/469912.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_469912() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_469912() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureLoad/4c423f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/4c423f.wgsl.expected.ir.glsl
index 018d32b..debc1d1 100644
--- a/test/tint/builtins/gen/literal/textureLoad/4c423f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/4c423f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_4c423f() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   ivec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_4c423f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_4c423f() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   ivec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_4c423f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   ivec4 prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_4c423f() {
-  int v = int(1u);
+  ivec2 v = ivec2(uvec2(1u, 0u));
   ivec4 res = texelFetch(arg_0, v, int(1));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/519ab5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/519ab5.wgsl.expected.ir.glsl
index 5c45d7f..2da9fe0 100644
--- a/test/tint/builtins/gen/literal/textureLoad/519ab5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/519ab5.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_519ab5() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_519ab5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_519ab5() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_519ab5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_519ab5() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/56a000.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/56a000.wgsl.expected.ir.glsl
index beb7970..1d89b0a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/56a000.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/56a000.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 vec4 textureLoad_56a000() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 vec4 textureLoad_56a000() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.ir.glsl
index 23845d7..92305e9 100644
--- a/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_5a2f9d() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   ivec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_5a2f9d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_5a2f9d() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   ivec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_5a2f9d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   ivec4 prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_5a2f9d() {
-  int v = int(1);
+  ivec2 v = ivec2(ivec2(1, 0));
   ivec4 res = texelFetch(arg_0, v, int(1));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/5abbf2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/5abbf2.wgsl.expected.ir.glsl
index d373a8b..064aae4 100644
--- a/test/tint/builtins/gen/literal/textureLoad/5abbf2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/5abbf2.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_5abbf2() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_5abbf2() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_5abbf2() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/5bb7fb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/5bb7fb.wgsl.expected.ir.glsl
index 1313035..8dea1bc 100644
--- a/test/tint/builtins/gen/literal/textureLoad/5bb7fb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/5bb7fb.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_5bb7fb() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_5bb7fb() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_5bb7fb() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/5feb4d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/5feb4d.wgsl.expected.ir.glsl
index 2437d56..864041c 100644
--- a/test/tint/builtins/gen/literal/textureLoad/5feb4d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/5feb4d.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_5feb4d() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_5feb4d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_5feb4d() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_5feb4d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_5feb4d() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/62d1de.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/62d1de.wgsl.expected.ir.glsl
index 76e8004..929fd1c 100644
--- a/test/tint/builtins/gen/literal/textureLoad/62d1de.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/62d1de.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_62d1de() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   ivec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_62d1de();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_62d1de() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   ivec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_62d1de();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   ivec4 prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_62d1de() {
-  int v = int(1);
+  ivec2 v = ivec2(ivec2(1, 0));
   ivec4 res = texelFetch(arg_0, v, int(1u));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/6678b6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/6678b6.wgsl.expected.ir.glsl
index 124d7b9..2760661 100644
--- a/test/tint/builtins/gen/literal/textureLoad/6678b6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/6678b6.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_6678b6() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_6678b6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_6678b6() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_6678b6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_6678b6() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/6b77d4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/6b77d4.wgsl.expected.ir.glsl
index 6d018c7..634cfa0 100644
--- a/test/tint/builtins/gen/literal/textureLoad/6b77d4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/6b77d4.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_6b77d4() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   uvec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_6b77d4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_6b77d4() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   uvec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_6b77d4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   uvec4 prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_6b77d4() {
-  int v = int(1);
+  ivec2 v = ivec2(ivec2(1, 0));
   uvec4 res = texelFetch(arg_0, v, int(1u));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/6d376a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/6d376a.wgsl.expected.ir.glsl
index 370b134..dd331ce 100644
--- a/test/tint/builtins/gen/literal/textureLoad/6d376a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/6d376a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_6d376a() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   vec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_6d376a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_6d376a() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   vec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_6d376a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   vec4 prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_6d376a() {
-  int v = int(1u);
+  ivec2 v = ivec2(uvec2(1u, 0u));
   vec4 res = texelFetch(arg_0, v, int(1u));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.ir.glsl
index ee8e329..7b28bd9 100644
--- a/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_81c381() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   vec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_81c381();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_81c381() {
-  int v_1 = int(1);
+  ivec2 v_1 = ivec2(ivec2(1, 0));
   vec4 res = texelFetch(arg_0, v_1, int(1));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_81c381();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   vec4 prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_81c381() {
-  int v = int(1);
+  ivec2 v = ivec2(ivec2(1, 0));
   vec4 res = texelFetch(arg_0, v, int(1));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/83cea4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/83cea4.wgsl.expected.ir.glsl
index 3033593..a1f2e34 100644
--- a/test/tint/builtins/gen/literal/textureLoad/83cea4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/83cea4.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_83cea4() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_83cea4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_83cea4() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_83cea4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_83cea4() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/83d6e3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/83d6e3.wgsl.expected.ir.glsl
index de6a833..3910024 100644
--- a/test/tint/builtins/gen/literal/textureLoad/83d6e3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/83d6e3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_83d6e3() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_83d6e3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_83d6e3() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_83d6e3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/84c728.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/84c728.wgsl.expected.ir.glsl
index e6de685..33671f8 100644
--- a/test/tint/builtins/gen/literal/textureLoad/84c728.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/84c728.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_84c728() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_84c728();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_84c728() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_84c728();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_84c728() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/8bf8c2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/8bf8c2.wgsl.expected.ir.glsl
index cfa249d..e2bb443 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8bf8c2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8bf8c2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 vec4 textureLoad_8bf8c2() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_8bf8c2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 vec4 textureLoad_8bf8c2() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_8bf8c2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/92dd61.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/92dd61.wgsl.expected.ir.glsl
index 7707a3a..7c75856 100644
--- a/test/tint/builtins/gen/literal/textureLoad/92dd61.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/92dd61.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 vec4 textureLoad_92dd61() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 vec4 textureLoad_92dd61() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureLoad/947107.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/947107.wgsl.expected.ir.glsl
index a4beb3b..3220f88 100644
--- a/test/tint/builtins/gen/literal/textureLoad/947107.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/947107.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_947107() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_947107() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_947107() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/a5c4e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/a5c4e2.wgsl.expected.ir.glsl
index d22740b..ea8f6e9 100644
--- a/test/tint/builtins/gen/literal/textureLoad/a5c4e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/a5c4e2.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_a5c4e2() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_a5c4e2() {
-  uvec4 res = imageLoad(arg_0, int(1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureLoad/ad551e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/ad551e.wgsl.expected.ir.glsl
index eb66248..b8db0ab 100644
--- a/test/tint/builtins/gen/literal/textureLoad/ad551e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/ad551e.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_ad551e() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_ad551e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_ad551e() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_ad551e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/aebc09.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/aebc09.wgsl.expected.ir.glsl
index a3a2d86..836b4e1 100644
--- a/test/tint/builtins/gen/literal/textureLoad/aebc09.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/aebc09.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_aebc09() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_aebc09();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_aebc09() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_aebc09();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_aebc09() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/b7f74f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/b7f74f.wgsl.expected.ir.glsl
index 9c09f67..522c910 100644
--- a/test/tint/builtins/gen/literal/textureLoad/b7f74f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/b7f74f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_b7f74f() {
-  vec4 res = imageLoad(arg_0, int(1u)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u))).zyxw;
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_b7f74f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_b7f74f() {
-  vec4 res = imageLoad(arg_0, int(1u)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u))).zyxw;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_b7f74f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_b7f74f() {
-  vec4 res = imageLoad(arg_0, int(1u)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u))).zyxw;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/bba04a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/bba04a.wgsl.expected.ir.glsl
index 1be3472..e565baa 100644
--- a/test/tint/builtins/gen/literal/textureLoad/bba04a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/bba04a.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_bba04a() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_bba04a() {
-  uvec4 res = imageLoad(arg_0, int(1u));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureLoad/bc3201.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/bc3201.wgsl.expected.ir.glsl
index 738105f..343913d 100644
--- a/test/tint/builtins/gen/literal/textureLoad/bc3201.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/bc3201.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,31 +6,24 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_bc3201() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   uvec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_bc3201();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_bc3201() {
-  int v_1 = int(1u);
+  ivec2 v_1 = ivec2(uvec2(1u, 0u));
   uvec4 res = texelFetch(arg_0, v_1, int(1u));
   return res;
 }
@@ -40,13 +31,6 @@
 void main() {
   v.tint_symbol = textureLoad_bc3201();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +39,10 @@
   uvec4 prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_bc3201() {
-  int v = int(1u);
+  ivec2 v = ivec2(uvec2(1u, 0u));
   uvec4 res = texelFetch(arg_0, v, int(1u));
   return res;
 }
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v_1.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/c02b74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/c02b74.wgsl.expected.ir.glsl
index 6b49248..a4e5e54 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c02b74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c02b74.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_c02b74() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c02b74();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_c02b74() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c02b74();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_c02b74() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/c7cbed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/c7cbed.wgsl.expected.ir.glsl
index 06fc7a9..35d9cdd 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c7cbed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c7cbed.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_c7cbed() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c7cbed();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_c7cbed() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c7cbed();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_c7cbed() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/c80691.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/c80691.wgsl.expected.ir.glsl
index 2ff2029..d5f2324 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c80691.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c80691.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_c80691() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c80691();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_c80691() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c80691();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/c9cc40.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/c9cc40.wgsl.expected.ir.glsl
index 2c1bc5d..637c4f3 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c9cc40.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c9cc40.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_c9cc40() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c9cc40();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_c9cc40() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c9cc40();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_c9cc40() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/c9f310.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/c9f310.wgsl.expected.ir.glsl
index cda8f28..ec7e273 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c9f310.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c9f310.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_c9f310() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c9f310();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_c9f310() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c9f310();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/d357bb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/d357bb.wgsl.expected.ir.glsl
index b4d8e26..5b17db8 100644
--- a/test/tint/builtins/gen/literal/textureLoad/d357bb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/d357bb.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_d357bb() {
-  vec4 res = imageLoad(arg_0, int(1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0))).zyxw;
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_d357bb();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_d357bb() {
-  vec4 res = imageLoad(arg_0, int(1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0))).zyxw;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_d357bb();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_d357bb() {
-  vec4 res = imageLoad(arg_0, int(1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0))).zyxw;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/d81c57.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/d81c57.wgsl.expected.ir.glsl
index 4215650..d43ed9a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/d81c57.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/d81c57.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_d81c57() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_d81c57() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_d81c57() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/ddeed3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/ddeed3.wgsl.expected.ir.glsl
index ee3b22c..7bd5a69 100644
--- a/test/tint/builtins/gen/literal/textureLoad/ddeed3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/ddeed3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_ddeed3() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_ddeed3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_ddeed3() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_ddeed3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_ddeed3() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/e2292f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/e2292f.wgsl.expected.ir.glsl
index dde42ff..468dfd3 100644
--- a/test/tint/builtins/gen/literal/textureLoad/e2292f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/e2292f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_e2292f() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_e2292f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_e2292f() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_e2292f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_e2292f() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/e92dd0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/e92dd0.wgsl.expected.ir.glsl
index 08a571f..7b3dfcb 100644
--- a/test/tint/builtins/gen/literal/textureLoad/e92dd0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/e92dd0.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_e92dd0() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_e92dd0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_e92dd0() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_e92dd0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_e92dd0() {
-  vec4 res = imageLoad(arg_0, int(1u));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/ef2ec3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/ef2ec3.wgsl.expected.ir.glsl
index 46d05ad..a36982e 100644
--- a/test/tint/builtins/gen/literal/textureLoad/ef2ec3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/ef2ec3.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_ef2ec3() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_ef2ec3() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/literal/textureLoad/f06b69.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/f06b69.wgsl.expected.ir.glsl
index bf7e43f..a7b5810 100644
--- a/test/tint/builtins/gen/literal/textureLoad/f06b69.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/f06b69.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f06b69() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_f06b69();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f06b69() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_f06b69();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_f06b69() {
-  ivec4 res = imageLoad(arg_0, int(1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/f35ac7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/f35ac7.wgsl.expected.ir.glsl
index 470ad58..dd36ce5 100644
--- a/test/tint/builtins/gen/literal/textureLoad/f35ac7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/f35ac7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f35ac7() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_f35ac7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f35ac7() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_f35ac7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_f35ac7() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/f9eaaf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/f9eaaf.wgsl.expected.ir.glsl
index 4de765e..1f49ca7 100644
--- a/test/tint/builtins/gen/literal/textureLoad/f9eaaf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/f9eaaf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f9eaaf() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_f9eaaf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f9eaaf() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_f9eaaf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_f9eaaf() {
-  ivec4 res = imageLoad(arg_0, int(1u));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(1u, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureLoad/fe222a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureLoad/fe222a.wgsl.expected.ir.glsl
index 5ce0d38..13e77ab 100644
--- a/test/tint/builtins/gen/literal/textureLoad/fe222a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/fe222a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 vec4 textureLoad_fe222a() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_fe222a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 vec4 textureLoad_fe222a() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_fe222a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_fe222a() {
-  vec4 res = imageLoad(arg_0, int(1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/0ad124.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/0ad124.wgsl.expected.ir.glsl
index 40ef79f..7635aa7 100644
--- a/test/tint/builtins/gen/literal/textureStore/0ad124.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/0ad124.wgsl.expected.ir.glsl
@@ -2,18 +2,18 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_0ad124() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_0ad124();
 }
 #version 460
 
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_0ad124() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.ir.glsl
index 83e8393..70d8098 100644
--- a/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_102722() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 void main() {
   textureStore_102722();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_102722() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_102722();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.ir.glsl
index 0594247..f91915c 100644
--- a/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_2ac6c7() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_2ac6c7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_2ac6c7() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2ac6c7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.ir.glsl
index 43103bd..7250dfe 100644
--- a/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba16ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_2eb2a4() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 void main() {
   textureStore_2eb2a4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba16ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_2eb2a4() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2eb2a4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.ir.glsl
index f09c5f2..a995012 100644
--- a/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8_snorm) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_2ed2a3() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_2ed2a3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8_snorm) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_2ed2a3() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2ed2a3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.ir.glsl
index 39c585d..4638d0c 100644
--- a/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_3bec15() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 void main() {
   textureStore_3bec15();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_3bec15() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3bec15();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.glsl
index 4e2ba13..88c88fc 100644
--- a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.glsl
@@ -2,18 +2,18 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_4cce74() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 void main() {
   textureStore_4cce74();
 }
 #version 460
 
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_4cce74() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.glsl
index f027645..0f25be1 100644
--- a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.glsl
@@ -2,18 +2,18 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_51ec82() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_51ec82();
 }
 #version 460
 
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_51ec82() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.ir.glsl
index da2ff3e..d07967c 100644
--- a/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba16i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_5a2f8f() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 void main() {
   textureStore_5a2f8f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba16i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_5a2f8f() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5a2f8f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.ir.glsl
index d2037cc..ac80ec3 100644
--- a/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_6b75c3() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_6b75c3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_6b75c3() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6b75c3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.ir.glsl
index 82e0987..4d1a0bc 100644
--- a/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_6b80d2() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 void main() {
   textureStore_6b80d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_6b80d2() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6b80d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.glsl
index 870e4d6..7001660 100644
--- a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_6e6cc0() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_6e6cc0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_6e6cc0() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6e6cc0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/74886f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/74886f.wgsl.expected.ir.glsl
index 854bb06..f7b779a 100644
--- a/test/tint/builtins/gen/literal/textureStore/74886f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/74886f.wgsl.expected.ir.glsl
@@ -2,18 +2,18 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_74886f() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_74886f();
 }
 #version 460
 
-layout(binding = 0, r8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_74886f() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.ir.glsl
index 00d4120..105a42c 100644
--- a/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_7f7fae() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_7f7fae();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_7f7fae() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_7f7fae();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.ir.glsl
index 8d215bb..2dd9ea2 100644
--- a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.ir.glsl
@@ -2,18 +2,18 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_83bcc1() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 void main() {
   textureStore_83bcc1();
 }
 #version 460
 
-layout(binding = 0, rg32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_83bcc1() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.glsl
index 7682c2e..ea3994c 100644
--- a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_8676c9() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 void main() {
   textureStore_8676c9();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_8676c9() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8676c9();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.ir.glsl
index ea3f5b7..0da5355 100644
--- a/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.ir.glsl
@@ -2,18 +2,18 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_872747() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_872747();
 }
 #version 460
 
-layout(binding = 0, rg32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_872747() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.ir.glsl
index 8159240..469d35b 100644
--- a/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_969534() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 void main() {
   textureStore_969534();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_969534() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_969534();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.ir.glsl
index c286ce1..2e1ff62 100644
--- a/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bf775c() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 void main() {
   textureStore_bf775c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bf775c() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_bf775c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.ir.glsl
index 1a3a730..1019f10 100644
--- a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.ir.glsl
@@ -2,18 +2,18 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_d73b5c() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 void main() {
   textureStore_d73b5c();
 }
 #version 460
 
-layout(binding = 0, rg32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_d73b5c() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.glsl
index 55de206..8c5d0b7 100644
--- a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.glsl
@@ -2,18 +2,18 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_e077e7() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 void main() {
   textureStore_e077e7();
 }
 #version 460
 
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_e077e7() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/e0b666.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/e0b666.wgsl.expected.ir.glsl
index e848bd0..a9662f8 100644
--- a/test/tint/builtins/gen/literal/textureStore/e0b666.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/e0b666.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_e0b666() {
-  imageStore(arg_0, 1, vec4(1.0f).zyxw);
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f).zyxw);
 }
 void main() {
   textureStore_e0b666();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_e0b666() {
-  imageStore(arg_0, 1, vec4(1.0f).zyxw);
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f).zyxw);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e0b666();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.ir.glsl
index 556024d..989b2a9 100644
--- a/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba16f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_e885e8() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 void main() {
   textureStore_e885e8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba16f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_e885e8() {
-  imageStore(arg_0, 1, vec4(1.0f));
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e885e8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.glsl
index 3a65ec6..874394a 100644
--- a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_f64d69() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 void main() {
   textureStore_f64d69();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_f64d69() {
-  imageStore(arg_0, 1, ivec4(1));
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_f64d69();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.ir.glsl
index 1bf0915..a9c640e 100644
--- a/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.ir.glsl
@@ -1,41 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_fb9a8f() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 void main() {
   textureStore_fb9a8f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_fb9a8f() {
-  imageStore(arg_0, 1, uvec4(1u));
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_fb9a8f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/01e21e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/01e21e.wgsl.expected.ir.glsl
index ff7d4c6..a0979f2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/01e21e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/01e21e.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uint textureDimensions_01e21e() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uint textureDimensions_01e21e() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.glsl
index 69dd377..93a74c3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_022903() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_022903();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_022903() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_022903();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,11 +39,11 @@
   uint prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_022903() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/0329b0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/0329b0.wgsl.expected.ir.glsl
index e341638..9bce7e7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0329b0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0329b0.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_0329b0() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_0329b0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_0329b0() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_0329b0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_0329b0() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/033ea7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/033ea7.wgsl.expected.ir.glsl
index 64615d9..5269180 100644
--- a/test/tint/builtins/gen/var/textureDimensions/033ea7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/033ea7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 uint textureDimensions_033ea7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_033ea7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 uint textureDimensions_033ea7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_033ea7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_033ea7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/09140b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/09140b.wgsl.expected.ir.glsl
index a5d9dbf..229091d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/09140b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/09140b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_09140b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_09140b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_09140b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_09140b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/0c0b0c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/0c0b0c.wgsl.expected.ir.glsl
index 960f9cc..f7ed7ec 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0c0b0c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0c0b0c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_0c0b0c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_0c0b0c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_0c0b0c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_0c0b0c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/20ecef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/20ecef.wgsl.expected.ir.glsl
index 3b20861..94d6891 100644
--- a/test/tint/builtins/gen/var/textureDimensions/20ecef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/20ecef.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 uint textureDimensions_20ecef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_20ecef();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 uint textureDimensions_20ecef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_20ecef();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/212362.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/212362.wgsl.expected.ir.glsl
index 3d1e9c2..c3d21d6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/212362.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/212362.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_212362() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_212362();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_212362() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_212362();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_212362() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/26d6bf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/26d6bf.wgsl.expected.ir.glsl
index 95b5f4c..39e012e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/26d6bf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/26d6bf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_26d6bf() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_26d6bf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_26d6bf() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_26d6bf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_26d6bf() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/284c27.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/284c27.wgsl.expected.ir.glsl
index ee62b99..b1c7a5d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/284c27.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/284c27.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_284c27() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_284c27() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_284c27() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/2bafdf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/2bafdf.wgsl.expected.ir.glsl
index 13a27a1..f6f4cee 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2bafdf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2bafdf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 uint textureDimensions_2bafdf() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_2bafdf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 uint textureDimensions_2bafdf() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_2bafdf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_2bafdf() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/2dc5c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/2dc5c5.wgsl.expected.ir.glsl
index c061f89..9a8d190 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2dc5c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2dc5c5.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_2dc5c5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_2dc5c5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_2dc5c5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_2dc5c5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_2dc5c5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/3af3e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/3af3e7.wgsl.expected.ir.glsl
index 8fc3fdb..5e108b6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3af3e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3af3e7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_3af3e7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_3af3e7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_3af3e7() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_3af3e7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/4e540a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/4e540a.wgsl.expected.ir.glsl
index 7bd888c..5e2a9ee 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4e540a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4e540a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 uint textureDimensions_4e540a() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_4e540a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 uint textureDimensions_4e540a() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_4e540a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/542c62.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/542c62.wgsl.expected.ir.glsl
index 52e135b..699148d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/542c62.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/542c62.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_542c62() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_542c62() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureDimensions/58a82d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/58a82d.wgsl.expected.ir.glsl
index f752e2c..2c26aad 100644
--- a/test/tint/builtins/gen/var/textureDimensions/58a82d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/58a82d.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_58a82d() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_58a82d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_58a82d() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_58a82d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/5df042.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/5df042.wgsl.expected.ir.glsl
index 842526b..586e59f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5df042.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5df042.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_5df042() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_5df042();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_5df042() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_5df042();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_5df042() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/607979.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/607979.wgsl.expected.ir.glsl
index af5f1870..13c9f0e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/607979.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/607979.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_607979() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_607979();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_607979() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_607979();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/709357.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/709357.wgsl.expected.ir.glsl
index 17937c4..dfa5e40 100644
--- a/test/tint/builtins/gen/var/textureDimensions/709357.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/709357.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_709357() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_709357();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_709357() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_709357();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_709357() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/7228de.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/7228de.wgsl.expected.ir.glsl
index 17331d8..1773eeb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7228de.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7228de.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_7228de() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_7228de();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_7228de() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_7228de();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/740e7c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/740e7c.wgsl.expected.ir.glsl
index bf76697..1fbb56b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/740e7c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/740e7c.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 uint textureDimensions_740e7c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 uint textureDimensions_740e7c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureDimensions/797c30.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/797c30.wgsl.expected.ir.glsl
index 87647b0..7b15ed3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/797c30.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/797c30.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_797c30() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_797c30();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_797c30() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_797c30();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_797c30() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/7c753b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/7c753b.wgsl.expected.ir.glsl
index 9f8cb41..5f3a8b4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7c753b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7c753b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_7c753b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_7c753b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 uint textureDimensions_7c753b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_7c753b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_7c753b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/7d8439.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/7d8439.wgsl.expected.ir.glsl
index f9412ab..15246e5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7d8439.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7d8439.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_7d8439() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_7d8439() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_7d8439() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/841ebe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/841ebe.wgsl.expected.ir.glsl
index ce15bac..4a944fa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/841ebe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/841ebe.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_841ebe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_841ebe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_841ebe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_841ebe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_841ebe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/84f363.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/84f363.wgsl.expected.ir.glsl
index e005440..8bd9e13 100644
--- a/test/tint/builtins/gen/var/textureDimensions/84f363.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/84f363.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_84f363() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_84f363();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 uint textureDimensions_84f363() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_84f363();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/8e5de6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/8e5de6.wgsl.expected.ir.glsl
index 7598198..1f614ca 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8e5de6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8e5de6.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_8e5de6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_8e5de6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_8e5de6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_8e5de6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_8e5de6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/8efd47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/8efd47.wgsl.expected.ir.glsl
index c7797a0..618c7df 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8efd47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8efd47.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_8efd47() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_8efd47();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_8efd47() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_8efd47();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.glsl
index 608566b..12c4a6d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_920006() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_920006();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_920006() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_920006();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,11 +39,11 @@
   uint prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_920006() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/92552e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/92552e.wgsl.expected.ir.glsl
index 320e279..505944c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/92552e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/92552e.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_92552e() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_92552e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_92552e() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_92552e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/965645.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/965645.wgsl.expected.ir.glsl
index d8e1b51..6a4cbe4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/965645.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/965645.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,43 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_965645() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_965645();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_965645() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_965645();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -53,10 +37,10 @@
   uint prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_965645() {
-  uint res = uint(textureSize(arg_0, 0));
+  uint res = uvec2(textureSize(arg_0, 0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -73,12 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/9944d5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/9944d5.wgsl.expected.ir.glsl
index 73c9e4a..3f3af91 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9944d5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9944d5.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uint textureDimensions_9944d5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_9944d5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uint textureDimensions_9944d5() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_9944d5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.glsl
index 5a3052b..ee69ddf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_9c7a00() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_9c7a00();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uint textureDimensions_9c7a00() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_9c7a00();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,11 +39,11 @@
   uint prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_9c7a00() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/9d68b8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/9d68b8.wgsl.expected.ir.glsl
index 45ca21f..61c555a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9d68b8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9d68b8.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 uint textureDimensions_9d68b8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_9d68b8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 uint textureDimensions_9d68b8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_9d68b8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_9d68b8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.glsl
index 135e7c8..84365df 100644
--- a/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_aac604() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_aac604();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_aac604() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_aac604();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,11 +39,11 @@
   uint prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_aac604() {
   uint arg_1 = 1u;
-  uint res = uint(textureSize(arg_0, int(arg_1)));
+  uint res = uvec2(textureSize(arg_0, int(arg_1))).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/ad7d3b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/ad7d3b.wgsl.expected.ir.glsl
index 9929e0e..7f8173ab 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ad7d3b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ad7d3b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_ad7d3b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_ad7d3b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_ad7d3b() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_ad7d3b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.glsl
index ea82766..793eddd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_b46d97() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_b46d97();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 uint textureDimensions_b46d97() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_b46d97();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,11 +39,11 @@
   uint prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_b46d97() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.ir.glsl
index 57d0907..cdbeaa9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_b51345() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_b51345() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureDimensions/b5ba03.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/b5ba03.wgsl.expected.ir.glsl
index 3eaad35..0e4b550 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b5ba03.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b5ba03.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 uint textureDimensions_b5ba03() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_b5ba03();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 uint textureDimensions_b5ba03() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_b5ba03();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_b5ba03() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/b9e7ef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/b9e7ef.wgsl.expected.ir.glsl
index 897b331..5408015 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b9e7ef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b9e7ef.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_b9e7ef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_b9e7ef();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_b9e7ef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_b9e7ef();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_b9e7ef() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/c6b985.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/c6b985.wgsl.expected.ir.glsl
index 831ad2e..babe0d8 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c6b985.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c6b985.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 uint textureDimensions_c6b985() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 uint textureDimensions_c6b985() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureDimensions/c7ea63.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/c7ea63.wgsl.expected.ir.glsl
index 060bb69..7d7e1e3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c7ea63.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c7ea63.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 uint textureDimensions_c7ea63() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 uint textureDimensions_c7ea63() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureDimensions/cedabd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/cedabd.wgsl.expected.ir.glsl
index 3859f2b..608a09e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cedabd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cedabd.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_cedabd() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 uint textureDimensions_cedabd() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_cedabd() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/d08a94.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/d08a94.wgsl.expected.ir.glsl
index 08ecb25..80f9a3d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d08a94.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d08a94.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_d08a94() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_d08a94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_d08a94() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_d08a94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/da30d2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/da30d2.wgsl.expected.ir.glsl
index 3c77c80..171827a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/da30d2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/da30d2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_da30d2() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_da30d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_da30d2() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_da30d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/de03c6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/de03c6.wgsl.expected.ir.glsl
index 7ff4c0b..7f0f3e3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/de03c6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/de03c6.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,29 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_de03c6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_de03c6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uint textureDimensions_de03c6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_de03c6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_de03c6() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -75,13 +57,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/e122fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/e122fe.wgsl.expected.ir.glsl
index 0f6b3bc..b653349 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e122fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e122fe.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 uint textureDimensions_e122fe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_e122fe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 uint textureDimensions_e122fe() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_e122fe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/ea066c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/ea066c.wgsl.expected.ir.glsl
index 8d52381..25e0668 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ea066c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ea066c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,44 +6,26 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_ea066c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_ea066c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 uint textureDimensions_ea066c() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_ea066c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.ir.glsl
index 71e39f9..cc3ca15 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_ea25bc() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 uint textureDimensions_ea25bc() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.glsl
index 8ed9086..a7214a6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,45 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_f17acd() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 void main() {
   v.tint_symbol = textureDimensions_f17acd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 uint textureDimensions_f17acd() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureDimensions_f17acd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -55,11 +39,11 @@
   uint prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_f17acd() {
   int arg_1 = 1;
-  uint res = uint(textureSize(arg_0, arg_1));
+  uint res = uvec2(textureSize(arg_0, arg_1)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -76,12 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.ir.glsl
index a5fe970..1e83692 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_f264a3() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 uint textureDimensions_f264a3() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureDimensions/fdbae8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureDimensions/fdbae8.wgsl.expected.ir.glsl
index e87a849..5072f15 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fdbae8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fdbae8.wgsl.expected.ir.glsl
@@ -6,9 +6,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 uint textureDimensions_fdbae8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 void main() {
@@ -20,9 +20,9 @@
 buffer tint_symbol_1_1_ssbo {
   uint tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 uint textureDimensions_fdbae8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -37,10 +37,10 @@
   uint prevent_dce;
 };
 
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint textureDimensions_fdbae8() {
-  uint res = uint(imageSize(arg_0));
+  uint res = uvec2(imageSize(arg_0)).x;
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/0cb698.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/0cb698.wgsl.expected.ir.glsl
index 474bafc..123ccb6 100644
--- a/test/tint/builtins/gen/var/textureLoad/0cb698.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/0cb698.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_0cb698() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   ivec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_0cb698();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_0cb698() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   ivec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_0cb698();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   ivec4 prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_0cb698() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(uvec2(arg_1, 0u));
   ivec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/1373dc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/1373dc.wgsl.expected.ir.glsl
index cdd9df7..f5b5467 100644
--- a/test/tint/builtins/gen/var/textureLoad/1373dc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/1373dc.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_1373dc() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   vec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_1373dc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_1373dc() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   vec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_1373dc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   vec4 prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_1373dc() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(uvec2(arg_1, 0u));
   vec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/1561a7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/1561a7.wgsl.expected.ir.glsl
index 3c57ab3..0caccb0 100644
--- a/test/tint/builtins/gen/var/textureLoad/1561a7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/1561a7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_1561a7() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_1561a7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_1561a7() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_1561a7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_1561a7() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/18ac11.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/18ac11.wgsl.expected.ir.glsl
index 7ddc243..ff8f246 100644
--- a/test/tint/builtins/gen/var/textureLoad/18ac11.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/18ac11.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_18ac11() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_18ac11() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -39,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_18ac11() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/1a8452.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/1a8452.wgsl.expected.ir.glsl
index 61c6a76..0696c53 100644
--- a/test/tint/builtins/gen/var/textureLoad/1a8452.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/1a8452.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_1a8452() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_1a8452();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_1a8452() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_1a8452();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_1a8452() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.ir.glsl
index 18feab0..5f44591 100644
--- a/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_1b8588() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   uvec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_1b8588();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_1b8588() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   uvec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_1b8588();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   uvec4 prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_1b8588() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(ivec2(arg_1, 0));
   uvec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/1e6baa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/1e6baa.wgsl.expected.ir.glsl
index 0938555..9e82e24 100644
--- a/test/tint/builtins/gen/var/textureLoad/1e6baa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/1e6baa.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 vec4 textureLoad_1e6baa() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 vec4 textureLoad_1e6baa() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureLoad/206a08.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/206a08.wgsl.expected.ir.glsl
index b4d6e61..59249bd 100644
--- a/test/tint/builtins/gen/var/textureLoad/206a08.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/206a08.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_206a08() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_206a08();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_206a08() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_206a08();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_206a08() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/216c37.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/216c37.wgsl.expected.ir.glsl
index 7a9cd85..f417c1b 100644
--- a/test/tint/builtins/gen/var/textureLoad/216c37.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/216c37.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_216c37() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   uvec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_216c37();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_216c37() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   uvec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_216c37();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   uvec4 prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_216c37() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(uvec2(arg_1, 0u));
   uvec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/276643.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/276643.wgsl.expected.ir.glsl
index 557adb9..6459457 100644
--- a/test/tint/builtins/gen/var/textureLoad/276643.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/276643.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_276643() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_276643() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -39,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_276643() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/276a2c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/276a2c.wgsl.expected.ir.glsl
index d03e048..7ff7de3 100644
--- a/test/tint/builtins/gen/var/textureLoad/276a2c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/276a2c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_276a2c() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_276a2c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_276a2c() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_276a2c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_276a2c() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/2887d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/2887d7.wgsl.expected.ir.glsl
index 0573ce3..c5fbeb6 100644
--- a/test/tint/builtins/gen/var/textureLoad/2887d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/2887d7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_2887d7() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_2887d7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_2887d7() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_2887d7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_2887d7() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/2d6cf7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/2d6cf7.wgsl.expected.ir.glsl
index 3fafd96..d74655e 100644
--- a/test/tint/builtins/gen/var/textureLoad/2d6cf7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/2d6cf7.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_2d6cf7() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_2d6cf7() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -39,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rg32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_2d6cf7() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/31db4b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/31db4b.wgsl.expected.ir.glsl
index bbb1eef..eae87c4 100644
--- a/test/tint/builtins/gen/var/textureLoad/31db4b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/31db4b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_31db4b() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_31db4b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_31db4b() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_31db4b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, r32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_31db4b() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/33d3aa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/33d3aa.wgsl.expected.ir.glsl
index 4292f2d..a0d0fb7 100644
--- a/test/tint/builtins/gen/var/textureLoad/33d3aa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/33d3aa.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_33d3aa() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_33d3aa();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_33d3aa() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_33d3aa();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_33d3aa() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/35a5e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/35a5e2.wgsl.expected.ir.glsl
index fd9ce91..182873b 100644
--- a/test/tint/builtins/gen/var/textureLoad/35a5e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/35a5e2.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 vec4 textureLoad_35a5e2() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 vec4 textureLoad_35a5e2() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureLoad/388688.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/388688.wgsl.expected.ir.glsl
index f7afe88..d2f55aa 100644
--- a/test/tint/builtins/gen/var/textureLoad/388688.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/388688.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 vec4 textureLoad_388688() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_388688();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 vec4 textureLoad_388688() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_388688();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_388688() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/39ef40.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/39ef40.wgsl.expected.ir.glsl
index 613f04d..a911e28 100644
--- a/test/tint/builtins/gen/var/textureLoad/39ef40.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/39ef40.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_39ef40() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_39ef40();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_39ef40() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_39ef40();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_39ef40() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/3bbc2b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/3bbc2b.wgsl.expected.ir.glsl
index ad7979a..d127d12 100644
--- a/test/tint/builtins/gen/var/textureLoad/3bbc2b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/3bbc2b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,46 +6,28 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 vec4 textureLoad_3bbc2b() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_3bbc2b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 vec4 textureLoad_3bbc2b() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_3bbc2b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/3da3ed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/3da3ed.wgsl.expected.ir.glsl
index 35c609b..1bc928a 100644
--- a/test/tint/builtins/gen/var/textureLoad/3da3ed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/3da3ed.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_3da3ed() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   vec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_3da3ed();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_3da3ed() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   vec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_3da3ed();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   vec4 prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_3da3ed() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(ivec2(arg_1, 0));
   vec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/44c826.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/44c826.wgsl.expected.ir.glsl
index fd80e26..1c653cb 100644
--- a/test/tint/builtins/gen/var/textureLoad/44c826.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/44c826.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_44c826() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_44c826() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -39,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_44c826() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/454347.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/454347.wgsl.expected.ir.glsl
index d77025a..552920a 100644
--- a/test/tint/builtins/gen/var/textureLoad/454347.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/454347.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_454347() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_454347();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_454347() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_454347();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_454347() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/469912.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/469912.wgsl.expected.ir.glsl
index 8ee3451..f39ea10 100644
--- a/test/tint/builtins/gen/var/textureLoad/469912.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/469912.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_469912() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_469912() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureLoad/4c423f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/4c423f.wgsl.expected.ir.glsl
index c26586d..e3762cb 100644
--- a/test/tint/builtins/gen/var/textureLoad/4c423f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/4c423f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_4c423f() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   ivec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_4c423f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_4c423f() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   ivec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_4c423f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   ivec4 prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_4c423f() {
   uint arg_1 = 1u;
   int arg_2 = 1;
   int v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(uvec2(arg_1, 0u));
   ivec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/519ab5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/519ab5.wgsl.expected.ir.glsl
index c76c801..9b533a5 100644
--- a/test/tint/builtins/gen/var/textureLoad/519ab5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/519ab5.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_519ab5() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_519ab5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_519ab5() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_519ab5();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_519ab5() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/56a000.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/56a000.wgsl.expected.ir.glsl
index 76e57fd..9a1fc2a6 100644
--- a/test/tint/builtins/gen/var/textureLoad/56a000.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/56a000.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 vec4 textureLoad_56a000() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 vec4 textureLoad_56a000() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.ir.glsl
index ac31801..bf4e18b 100644
--- a/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_5a2f9d() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   ivec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_5a2f9d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_5a2f9d() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   ivec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_5a2f9d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   ivec4 prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_5a2f9d() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(ivec2(arg_1, 0));
   ivec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/5abbf2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/5abbf2.wgsl.expected.ir.glsl
index 2a6eb42a..465bae2 100644
--- a/test/tint/builtins/gen/var/textureLoad/5abbf2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/5abbf2.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_5abbf2() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_5abbf2() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -39,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_5abbf2() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/5bb7fb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/5bb7fb.wgsl.expected.ir.glsl
index 9c6b097..a87d8c6 100644
--- a/test/tint/builtins/gen/var/textureLoad/5bb7fb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/5bb7fb.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_5bb7fb() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_5bb7fb() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -39,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rg32ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_5bb7fb() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/5feb4d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/5feb4d.wgsl.expected.ir.glsl
index fa01591..2c93925 100644
--- a/test/tint/builtins/gen/var/textureLoad/5feb4d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/5feb4d.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_5feb4d() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_5feb4d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_5feb4d() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_5feb4d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_5feb4d() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/62d1de.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/62d1de.wgsl.expected.ir.glsl
index e7e1106..87db661 100644
--- a/test/tint/builtins/gen/var/textureLoad/62d1de.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/62d1de.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_62d1de() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   ivec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_62d1de();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 ivec4 textureLoad_62d1de() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   ivec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_62d1de();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'isampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   ivec4 prevent_dce;
 };
 
-uniform highp isampler1D arg_0;
+uniform highp isampler2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_62d1de() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(ivec2(arg_1, 0));
   ivec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'isampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/6678b6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/6678b6.wgsl.expected.ir.glsl
index 9b35312..5340c05 100644
--- a/test/tint/builtins/gen/var/textureLoad/6678b6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/6678b6.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_6678b6() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_6678b6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_6678b6() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_6678b6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_6678b6() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/6b77d4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/6b77d4.wgsl.expected.ir.glsl
index c28a5ba..0a12011 100644
--- a/test/tint/builtins/gen/var/textureLoad/6b77d4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/6b77d4.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_6b77d4() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   uvec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_6b77d4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_6b77d4() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   uvec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_6b77d4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   uvec4 prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_6b77d4() {
   int arg_1 = 1;
   uint arg_2 = 1u;
   uint v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(ivec2(arg_1, 0));
   uvec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/6d376a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/6d376a.wgsl.expected.ir.glsl
index b2a5469..e20946a 100644
--- a/test/tint/builtins/gen/var/textureLoad/6d376a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/6d376a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_6d376a() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   vec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_6d376a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_6d376a() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   vec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_6d376a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   vec4 prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_6d376a() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(uvec2(arg_1, 0u));
   vec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.ir.glsl
index e5bd31f..f244d4d 100644
--- a/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_81c381() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   vec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_81c381();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 vec4 textureLoad_81c381() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(ivec2(arg_1, 0));
   vec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_81c381();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'sampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   vec4 prevent_dce;
 };
 
-uniform highp sampler1D arg_0;
+uniform highp sampler2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_81c381() {
   int arg_1 = 1;
   int arg_2 = 1;
   int v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(ivec2(arg_1, 0));
   vec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'sampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/83cea4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/83cea4.wgsl.expected.ir.glsl
index b700718..90fe5f2 100644
--- a/test/tint/builtins/gen/var/textureLoad/83cea4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/83cea4.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_83cea4() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_83cea4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_83cea4() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_83cea4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_83cea4() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/83d6e3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/83d6e3.wgsl.expected.ir.glsl
index f551cec..42c7c29 100644
--- a/test/tint/builtins/gen/var/textureLoad/83d6e3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/83d6e3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,46 +6,28 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_83d6e3() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_83d6e3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_83d6e3() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_83d6e3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/84c728.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/84c728.wgsl.expected.ir.glsl
index 82a6313..235d37d 100644
--- a/test/tint/builtins/gen/var/textureLoad/84c728.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/84c728.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_84c728() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_84c728();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_84c728() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_84c728();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_84c728() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/8bf8c2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/8bf8c2.wgsl.expected.ir.glsl
index 86580bc..3618da4 100644
--- a/test/tint/builtins/gen/var/textureLoad/8bf8c2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/8bf8c2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,46 +6,28 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 vec4 textureLoad_8bf8c2() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_8bf8c2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 vec4 textureLoad_8bf8c2() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_8bf8c2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/92dd61.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/92dd61.wgsl.expected.ir.glsl
index 063c913..29cbd61 100644
--- a/test/tint/builtins/gen/var/textureLoad/92dd61.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/92dd61.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 vec4 textureLoad_92dd61() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 vec4 textureLoad_92dd61() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureLoad/947107.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/947107.wgsl.expected.ir.glsl
index 856f56d..172909e 100644
--- a/test/tint/builtins/gen/var/textureLoad/947107.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/947107.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_947107() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_947107() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -39,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, r8) uniform highp readonly image1D arg_0;
+layout(binding = 0, r8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_947107() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/a5c4e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/a5c4e2.wgsl.expected.ir.glsl
index 79c12d4..90ce3c5 100644
--- a/test/tint/builtins/gen/var/textureLoad/a5c4e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/a5c4e2.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_a5c4e2() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_a5c4e2() {
   int arg_1 = 1;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureLoad/ad551e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/ad551e.wgsl.expected.ir.glsl
index 2d5f57c..5331d7b 100644
--- a/test/tint/builtins/gen/var/textureLoad/ad551e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/ad551e.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,46 +6,28 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_ad551e() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_ad551e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_ad551e() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_ad551e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/aebc09.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/aebc09.wgsl.expected.ir.glsl
index 58b1f2d..f973834 100644
--- a/test/tint/builtins/gen/var/textureLoad/aebc09.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/aebc09.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_aebc09() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_aebc09();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 uvec4 textureLoad_aebc09() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_aebc09();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'uimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   uvec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16ui) uniform highp readonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp readonly uimage2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_aebc09() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'uimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/b7f74f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/b7f74f.wgsl.expected.ir.glsl
index eba1f91..b75a184 100644
--- a/test/tint/builtins/gen/var/textureLoad/b7f74f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/b7f74f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_b7f74f() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u))).zyxw;
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_b7f74f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_b7f74f() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u))).zyxw;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_b7f74f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_b7f74f() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u))).zyxw;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/bba04a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/bba04a.wgsl.expected.ir.glsl
index f7388ab..c273bda 100644
--- a/test/tint/builtins/gen/var/textureLoad/bba04a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/bba04a.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_bba04a() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 uvec4 textureLoad_bba04a() {
   uint arg_1 = 1u;
-  uvec4 res = imageLoad(arg_0, int(arg_1));
+  uvec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureLoad/bc3201.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/bc3201.wgsl.expected.ir.glsl
index 1df1c3e..2f543cc 100644
--- a/test/tint/builtins/gen/var/textureLoad/bc3201.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/bc3201.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,37 +6,30 @@
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_bc3201() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   uvec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_bc3201();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   uvec4 tint_symbol;
 } v;
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 uvec4 textureLoad_bc3201() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v_1 = arg_2;
-  int v_2 = int(arg_1);
+  ivec2 v_2 = ivec2(uvec2(arg_1, 0u));
   uvec4 res = texelFetch(arg_0, v_2, int(v_1));
   return res;
 }
@@ -46,13 +37,6 @@
 void main() {
   v.tint_symbol = textureLoad_bc3201();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'usampler1D' : Reserved word. 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -61,13 +45,13 @@
   uvec4 prevent_dce;
 };
 
-uniform highp usampler1D arg_0;
+uniform highp usampler2D arg_0;
 layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 textureLoad_bc3201() {
   uint arg_1 = 1u;
   uint arg_2 = 1u;
   uint v = arg_2;
-  int v_1 = int(arg_1);
+  ivec2 v_1 = ivec2(uvec2(arg_1, 0u));
   uvec4 res = texelFetch(arg_0, v_1, int(v));
   return res;
 }
@@ -85,12 +69,3 @@
   vertex_main_loc0_Output = v_2.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'usampler1D' : Reserved word. 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/c02b74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/c02b74.wgsl.expected.ir.glsl
index 20cb47c..1c059ae 100644
--- a/test/tint/builtins/gen/var/textureLoad/c02b74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/c02b74.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_c02b74() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c02b74();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_c02b74() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c02b74();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_c02b74() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/c7cbed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/c7cbed.wgsl.expected.ir.glsl
index dd37d35..1752ceb 100644
--- a/test/tint/builtins/gen/var/textureLoad/c7cbed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/c7cbed.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_c7cbed() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c7cbed();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_c7cbed() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c7cbed();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, r32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_c7cbed() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/c80691.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/c80691.wgsl.expected.ir.glsl
index c6d46bc..51b5c67 100644
--- a/test/tint/builtins/gen/var/textureLoad/c80691.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/c80691.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,46 +6,28 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_c80691() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c80691();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_c80691() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c80691();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/c9cc40.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/c9cc40.wgsl.expected.ir.glsl
index 5ea249b..506c2e4 100644
--- a/test/tint/builtins/gen/var/textureLoad/c9cc40.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/c9cc40.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_c9cc40() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c9cc40();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_c9cc40() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c9cc40();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_c9cc40() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/c9f310.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/c9f310.wgsl.expected.ir.glsl
index c54a646..0f228f9 100644
--- a/test/tint/builtins/gen/var/textureLoad/c9f310.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/c9f310.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,46 +6,28 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_c9f310() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_c9f310();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_c9f310() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_c9f310();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/d357bb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/d357bb.wgsl.expected.ir.glsl
index 8b84ece..2cd1cf5 100644
--- a/test/tint/builtins/gen/var/textureLoad/d357bb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/d357bb.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_d357bb() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0))).zyxw;
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_d357bb();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_d357bb() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0))).zyxw;
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_d357bb();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_d357bb() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1)).zyxw;
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0))).zyxw;
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/d81c57.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/d81c57.wgsl.expected.ir.glsl
index a8038a6..8fc7f60 100644
--- a/test/tint/builtins/gen/var/textureLoad/d81c57.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/d81c57.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_d81c57() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 vec4 textureLoad_d81c57() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -39,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rg32f) uniform highp readonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_d81c57() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
diff --git a/test/tint/builtins/gen/var/textureLoad/ddeed3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/ddeed3.wgsl.expected.ir.glsl
index ce7e3cd..7377409 100644
--- a/test/tint/builtins/gen/var/textureLoad/ddeed3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/ddeed3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_ddeed3() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_ddeed3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_ddeed3() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_ddeed3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_ddeed3() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/e2292f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/e2292f.wgsl.expected.ir.glsl
index d51a4fe..f2e6bfc 100644
--- a/test/tint/builtins/gen/var/textureLoad/e2292f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/e2292f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_e2292f() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_e2292f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_e2292f() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_e2292f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_e2292f() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/e92dd0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/e92dd0.wgsl.expected.ir.glsl
index fef3a4e..d8d0096 100644
--- a/test/tint/builtins/gen/var/textureLoad/e92dd0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/e92dd0.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_e92dd0() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_e92dd0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 vec4 textureLoad_e92dd0() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_e92dd0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_e92dd0() {
   uint arg_1 = 1u;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/ef2ec3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/ef2ec3.wgsl.expected.ir.glsl
index 56bab2f..766f67d 100644
--- a/test/tint/builtins/gen/var/textureLoad/ef2ec3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/ef2ec3.wgsl.expected.ir.glsl
@@ -6,10 +6,10 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_ef2ec3() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
@@ -21,10 +21,10 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 ivec4 textureLoad_ef2ec3() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureLoad/f06b69.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/f06b69.wgsl.expected.ir.glsl
index 2bcb76a..bf8fd32 100644
--- a/test/tint/builtins/gen/var/textureLoad/f06b69.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/f06b69.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f06b69() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_f06b69();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f06b69() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_f06b69();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, r32i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_f06b69() {
   int arg_1 = 1;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/f35ac7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/f35ac7.wgsl.expected.ir.glsl
index fb850f0..e54f115 100644
--- a/test/tint/builtins/gen/var/textureLoad/f35ac7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/f35ac7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f35ac7() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_f35ac7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f35ac7() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_f35ac7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_f35ac7() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/f9eaaf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/f9eaaf.wgsl.expected.ir.glsl
index 0882cd0..f328b7b 100644
--- a/test/tint/builtins/gen/var/textureLoad/f9eaaf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/f9eaaf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f9eaaf() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_f9eaaf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   ivec4 tint_symbol;
 } v;
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 ivec4 textureLoad_f9eaaf() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_f9eaaf();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'iimage1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   ivec4 prevent_dce;
 };
 
-layout(binding = 0, rgba16i) uniform highp readonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp readonly iimage2D arg_0;
 layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 textureLoad_f9eaaf() {
   uint arg_1 = 1u;
-  ivec4 res = imageLoad(arg_0, int(arg_1));
+  ivec4 res = imageLoad(arg_0, ivec2(uvec2(arg_1, 0u)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'iimage1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureLoad/fe222a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureLoad/fe222a.wgsl.expected.ir.glsl
index cee6f00..dbe1ce4 100644
--- a/test/tint/builtins/gen/var/textureLoad/fe222a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/fe222a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,47 +6,31 @@
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 vec4 textureLoad_fe222a() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 void main() {
   v.tint_symbol = textureLoad_fe222a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, std430)
 buffer tint_symbol_1_1_ssbo {
   vec4 tint_symbol;
 } v;
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 vec4 textureLoad_fe222a() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   v.tint_symbol = textureLoad_fe222a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'image1D' : Reserved word. 
-WARNING: 0:7: 'layout' : useless application of layout qualifier 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 
@@ -57,11 +39,11 @@
   vec4 prevent_dce;
 };
 
-layout(binding = 0, rgba8_snorm) uniform highp readonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp readonly image2D arg_0;
 layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 textureLoad_fe222a() {
   int arg_1 = 1;
-  vec4 res = imageLoad(arg_0, int(arg_1));
+  vec4 res = imageLoad(arg_0, ivec2(ivec2(arg_1, 0)));
   return res;
 }
 VertexOutput vertex_main_inner() {
@@ -78,13 +60,3 @@
   vertex_main_loc0_Output = v.prevent_dce;
   gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'image1D' : Reserved word. 
-WARNING: 0:9: 'layout' : useless application of layout qualifier 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/0ad124.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/0ad124.wgsl.expected.ir.glsl
index 8fffbdd..1a3811a 100644
--- a/test/tint/builtins/gen/var/textureStore/0ad124.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0ad124.wgsl.expected.ir.glsl
@@ -2,22 +2,24 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_0ad124() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_0ad124();
 }
 #version 460
 
-layout(binding = 0, r8) uniform highp image1D arg_0;
+layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_0ad124() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.ir.glsl
index c9c9b6a..413313d 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_102722() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_102722();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_102722() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_102722();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.ir.glsl
index 2e62764..0e93a94 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_2ac6c7() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_2ac6c7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_2ac6c7() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2ac6c7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.ir.glsl
index e92146b..443cfde 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba16ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_2eb2a4() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_2eb2a4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba16ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_2eb2a4() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2eb2a4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.ir.glsl
index b88fde4..5865e73 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8_snorm) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_2ed2a3() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_2ed2a3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8_snorm) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_2ed2a3() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2ed2a3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.ir.glsl
index f9ccc02..d92e657 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_3bec15() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_3bec15();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_3bec15() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3bec15();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.glsl
index 47017f4..c6579be 100644
--- a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.glsl
@@ -2,22 +2,24 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_4cce74() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_4cce74();
 }
 #version 460
 
-layout(binding = 0, rg32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_4cce74() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.glsl
index a99a3e5..b64a11f 100644
--- a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.glsl
@@ -2,22 +2,24 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_51ec82() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_51ec82();
 }
 #version 460
 
-layout(binding = 0, rg32f) uniform highp image1D arg_0;
+layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_51ec82() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.ir.glsl
index 67c2ecb..1fe17fc 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba16i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_5a2f8f() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_5a2f8f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba16i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_5a2f8f() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5a2f8f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.ir.glsl
index f4d0d37..d0839f1 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_6b75c3() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_6b75c3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_6b75c3() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6b75c3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.ir.glsl
index 0cfb06f..82d2b15 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_6b80d2() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_6b80d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_6b80d2() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6b80d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.glsl
index 3189539..c02e589 100644
--- a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_6e6cc0() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_6e6cc0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32f) uniform highp image1D arg_0;
+layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_6e6cc0() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6e6cc0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/74886f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/74886f.wgsl.expected.ir.glsl
index 1448f7e..5d4d6b0 100644
--- a/test/tint/builtins/gen/var/textureStore/74886f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/74886f.wgsl.expected.ir.glsl
@@ -2,22 +2,24 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_74886f() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_74886f();
 }
 #version 460
 
-layout(binding = 0, r8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_74886f() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.ir.glsl
index bdd74d6..ecb88c4 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_7f7fae() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_7f7fae();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_7f7fae() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_7f7fae();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.ir.glsl
index 2d82df0..d7d59d74 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.ir.glsl
@@ -2,22 +2,24 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_83bcc1() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_83bcc1();
 }
 #version 460
 
-layout(binding = 0, rg32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_83bcc1() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.glsl
index c846198..1f16cd1 100644
--- a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_8676c9() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_8676c9();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32ui) uniform highp uimage1D arg_0;
+layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_8676c9() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8676c9();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.ir.glsl
index 4627838..e3ebc69 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.ir.glsl
@@ -2,22 +2,24 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_872747() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_872747();
 }
 #version 460
 
-layout(binding = 0, rg32f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_872747() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.ir.glsl
index 98c6be4..b6652e2 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_969534() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_969534();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_969534() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_969534();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.ir.glsl
index df02c52..57c1641 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bf775c() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_bf775c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bf775c() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_bf775c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.ir.glsl
index 4cbce0c..b850675 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.ir.glsl
@@ -2,22 +2,24 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_d73b5c() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_d73b5c();
 }
 #version 460
 
-layout(binding = 0, rg32i) uniform highp writeonly iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_d73b5c() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.glsl
index 336786e..a68c711 100644
--- a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.glsl
@@ -2,22 +2,24 @@
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_e077e7() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_e077e7();
 }
 #version 460
 
-layout(binding = 0, rg32i) uniform highp iimage1D arg_0;
+layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_e077e7() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
diff --git a/test/tint/builtins/gen/var/textureStore/e0b666.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/e0b666.wgsl.expected.ir.glsl
index de18b1c..ac98086 100644
--- a/test/tint/builtins/gen/var/textureStore/e0b666.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e0b666.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_e0b666() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2.zyxw);
+  vec4 v = arg_2.zyxw;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_e0b666();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba8) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_e0b666() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2.zyxw);
+  vec4 v = arg_2.zyxw;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e0b666();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.ir.glsl
index bf580d4..09e7426 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba16f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_e885e8() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_e885e8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba16f) uniform highp writeonly image1D arg_0;
+layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_e885e8() {
   int arg_1 = 1;
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e885e8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'image1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.glsl
index c618ab2..5fc8500 100644
--- a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_f64d69() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_f64d69();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'iimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, r32i) uniform highp iimage1D arg_0;
+layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_f64d69() {
   int arg_1 = 1;
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_f64d69();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'iimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.ir.glsl
index dd972dc..4383edc 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.ir.glsl
@@ -1,45 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-layout(binding = 0, rgba32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_fb9a8f() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 void main() {
   textureStore_fb9a8f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'uimage1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
-layout(binding = 0, rgba32ui) uniform highp writeonly uimage1D arg_0;
+layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_fb9a8f() {
   int arg_1 = 1;
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1, 0), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_fb9a8f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'uimage1D' : Reserved word. 
-WARNING: 0:3: 'layout' : useless application of layout qualifier 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/types/texture/sampled/1d.wgsl.expected.ir.glsl b/test/tint/types/texture/sampled/1d.wgsl.expected.ir.glsl
index ea34460..f75a715 100644
--- a/test/tint/types/texture/sampled/1d.wgsl.expected.ir.glsl
+++ b/test/tint/types/texture/sampled/1d.wgsl.expected.ir.glsl
@@ -1,22 +1,11 @@
-SKIP: FAILED
-
 #version 310 es
 
-uniform highp sampler1D t_f;
-uniform highp isampler1D t_i;
-uniform highp usampler1D t_u;
+uniform highp sampler2D t_f;
+uniform highp isampler2D t_i;
+uniform highp usampler2D t_u;
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  uint fdims = uint(textureSize(t_f, 1));
-  uint idims = uint(textureSize(t_i, 1));
-  uint udims = uint(textureSize(t_u, 1));
+  uint fdims = uvec2(textureSize(t_f, 1)).x;
+  uint idims = uvec2(textureSize(t_i, 1)).x;
+  uint udims = uvec2(textureSize(t_u, 1)).x;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'sampler1D' : Reserved word. 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.glsl
deleted file mode 100644
index 6595523..0000000
--- a/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-uniform highp sampler1D x_20;
-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);
-  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);
-  int v = int(1);
-  vec4 x_73 = texelFetch(x_20, v, int(0));
-  uint x_1000 = 0u;
-}
-void main() {
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'sampler1D' : Reserved word. 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.glsl
deleted file mode 100644
index 7d203b2..0000000
--- a/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-uniform highp sampler1D x_20;
-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);
-  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);
-  int v = int(1);
-  vec4 x_71 = texelFetch(x_20, v, int(0));
-  uint x_1000 = 0u;
-}
-void main() {
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'sampler1D' : Reserved word. 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.glsl
deleted file mode 100644
index f629577..0000000
--- a/test/tint/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-layout(binding = 1, r32f) uniform highp writeonly image1D x_20;
-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);
-  imageStore(x_20, int(u1), vf1234);
-  uint x_1000 = 0u;
-}
-void main() {
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.glsl
deleted file mode 100644
index 9afb254..0000000
--- a/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-uniform highp sampler1D x_20;
-void main_1() {
-  float float_var = 0.0f;
-  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);
-  int v = int(1);
-  vec4 x_73 = texelFetch(x_20, v, int(0));
-  uint x_1000 = 0u;
-}
-void main() {
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'sampler1D' : Reserved word. 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.glsl
deleted file mode 100644
index b54e3c6..0000000
--- a/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-uniform highp sampler1D x_20;
-void main_1() {
-  float float_var = 0.0f;
-  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);
-  int v = int(1);
-  vec4 x_71 = texelFetch(x_20, v, int(0));
-  uint x_1000 = 0u;
-}
-void main() {
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'sampler1D' : Reserved word. 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.glsl
deleted file mode 100644
index d8b6bd6..0000000
--- a/test/tint/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-layout(binding = 1, r32f) uniform highp writeonly image1D x_20;
-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);
-  imageStore(x_20, i1, vf1234);
-  uint x_1000 = 0u;
-}
-void main() {
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'image1D' : Reserved word. 
-WARNING: 0:5: 'layout' : useless application of layout qualifier 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.ir.glsl
deleted file mode 100644
index 1982995..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,23 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-uniform highp sampler1D x_20;
-void main_1() {
-  int v = int(1);
-  vec4 x_125 = texelFetch(x_20, v, int(0));
-}
-void main() {
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'sampler1D' : Reserved word. 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.ir.glsl
deleted file mode 100644
index a029926..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,23 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-uniform highp sampler1D x_20;
-void main_1() {
-  int v = int(0);
-  vec4 x_125 = texelFetch(x_20, v, int(0));
-}
-void main() {
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'sampler1D' : Reserved word. 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1