GLSL: implement image format qualifiers for storage textures.

Bug: tint:1397
Change-Id: Ifd6870b3e7cba151c361bd21f9d3d42642ff6c26
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/78060
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Stephen White <senorblanco@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/writer/glsl/generator_impl.cc b/src/writer/glsl/generator_impl.cc
index 34fdd07..b1ab18b 100644
--- a/src/writer/glsl/generator_impl.cc
+++ b/src/writer/glsl/generator_impl.cc
@@ -77,6 +77,46 @@
   return IsAnyOf<ast::BreakStatement, ast::FallthroughStatement>(stmts->Last());
 }
 
+const char* convert_texel_format_to_glsl(const ast::TexelFormat format) {
+  switch (format) {
+    case ast::TexelFormat::kR32Uint:
+      return "r32ui";
+    case ast::TexelFormat::kR32Sint:
+      return "r32i";
+    case ast::TexelFormat::kR32Float:
+      return "r32f";
+    case ast::TexelFormat::kRgba8Unorm:
+      return "rgba8";
+    case ast::TexelFormat::kRgba8Snorm:
+      return "rgba8_snorm";
+    case ast::TexelFormat::kRgba8Uint:
+      return "rgba8ui";
+    case ast::TexelFormat::kRgba8Sint:
+      return "rgba8i";
+    case ast::TexelFormat::kRg32Uint:
+      return "rg32ui";
+    case ast::TexelFormat::kRg32Sint:
+      return "rg32i";
+    case ast::TexelFormat::kRg32Float:
+      return "rg32f";
+    case ast::TexelFormat::kRgba16Uint:
+      return "rgba16ui";
+    case ast::TexelFormat::kRgba16Sint:
+      return "rgba16i";
+    case ast::TexelFormat::kRgba16Float:
+      return "rgba16f";
+    case ast::TexelFormat::kRgba32Uint:
+      return "rgba32ui";
+    case ast::TexelFormat::kRgba32Sint:
+      return "rgba32i";
+    case ast::TexelFormat::kRgba32Float:
+      return "rgba32f";
+    case ast::TexelFormat::kNone:
+      return "unknown";
+  }
+  return "unknown";
+}
+
 }  // namespace
 
 GeneratorImpl::GeneratorImpl(const Program* program) : TextGenerator(program) {}
@@ -1673,10 +1713,14 @@
 
   auto name = builder_.Symbols().NameFor(decl->symbol);
   auto* type = var->Type()->UnwrapRef();
-  if (type->As<sem::Sampler>()) {
+  if (type->Is<sem::Sampler>()) {
     // GLSL ignores Sampler variables.
     return true;
   }
+  if (auto* storage = type->As<sem::StorageTexture>()) {
+    out << "layout(" << convert_texel_format_to_glsl(storage->texel_format())
+        << ") ";
+  }
   if (!EmitTypeAndName(out, type, var->StorageClass(), var->Access(), name)) {
     return false;
   }
diff --git a/test/benchmark/particles.wgsl.expected.glsl b/test/benchmark/particles.wgsl.expected.glsl
index a8c4386..4edeac4 100644
--- a/test/benchmark/particles.wgsl.expected.glsl
+++ b/test/benchmark/particles.wgsl.expected.glsl
@@ -487,7 +487,7 @@
   uvec3 coord;
 };
 
-uniform highp writeonly image2D tex_out_1;
+layout(rgba8) uniform highp writeonly image2D tex_out_1;
 
 void export_level_inner(uvec3 coord) {
   if (all(lessThan(coord.xy, uvec2(imageSize(tex_out_1))))) {
diff --git a/test/bug/tint/1081.wgsl.expected.glsl b/test/bug/tint/1081.wgsl.expected.glsl
index 4d21187..b49445b 100644
--- a/test/bug/tint/1081.wgsl.expected.glsl
+++ b/test/bug/tint/1081.wgsl.expected.glsl
@@ -1,9 +1,5 @@
 SKIP: FAILED
 
-bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
-                     ^
-
 #version 310 es
 precision mediump float;
 
diff --git a/test/bug/tint/413.spvasm.expected.glsl b/test/bug/tint/413.spvasm.expected.glsl
index 893d989..35e2e10 100644
--- a/test/bug/tint/413.spvasm.expected.glsl
+++ b/test/bug/tint/413.spvasm.expected.glsl
@@ -2,7 +2,7 @@
 precision mediump float;
 
 uniform highp usampler2D Src_1;
-uniform highp writeonly uimage2D Dst_1;
+layout(r32ui) uniform highp writeonly uimage2D Dst_1;
 
 void main_1() {
   uvec4 srcValue = uvec4(0u, 0u, 0u, 0u);
diff --git a/test/bug/tint/453.wgsl.expected.glsl b/test/bug/tint/453.wgsl.expected.glsl
index a4d01a2..f1478dd 100644
--- a/test/bug/tint/453.wgsl.expected.glsl
+++ b/test/bug/tint/453.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 precision mediump float;
 
 uniform highp usampler2D Src_1;
-uniform highp writeonly uimage2D Dst_1;
+layout(r32ui) uniform highp writeonly uimage2D Dst_1;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void tint_symbol() {
diff --git a/test/bug/tint/942.wgsl.expected.glsl b/test/bug/tint/942.wgsl.expected.glsl
index 9f74c1d..9bceb2f 100644
--- a/test/bug/tint/942.wgsl.expected.glsl
+++ b/test/bug/tint/942.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 uniform highp sampler2D inputTex_1;
 uniform highp sampler2D inputTex_samp;
-uniform highp writeonly image2D outputTex_1;
+layout(rgba8) uniform highp writeonly image2D outputTex_1;
 
 
 void tint_symbol_inner(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_invocation_index) {
diff --git a/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.glsl
index 12cbfac..481a013 100644
--- a/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_012b82() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_012b82() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_012b82() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.glsl
index 4dddbd1..461ae0a 100644
--- a/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_08753d() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_08753d() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_08753d() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.glsl
index 7801d7b..23a3161 100644
--- a/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba16f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_0c4772() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba16f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_0c4772() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba16f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_0c4772() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.glsl
index 94b8cb7..5a4b177 100644
--- a/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(r32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_0cce40() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(r32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_0cce40() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(r32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_0cce40() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
index 3d88177..2bf815c 100644
--- a/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_0cf2ff() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_0cf2ff() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_0cf2ff() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
index b4c615b..d0bbe46 100644
--- a/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_0d8b7e() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_0d8b7e() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_0d8b7e() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.glsl
index 4145cbe..69b8fb2 100644
--- a/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_0e32ee() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_0e32ee() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_0e32ee() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.glsl
index 65b3a35..e3421b0 100644
--- a/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rg32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_147998() {
   ivec2 res = imageSize(arg_0_1);
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rg32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_147998() {
   ivec2 res = imageSize(arg_0_1);
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rg32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_147998() {
   ivec2 res = imageSize(arg_0_1);
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.glsl
index eee836b..35ebc9f9 100644
--- a/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_16036c() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_16036c() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_16036c() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.glsl
index c2a963f..02e303b 100644
--- a/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_1b71f0() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_1b71f0() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_1b71f0() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.glsl
index 2cd5a29..50cbda0 100644
--- a/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_1d6c26() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_1d6c26() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_1d6c26() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.glsl
index 73f9123..95cd8c2 100644
--- a/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba16f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_1e9e39() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba16f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_1e9e39() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba16f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_1e9e39() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.glsl
index 4789569..15b3e85 100644
--- a/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_214dd4() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_214dd4() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_214dd4() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.glsl
index 22fc691..9d0216b 100644
--- a/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_26ef6c() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_26ef6c() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_26ef6c() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.glsl
index 30f6172..0d31f82 100644
--- a/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_2ad087() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_2ad087() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_2ad087() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.glsl
index e298288..ca6024b 100644
--- a/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(r32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_2f289f() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(r32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_2f289f() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(r32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_2f289f() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.glsl
index ce0aa37..2f461dc 100644
--- a/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_318ecc() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_318ecc() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_318ecc() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.glsl
index f84cf9f..b8932f7 100644
--- a/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_340d06() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_340d06() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_340d06() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.glsl
index 89d737d..3a52121 100644
--- a/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_398e30() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_398e30() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_398e30() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.glsl
index 8ac7567..5db3b56 100644
--- a/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_3a94ea() {
   ivec2 res = imageSize(arg_0_1);
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_3a94ea() {
   ivec2 res = imageSize(arg_0_1);
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_3a94ea() {
   ivec2 res = imageSize(arg_0_1);
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.glsl
index 8ec6e78..c3a1801 100644
--- a/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_3aca08() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_3aca08() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_3aca08() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
index 56d7055..d9d8463 100644
--- a/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_3c5ad8() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_3c5ad8() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_3c5ad8() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.glsl
index 618a9a8..acc68c5 100644
--- a/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_4267ee() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_4267ee() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_4267ee() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.glsl
index 162868b..1a85b7b 100644
--- a/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_42d4e6() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_42d4e6() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_42d4e6() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.glsl
index 6552d59..f83aad5 100644
--- a/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba16f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_48cb89() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba16f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_48cb89() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba16f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_48cb89() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.glsl
index 0c1669a..487bb79 100644
--- a/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_49d274() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_49d274() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_49d274() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.glsl
index a621b08..6345878 100644
--- a/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_4df9a8() {
   int res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +42,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_4df9a8() {
   int res = imageSize(arg_0_1);
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +71,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_4df9a8() {
   int res = imageSize(arg_0_1);
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.glsl
index 7e42c6a..61e00f7 100644
--- a/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rg32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_55b23e() {
   int res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +42,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rg32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_55b23e() {
   int res = imageSize(arg_0_1);
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +71,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rg32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_55b23e() {
   int res = imageSize(arg_0_1);
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.glsl
index 4a21363..c8151a4 100644
--- a/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_57da0b() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_57da0b() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_57da0b() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.glsl
index 7c3e45e..9360009 100644
--- a/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_58a515() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_58a515() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_58a515() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.glsl
index 96f1e2c..c63fffd 100644
--- a/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_5985f3() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_5985f3() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_5985f3() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.glsl
index 6c878f6..7ffd983 100644
--- a/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_5caa5e() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_5caa5e() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_5caa5e() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.glsl
index 5cb0394..d96a921 100644
--- a/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_5e295d() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_5e295d() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_5e295d() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.glsl
index 3b3f72f..25f0f2d 100644
--- a/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_60bf54() {
   ivec3 res = imageSize(arg_0_1);
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_60bf54() {
   ivec3 res = imageSize(arg_0_1);
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_60bf54() {
   ivec3 res = imageSize(arg_0_1);
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.glsl
index 723e36a..2f124b2 100644
--- a/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rg32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_63f3cf() {
   ivec3 res = imageSize(arg_0_1);
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rg32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_63f3cf() {
   ivec3 res = imageSize(arg_0_1);
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rg32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_63f3cf() {
   ivec3 res = imageSize(arg_0_1);
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.glsl
index e5d5a1b..c382ed5 100644
--- a/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_68105c() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_68105c() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_68105c() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.glsl
index f1509d1..dc171d4 100644
--- a/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_6adac6() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_6adac6() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_6adac6() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.glsl
index 95a369b..84e96b1 100644
--- a/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_6f0d79() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_6f0d79() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_6f0d79() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.glsl
index 873c7c7..58722f6 100644
--- a/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_702c53() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_702c53() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_702c53() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
index 2139896..7a5e09e 100644
--- a/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_7f5c2e() {
   ivec2 res = imageSize(arg_0_1);
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_7f5c2e() {
   ivec2 res = imageSize(arg_0_1);
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_7f5c2e() {
   ivec2 res = imageSize(arg_0_1);
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.glsl
index a9d7b4f..048646b 100644
--- a/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(r32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_8028f3() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(r32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_8028f3() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(r32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_8028f3() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.glsl
index bd3900d..0a7c470 100644
--- a/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_811679() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_811679() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_811679() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.glsl
index 507a0d4..a637410 100644
--- a/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_820596() {
   ivec3 res = imageSize(arg_0_1);
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_820596() {
   ivec3 res = imageSize(arg_0_1);
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_820596() {
   ivec3 res = imageSize(arg_0_1);
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.glsl
index a1f321c..2db3182 100644
--- a/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_83ee5a() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_83ee5a() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_83ee5a() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.glsl
index 25d5e6f..d1dea96 100644
--- a/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_8fca0f() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_8fca0f() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba32f) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_8fca0f() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.glsl
index 3a03145..a9d98c4 100644
--- a/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_9042ab() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_9042ab() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureDimensions_9042ab() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.glsl
index 9d4a2d6..55a5344 100644
--- a/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_9abfe5() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_9abfe5() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_9abfe5() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.glsl
index 755e8ff..a16a4bb 100644
--- a/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_9da9e2() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_9da9e2() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_9da9e2() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
index 2fa2f62..cae2103 100644
--- a/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_9eb8d8() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_9eb8d8() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_9eb8d8() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.glsl
index cabacd5..da7946d 100644
--- a/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(r32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_a863f2() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(r32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_a863f2() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(r32f) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_a863f2() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.glsl
index 595245a..5e8c4e1 100644
--- a/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_b91240() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_b91240() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_b91240() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.glsl
index 0aaf8a4..8d3b5b2 100644
--- a/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_bb3dde() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_bb3dde() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureDimensions_bb3dde() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.glsl
index 8d35883..8543a6f 100644
--- a/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(r32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_c30e75() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(r32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_c30e75() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(r32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureDimensions_c30e75() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.glsl
index 3c6c9fc..fbeefdd 100644
--- a/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_c7943d() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_c7943d() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureDimensions_c7943d() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.glsl
index f214fad..48fd1e7 100644
--- a/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_cc968c() {
   int res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +42,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_cc968c() {
   int res = imageSize(arg_0_1);
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +71,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureDimensions_cc968c() {
   int res = imageSize(arg_0_1);
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.glsl
index 8f3220f..a3fee89 100644
--- a/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_cccc8f() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_cccc8f() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image1D arg_0_1;
 
 void textureDimensions_cccc8f() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.glsl
index 9f25caa..f690dd5 100644
--- a/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_cd76a7() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_cd76a7() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_cd76a7() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.glsl
index c7221d7..e54e027 100644
--- a/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_cdf473() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_cdf473() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureDimensions_cdf473() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.glsl
index efe4df9..eaef07c 100644
--- a/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_cf7e43() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_cf7e43() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0_1;
 
 void textureDimensions_cf7e43() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
index 0303408..c7ba27b 100644
--- a/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_dc2dd0() {
   int res = imageSize(arg_0_1);
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_dc2dd0() {
   int res = imageSize(arg_0_1);
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureDimensions_dc2dd0() {
   int res = imageSize(arg_0_1);
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.glsl
index d03330a..32e4bbb 100644
--- a/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_e9e96c() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_e9e96c() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_e9e96c() {
   ivec2 res = imageSize(arg_0_1).xy;
diff --git a/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.glsl
index f037d02..ca200d4 100644
--- a/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(r32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_f931c7() {
   ivec2 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(r32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_f931c7() {
   ivec2 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(r32f) uniform highp writeonly image2D arg_0_1;
 
 void textureDimensions_f931c7() {
   ivec2 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.glsl
index 142e213..2662d11 100644
--- a/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_fb5670() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_fb5670() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureDimensions_fb5670() {
   ivec2 res = imageSize(arg_0_1).xy;
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.glsl
index 563a1fd..98d5dc4 100644
--- a/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_fcac78() {
   ivec3 res = imageSize(arg_0_1);
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_fcac78() {
   ivec3 res = imageSize(arg_0_1);
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureDimensions_fcac78() {
   ivec3 res = imageSize(arg_0_1);
diff --git a/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.glsl
index 299f4a1..12bb98f 100644
--- a/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_058cc3() {
   int res = textureQueryLevels(arg_0_1);;
@@ -33,17 +33,16 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_058cc3() {
   int res = textureQueryLevels(arg_0_1);;
@@ -63,17 +62,16 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_058cc3() {
   int res = textureQueryLevels(arg_0_1);;
@@ -94,10 +92,9 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
diff --git a/test/intrinsics/gen/textureNumLayers/09d05d.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/09d05d.wgsl.expected.glsl
index 18aac35..07e2c4e 100644
--- a/test/intrinsics/gen/textureNumLayers/09d05d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/09d05d.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_09d05d() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_09d05d() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_09d05d() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
index 52a278d..ed99031 100644
--- a/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_13b4ce() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_13b4ce() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_13b4ce() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.glsl
index 2ec9677..6cddc02 100644
--- a/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_22e53b() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_22e53b() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_22e53b() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/562013.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/562013.wgsl.expected.glsl
index 2cd483b..f64ebc4 100644
--- a/test/intrinsics/gen/textureNumLayers/562013.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/562013.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_562013() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_562013() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_562013() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/68a65b.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/68a65b.wgsl.expected.glsl
index b5f4054..746959a 100644
--- a/test/intrinsics/gen/textureNumLayers/68a65b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/68a65b.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_68a65b() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_68a65b() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_68a65b() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/7f1937.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/7f1937.wgsl.expected.glsl
index 32e291d..c05cb55 100644
--- a/test/intrinsics/gen/textureNumLayers/7f1937.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/7f1937.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_7f1937() {
   int res = textureQueryLevels(arg_0_1);;
@@ -33,17 +33,16 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_7f1937() {
   int res = textureQueryLevels(arg_0_1);;
@@ -63,17 +62,16 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_7f1937() {
   int res = textureQueryLevels(arg_0_1);;
@@ -94,10 +92,9 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
diff --git a/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.glsl
index 04cd196..9e2a56e 100644
--- a/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_9700fb() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_9700fb() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_9700fb() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.glsl
index 446bfad..8888e11 100644
--- a/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_a216d2() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_a216d2() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_a216d2() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
index 5cee038..211a786 100644
--- a/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_cd5dc8() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_cd5dc8() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_cd5dc8() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/d5b228.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/d5b228.wgsl.expected.glsl
index 6417e38..3b4b1a6 100644
--- a/test/intrinsics/gen/textureNumLayers/d5b228.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/d5b228.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_d5b228() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_d5b228() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_d5b228() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/e31be1.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/e31be1.wgsl.expected.glsl
index 6ca95ba..82eb30e 100644
--- a/test/intrinsics/gen/textureNumLayers/e31be1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/e31be1.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_e31be1() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_e31be1() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureNumLayers_e31be1() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.glsl
index c528db4..9f8b29a 100644
--- a/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_ee942f() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_ee942f() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_ee942f() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.glsl
index 229f7fc..636897a 100644
--- a/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_f33005() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_f33005() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureNumLayers_f33005() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.glsl
index 3f98db4..032bd61 100644
--- a/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_fcec98() {
   int res = textureQueryLevels(arg_0_1);;
@@ -33,17 +33,16 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_fcec98() {
   int res = textureQueryLevels(arg_0_1);;
@@ -63,17 +62,16 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_fcec98() {
   int res = textureQueryLevels(arg_0_1);;
@@ -94,10 +92,9 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
diff --git a/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
index 49db3b8..1ed6594 100644
--- a/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_ff5e89() {
   int res = textureQueryLevels(arg_0_1);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_ff5e89() {
   int res = textureQueryLevels(arg_0_1);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureNumLayers_ff5e89() {
   int res = textureQueryLevels(arg_0_1);;
diff --git a/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.glsl
index 5bfbd5a..a2a12ac 100644
--- a/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_05ce15() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_05ce15() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_05ce15() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.glsl
index 899d9ae..d656f9d 100644
--- a/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rg32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_064c7f() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rg32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_064c7f() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rg32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_064c7f() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/068641.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/068641.wgsl.expected.glsl
index 3bc576d..e25e292 100644
--- a/test/intrinsics/gen/textureStore/068641.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/068641.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_068641() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_068641() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_068641() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.glsl
index 10d2103..96f3ce1 100644
--- a/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(r32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_0af6b5() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(r32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_0af6b5() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(r32f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_0af6b5() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.glsl
index 38d3bf3..1fb751a 100644
--- a/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_0c3dff() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_0c3dff() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_0c3dff() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/102722.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/102722.wgsl.expected.glsl
index f80e662..c422cbe 100644
--- a/test/intrinsics/gen/textureStore/102722.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/102722.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_102722() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_102722() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_102722() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.glsl
index 9e86acc..fecb6a5 100644
--- a/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_1bbd08() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_1bbd08() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_1bbd08() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.glsl
index 03a0d54..6e6e69c 100644
--- a/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_1c02e7() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_1c02e7() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(r32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_1c02e7() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/22d955.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/22d955.wgsl.expected.glsl
index 4c3d0f4..df9b64d 100644
--- a/test/intrinsics/gen/textureStore/22d955.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/22d955.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_22d955() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_22d955() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_22d955() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.glsl
index bb9a34a..ce56f9b 100644
--- a/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_26bf70() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_26bf70() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_26bf70() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.glsl
index 9f508c4..f90c8b0 100644
--- a/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_2796b4() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_2796b4() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_2796b4() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.glsl
index 2e783a8..16bd368 100644
--- a/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(r32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_2ac6c7() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(r32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_2ac6c7() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(r32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_2ac6c7() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.glsl
index 23b22b7..4458c45 100644
--- a/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_2eb2a4() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_2eb2a4() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_2eb2a4() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.glsl
index 67cb104..b79f138 100644
--- a/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_2ed2a3() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_2ed2a3() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_2ed2a3() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/31745b.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/31745b.wgsl.expected.glsl
index 0aa0ee9..0b84066 100644
--- a/test/intrinsics/gen/textureStore/31745b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/31745b.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_31745b() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_31745b() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_31745b() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/32f368.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/32f368.wgsl.expected.glsl
index 301de1e..3f604a6 100644
--- a/test/intrinsics/gen/textureStore/32f368.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/32f368.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_32f368() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_32f368() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba16f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_32f368() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/331aee.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/331aee.wgsl.expected.glsl
index ed5638d..98f97e6 100644
--- a/test/intrinsics/gen/textureStore/331aee.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/331aee.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_331aee() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_331aee() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_331aee() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.glsl
index ba1892a..7157863 100644
--- a/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_38e8d7() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_38e8d7() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_38e8d7() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.glsl
index 096e97e..3e1c40a 100644
--- a/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_3a52ac() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_3a52ac() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_3a52ac() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.glsl
index bfd8d20..53393fe 100644
--- a/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_3bb7a1() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_3bb7a1() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(r32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_3bb7a1() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.glsl
index 3d4a533..40b8d07 100644
--- a/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_3bec15() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_3bec15() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_3bec15() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.glsl
index eb5dba4..f657b29 100644
--- a/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_441ba8() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_441ba8() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_441ba8() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.glsl
index 1e09510..be222d5 100644
--- a/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_4fc057() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_4fc057() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_4fc057() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.glsl
index ff0494c..905c2e6 100644
--- a/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_5a2f8f() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_5a2f8f() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_5a2f8f() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/60975f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/60975f.wgsl.expected.glsl
index 29940ba..4325c70 100644
--- a/test/intrinsics/gen/textureStore/60975f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/60975f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_60975f() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_60975f() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba8) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_60975f() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.glsl
index 18fa4c4..bd11bc2 100644
--- a/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_682fd6() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_682fd6() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_682fd6() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.glsl
index 3ee2e11..b61f48a 100644
--- a/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_6b75c3() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_6b75c3() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_6b75c3() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.glsl
index 83d62c9..16239ee 100644
--- a/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(r32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_6b80d2() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(r32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_6b80d2() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(r32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_6b80d2() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.glsl
index d97f571..535f41e 100644
--- a/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_6cff2e() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_6cff2e() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_6cff2e() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/6da692.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/6da692.wgsl.expected.glsl
index 6c3ab0b..63b8b52 100644
--- a/test/intrinsics/gen/textureStore/6da692.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/6da692.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_6da692() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_6da692() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_6da692() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/731349.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/731349.wgsl.expected.glsl
index e44e117..9c4d9eb 100644
--- a/test/intrinsics/gen/textureStore/731349.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/731349.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_731349() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_731349() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_731349() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/752da6.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/752da6.wgsl.expected.glsl
index ea0ad5a..399dd48 100644
--- a/test/intrinsics/gen/textureStore/752da6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/752da6.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_752da6() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_752da6() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_752da6() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.glsl
index 7831765..92aa374 100644
--- a/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_77c0ae() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_77c0ae() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0_1;
 
 void textureStore_77c0ae() {
   imageStore(arg_0_1, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.glsl
index 36cd1e3..a86146a 100644
--- a/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_7cec8d() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_7cec8d() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_7cec8d() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.glsl
index a4db5c8..6de553e 100644
--- a/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_7f7fae() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_7f7fae() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba8) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_7f7fae() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/804942.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/804942.wgsl.expected.glsl
index 9a7cdc4..8288982 100644
--- a/test/intrinsics/gen/textureStore/804942.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/804942.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(r32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_804942() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(r32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_804942() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(r32i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_804942() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/805dae.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/805dae.wgsl.expected.glsl
index dc6358d..0c39f41 100644
--- a/test/intrinsics/gen/textureStore/805dae.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/805dae.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_805dae() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_805dae() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_805dae() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.glsl
index 39eff32..0313917 100644
--- a/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_83bcc1() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +42,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_83bcc1() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +71,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_83bcc1() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/872747.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/872747.wgsl.expected.glsl
index 3bfd86a..37a5e83 100644
--- a/test/intrinsics/gen/textureStore/872747.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/872747.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rg32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_872747() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +42,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rg32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_872747() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +71,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rg32f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_872747() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.glsl
index 355bf61..84c26fb 100644
--- a/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_8e0479() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_8e0479() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_8e0479() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.glsl
index 643f526..a4828b9 100644
--- a/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_8f71a1() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_8f71a1() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_8f71a1() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/969534.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/969534.wgsl.expected.glsl
index d0858ac..d613c01 100644
--- a/test/intrinsics/gen/textureStore/969534.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/969534.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_969534() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_969534() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_969534() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.glsl
index 968517c..49e6391 100644
--- a/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_9a3ecc() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_9a3ecc() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_9a3ecc() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.glsl
index 0295297..820b26f 100644
--- a/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_9d9cd5() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_9d9cd5() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rgba32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_9d9cd5() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.glsl
index 2ddff6c..c7219fd 100644
--- a/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_9e3ec5() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_9e3ec5() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba16i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_9e3ec5() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.glsl
index a822d0e..49a543f 100644
--- a/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_ac67aa() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_ac67aa() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_ac67aa() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.glsl
index fd83a70..bd7039b 100644
--- a/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_b706b1() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_b706b1() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_b706b1() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.glsl
index d4a040a..6a83148 100644
--- a/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_bbcb7f() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_bbcb7f() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2D arg_0_1;
 
 void textureStore_bbcb7f() {
   imageStore(arg_0_1, ivec2(0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.glsl
index be19406..dfebc0e 100644
--- a/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba16f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_be6e30() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba16f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_be6e30() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0_1;
+layout(rgba16f) uniform highp writeonly image2D arg_0_1;
 
 void textureStore_be6e30() {
   imageStore(arg_0_1, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.glsl
index 2a45055..27837a9 100644
--- a/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_bf775c() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_bf775c() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_bf775c() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'iimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.glsl
index 3e8be5f..4d0add9 100644
--- a/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba16f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_c5af1e() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba16f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_c5af1e() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba16f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_c5af1e() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/c863be.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/c863be.wgsl.expected.glsl
index 2a7f17a..8a551ae 100644
--- a/test/intrinsics/gen/textureStore/c863be.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/c863be.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_c863be() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_c863be() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0_1;
+layout(rg32f) uniform highp writeonly image2DArray arg_0_1;
 
 void textureStore_c863be() {
   imageStore(arg_0_1, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.glsl
index 571a322..d582563 100644
--- a/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_d73b5c() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +42,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_d73b5c() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +71,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage1D arg_0_1;
+layout(rg32i) uniform highp writeonly iimage1D arg_0_1;
 
 void textureStore_d73b5c() {
   imageStore(arg_0_1, 1, ivec4(0, 0, 0, 0));
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.glsl
index b4b7f1d..5ed18a6 100644
--- a/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_dd7d81() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_dd7d81() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_dd7d81() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/dde364.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/dde364.wgsl.expected.glsl
index 34d7d8d..4b67f2c 100644
--- a/test/intrinsics/gen/textureStore/dde364.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/dde364.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_dde364() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_dde364() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage2DArray arg_0_1;
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0_1;
 
 void textureStore_dde364() {
   imageStore(arg_0_1, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.glsl
index 4411bc3..7441922 100644
--- a/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba16f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_e885e8() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba16f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_e885e8() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0_1;
+layout(rgba16f) uniform highp writeonly image1D arg_0_1;
 
 void textureStore_e885e8() {
   imageStore(arg_0_1, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.glsl
index 77f4135..5f0e737 100644
--- a/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(r32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_eb702f() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(r32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_eb702f() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(r32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_eb702f() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.glsl
index dbbe8cb..13865eb 100644
--- a/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(r32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_eb78b9() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(r32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_eb78b9() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage3D arg_0_1;
+layout(r32i) uniform highp writeonly iimage3D arg_0_1;
 
 void textureStore_eb78b9() {
   imageStore(arg_0_1, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.glsl
index 47ba299..7c76153 100644
--- a/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rg32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_ee6acc() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rg32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_ee6acc() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0_1;
+layout(rg32f) uniform highp writeonly image3D arg_0_1;
 
 void textureStore_ee6acc() {
   imageStore(arg_0_1, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.glsl
index 1e51fe5..58c9b58 100644
--- a/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_ef9f2f() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_ef9f2f() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(r32ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_ef9f2f() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.glsl
index 09fd259..d67f4ee 100644
--- a/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_f8dead() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_f8dead() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage3D arg_0_1;
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0_1;
 
 void textureStore_f8dead() {
   imageStore(arg_0_1, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.glsl
index b02da21..63a3074 100644
--- a/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.glsl
@@ -1,7 +1,9 @@
+SKIP: FAILED
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_f9be83() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -30,10 +32,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_f9be83() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -52,10 +61,17 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_f9be83() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -75,3 +91,10 @@
 }
 
 
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.glsl
index 882c4ee..83204e6 100644
--- a/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_fb9a8f() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -34,6 +34,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_fb9a8f() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -63,6 +64,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly uimage1D arg_0_1;
+layout(rgba32ui) uniform highp writeonly uimage1D arg_0_1;
 
 void textureStore_fb9a8f() {
   imageStore(arg_0_1, 1, uvec4(0u, 0u, 0u, 0u));
@@ -93,6 +95,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'uimage1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.glsl
index 7e08398..ebb1a2d 100644
--- a/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_fbf53f() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -33,7 +33,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_fbf53f() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
@@ -55,7 +55,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly iimage2DArray arg_0_1;
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0_1;
 
 void textureStore_fbf53f() {
   imageStore(arg_0_1, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
diff --git a/test/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl b/test/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl
index 4f243d9..1432f94 100644
--- a/test/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/ConvertUintCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D x_20_1;
+layout(r32f) uniform highp writeonly image1D x_20_1;
 
 void main_1() {
   float float_var = 0.0f;
@@ -35,6 +35,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.glsl
new file mode 100644
index 0000000..d0a6ee9
--- /dev/null
+++ b/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.glsl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+#version 310 es
+precision mediump float;
+
+layout(rg32f) uniform highp writeonly image2D x_20_1;
+
+void main_1() {
+  float f1 = 1.0f;
+  vec2 vf12 = vec2(1.0f, 2.0f);
+  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
+  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
+  int i1 = 1;
+  ivec2 vi12 = ivec2(1, 2);
+  ivec3 vi123 = ivec3(1, 2, 3);
+  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);
+  ivec2 offsets2d = ivec2(3, 4);
+  imageStore(x_20_1, vi12, vec4(vf12, 0.0f, 0.0f));
+  return;
+}
+
+void tint_symbol() {
+  main_1();
+  return;
+}
+void main() {
+  tint_symbol();
+}
+
+
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.glsl
new file mode 100644
index 0000000..f78f060
--- /dev/null
+++ b/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.glsl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+#version 310 es
+precision mediump float;
+
+layout(rg32f) uniform highp writeonly image2D x_20_1;
+
+void main_1() {
+  float f1 = 1.0f;
+  vec2 vf12 = vec2(1.0f, 2.0f);
+  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
+  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
+  int i1 = 1;
+  ivec2 vi12 = ivec2(1, 2);
+  ivec3 vi123 = ivec3(1, 2, 3);
+  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);
+  ivec2 offsets2d = ivec2(3, 4);
+  imageStore(x_20_1, vi12, vec4(vf123, 0.0f));
+  return;
+}
+
+void tint_symbol() {
+  main_1();
+  return;
+}
+void main() {
+  tint_symbol();
+}
+
+
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.glsl b/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.glsl
new file mode 100644
index 0000000..49e66b8
--- /dev/null
+++ b/test/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.glsl
@@ -0,0 +1,41 @@
+SKIP: FAILED
+
+#version 310 es
+precision mediump float;
+
+layout(rg32f) uniform highp writeonly image2D x_20_1;
+
+void main_1() {
+  float f1 = 1.0f;
+  vec2 vf12 = vec2(1.0f, 2.0f);
+  vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
+  vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
+  int i1 = 1;
+  ivec2 vi12 = ivec2(1, 2);
+  ivec3 vi123 = ivec3(1, 2, 3);
+  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);
+  ivec2 offsets2d = ivec2(3, 4);
+  imageStore(x_20_1, vi12, vf1234);
+  return;
+}
+
+void tint_symbol() {
+  main_1();
+  return;
+}
+void main() {
+  tint_symbol();
+}
+
+
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl b/test/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl
index 79cb8f9..b259848 100644
--- a/test/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/PreserveIntCoords_NonArrayed_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_2.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D x_20_1;
+layout(r32f) uniform highp writeonly image1D x_20_1;
 
 void main_1() {
   float float_var = 0.0f;
@@ -35,6 +35,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:4: 'image1D' : Reserved word. 
+WARNING: 0:4: 'layout' : useless application of layout qualifier 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
index 1bc1de8..c6ae7dc 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D x_20_1;
+layout(rg32f) uniform highp writeonly image1D x_20_1;
 
 void main_1() {
   imageStore(x_20_1, int(1u), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -20,7 +20,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.glsl
index 985de6f..8eee853 100644
--- a/test/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.glsl
@@ -1,7 +1,5 @@
 SKIP: FAILED
 
-warning: integral user-defined fragment inputs must have a flat interpolation attribute
-warning: integral user-defined fragment inputs must have a flat interpolation attribute
 #version 310 es
 precision mediump float;
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.glsl
index 9871941..bf6ae72 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.glsl
@@ -6,7 +6,7 @@
 vec4 x_2 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 int x_3 = 0;
 int x_4 = 0;
-uniform highp writeonly iimage2D x_5_1;
+layout(r32i) uniform highp writeonly iimage2D x_5_1;
 
 void main_1() {
   x_4 = 1;
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
index a62880e..bf6ae72 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
@@ -1,16 +1,12 @@
 SKIP: FAILED
 
-vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl:27:64 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
-                                                               ^^^^^^^^^
-
 #version 310 es
 precision mediump float;
 
 vec4 x_2 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 int x_3 = 0;
 int x_4 = 0;
-uniform highp writeonly iimage2D x_5_1;
+layout(r32i) uniform highp writeonly iimage2D x_5_1;
 
 void main_1() {
   x_4 = 1;
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
index 92fc015..9d119bb 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
@@ -1,9 +1,5 @@
 SKIP: FAILED
 
-vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl:22:64 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
-                                                               ^^^^^^^^^
-
 #version 310 es
 precision mediump float;
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
index 2b3d258..905ff1d 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
@@ -1,9 +1,5 @@
 SKIP: FAILED
 
-vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl:22:64 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
-                                                               ^^^^^^^^^
-
 #version 310 es
 precision mediump float;
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
index 2e09134..d8925c5 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
@@ -4,10 +4,6 @@
 type RTArr = @stride(4) array<i32>;
               ^^^^^^
 
-vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl:33:64 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
-                                                               ^^^^^^^^^
-
 #version 310 es
 precision mediump float;
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
index 4bf4240..e0d5697 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
@@ -4,10 +4,6 @@
 type RTArr = @stride(4) array<i32>;
               ^^^^^^
 
-vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl:33:64 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
-                                                               ^^^^^^^^^
-
 #version 310 es
 precision mediump float;
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
index 464cc5a..bb321ca 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
@@ -1,9 +1,5 @@
 SKIP: FAILED
 
-vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl:37:64 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
-                                                               ^^^^^^^^^
-
 #version 310 es
 precision mediump float;