More GLSL fixes.

Remove register-and-space decoration.
Add "main" to GLSL keywords, to force renaming.
Output correct compute width decoration (not numthreads).
Remove static keyword.

Bug: tint:1218 tint:1219 tint:1220
Change-Id: I171f183690b6531c76218414e0d81f6ef5e22e6b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/66340
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/transform/renamer.cc b/src/transform/renamer.cc
index 6bf953f..9a89cf8 100644
--- a/src/transform/renamer.cc
+++ b/src/transform/renamer.cc
@@ -136,6 +136,7 @@
     "layout",
     "long",
     "lowp",
+    "main",
     "mat2",
     "mat2x2",
     "mat2x3",
diff --git a/src/writer/glsl/generator_impl.cc b/src/writer/glsl/generator_impl.cc
index 4bf06b2..55b5098 100644
--- a/src/writer/glsl/generator_impl.cc
+++ b/src/writer/glsl/generator_impl.cc
@@ -93,22 +93,6 @@
   }
 }
 
-// Helper for writing " : register(RX, spaceY)", where R is the register, X is
-// the binding point binding value, and Y is the binding point group value.
-struct RegisterAndSpace {
-  RegisterAndSpace(char r, ast::Variable::BindingPoint bp)
-      : reg(r), binding_point(bp) {}
-
-  char const reg;
-  ast::Variable::BindingPoint const binding_point;
-};
-
-std::ostream& operator<<(std::ostream& s, const RegisterAndSpace& rs) {
-  s << " : register(" << rs.reg << rs.binding_point.binding->value()
-    << ", space" << rs.binding_point.group->value() << ")";
-  return s;
-}
-
 }  // namespace
 
 GeneratorImpl::GeneratorImpl(const Program* program) : TextGenerator(program) {}
@@ -1591,16 +1575,13 @@
     return false;
   }
 
-  out << RegisterAndSpace(var->Access() == ast::Access::kRead ? 't' : 'u',
-                          decl->binding_point())
-      << ";";
+  out << ";";
 
   return true;
 }
 
 bool GeneratorImpl::EmitHandleVariable(const sem::Variable* var) {
   auto* decl = var->Declaration();
-  auto* unwrapped_type = var->Type()->UnwrapRef();
   auto out = line();
 
   auto name = builder_.Symbols().NameFor(decl->symbol());
@@ -1609,25 +1590,6 @@
     return false;
   }
 
-  const char* register_space = nullptr;
-
-  if (unwrapped_type->Is<sem::Texture>()) {
-    register_space = "t";
-    if (auto* storage_tex = unwrapped_type->As<sem::StorageTexture>()) {
-      if (storage_tex->access() != ast::Access::kRead) {
-        register_space = "u";
-      }
-    }
-  } else if (unwrapped_type->Is<sem::Sampler>()) {
-    register_space = "s";
-  }
-
-  if (register_space) {
-    auto bp = decl->binding_point();
-    out << " : register(" << register_space << bp.binding->value() << ", space"
-        << bp.group->value() << ")";
-  }
-
   out << ";";
   return true;
 }
@@ -1636,8 +1598,6 @@
   auto* decl = var->Declaration();
   auto out = line();
 
-  out << "static ";
-
   auto name = builder_.Symbols().NameFor(decl->symbol());
   auto* type = var->Type()->UnwrapRef();
   if (!EmitTypeAndName(out, type, var->StorageClass(), var->Access(), name)) {
@@ -1778,13 +1738,14 @@
   {
     auto out = line();
     if (func->pipeline_stage() == ast::PipelineStage::kCompute) {
-      // Emit the workgroup_size attribute.
+      // Emit the layout(local_size) attributes.
       auto wgsize = func_sem->workgroup_size();
-      out << "[numthreads(";
+      out << "layout(";
       for (int i = 0; i < 3; i++) {
         if (i > 0) {
           out << ", ";
         }
+        out << "local_size_" << (i == 0 ? "x" : i == 1 ? "y" : "z") << " = ";
 
         if (wgsize[i].overridable_const) {
           auto* global = builder_.Sem().Get<sem::GlobalVariable>(
@@ -1798,7 +1759,7 @@
           out << std::to_string(wgsize[i].value);
         }
       }
-      out << ")]" << std::endl;
+      out << ") in;" << std::endl;
     }
 
     out << func->return_type()->FriendlyName(builder_.Symbols());
@@ -2641,7 +2602,7 @@
     line() << "#endif";
     {
       auto out = line();
-      out << "static const ";
+      out << "const ";
       if (!EmitTypeAndName(out, type, sem->StorageClass(), sem->Access(),
                            builder_.Symbols().NameFor(var->symbol()))) {
         return false;
@@ -2650,7 +2611,7 @@
     }
   } else {
     auto out = line();
-    out << "static const ";
+    out << "const ";
     if (!EmitTypeAndName(out, type, sem->StorageClass(), sem->Access(),
                          builder_.Symbols().NameFor(var->symbol()))) {
       return false;
diff --git a/src/writer/glsl/generator_impl_function_test.cc b/src/writer/glsl/generator_impl_function_test.cc
index e0ed9d9..51c3cd6 100644
--- a/src/writer/glsl/generator_impl_function_test.cc
+++ b/src/writer/glsl/generator_impl_function_test.cc
@@ -537,7 +537,7 @@
 precision mediump float;
 
 
-Data coord : register(u0, space1);
+Data coord;
 
 void frag_main() {
   float v = coord.b;
@@ -586,7 +586,7 @@
 precision mediump float;
 
 
-Data coord : register(t0, space1);
+Data coord;
 
 void frag_main() {
   float v = coord.b;
@@ -631,7 +631,7 @@
 precision mediump float;
 
 
-Data coord : register(u0, space1);
+Data coord;
 
 void frag_main() {
   coord.b = 2.0f;
@@ -677,7 +677,7 @@
 precision mediump float;
 
 
-Data coord : register(u0, space1);
+Data coord;
 
 void frag_main() {
   coord.b = 2.0f;
@@ -782,7 +782,7 @@
 precision mediump float;
 
 
-S coord : register(u0, space1);
+S coord;
 
 float sub_func(float param) {
   return coord.x;
@@ -837,7 +837,7 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
-[numthreads(1, 1, 1)]
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   return;
 }
@@ -863,7 +863,7 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
-[numthreads(2, 4, 6)]
+layout(local_size_x = 2, local_size_y = 4, local_size_z = 6) in;
 void main() {
   return;
 }
@@ -892,11 +892,11 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
-static const int width = int(2);
-static const int height = int(3);
-static const int depth = int(4);
+const int width = int(2);
+const int height = int(3);
+const int depth = int(4);
 
-[numthreads(2, 3, 4)]
+layout(local_size_x = 2, local_size_y = 3, local_size_z = 4) in;
 void main() {
   return;
 }
@@ -928,17 +928,17 @@
 #ifndef WGSL_SPEC_CONSTANT_7
 #define WGSL_SPEC_CONSTANT_7 int(2)
 #endif
-static const int width = WGSL_SPEC_CONSTANT_7;
+const int width = WGSL_SPEC_CONSTANT_7;
 #ifndef WGSL_SPEC_CONSTANT_8
 #define WGSL_SPEC_CONSTANT_8 int(3)
 #endif
-static const int height = WGSL_SPEC_CONSTANT_8;
+const int height = WGSL_SPEC_CONSTANT_8;
 #ifndef WGSL_SPEC_CONSTANT_9
 #define WGSL_SPEC_CONSTANT_9 int(4)
 #endif
-static const int depth = WGSL_SPEC_CONSTANT_9;
+const int depth = WGSL_SPEC_CONSTANT_9;
 
-[numthreads(WGSL_SPEC_CONSTANT_7, WGSL_SPEC_CONSTANT_8, WGSL_SPEC_CONSTANT_9)]
+layout(local_size_x = WGSL_SPEC_CONSTANT_7, local_size_y = WGSL_SPEC_CONSTANT_8, local_size_z = WGSL_SPEC_CONSTANT_9) in;
 void main() {
   return;
 }
@@ -1047,9 +1047,9 @@
 precision mediump float;
 
 
-Data data : register(u0, space0);
+Data data;
 
-[numthreads(1, 1, 1)]
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void a() {
   float v = data.d;
   return;
@@ -1060,7 +1060,7 @@
 
 
 
-[numthreads(1, 1, 1)]
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void b() {
   float v = data.d;
   return;
diff --git a/src/writer/glsl/generator_impl_intrinsic_test.cc b/src/writer/glsl/generator_impl_intrinsic_test.cc
index 6d1c392..fc8183b 100644
--- a/src/writer/glsl/generator_impl_intrinsic_test.cc
+++ b/src/writer/glsl/generator_impl_intrinsic_test.cc
@@ -545,7 +545,7 @@
   GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"([numthreads(1, 1, 1)]
+  EXPECT_EQ(gen.result(), R"(layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   DeviceMemoryBarrierWithGroupSync();
   return;
@@ -564,7 +564,7 @@
   GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"([numthreads(1, 1, 1)]
+  EXPECT_EQ(gen.result(), R"(layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   GroupMemoryBarrierWithGroupSync();
   return;
@@ -590,7 +590,7 @@
   return ((a + b) * c);
 }
 
-[numthreads(1, 1, 1)]
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   f(1, 2, 3);
   return;
diff --git a/src/writer/glsl/generator_impl_member_accessor_test.cc b/src/writer/glsl/generator_impl_member_accessor_test.cc
index 808c211..9d19353 100644
--- a/src/writer/glsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/glsl/generator_impl_member_accessor_test.cc
@@ -139,9 +139,9 @@
   float mem;
 };
 
-static Data str = Data(0.0f);
+Data str = Data(0.0f);
 
-[numthreads(1, 1, 1)]
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void test_function() {
   float expr = str.mem;
   return;
@@ -297,14 +297,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   data.b = mat2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -340,14 +340,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   float x = data.a[2][1];
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -381,14 +381,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   int x = data.a[2];
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -423,14 +423,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   int x = data.a[((2 + 4) - 3)];
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -462,14 +462,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   data.a[2] = 2;
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -512,14 +512,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   vec3 x = data.c[2].b;
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -565,14 +565,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   vec2 x = data.c[2].b.xy;
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -618,14 +618,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   float x = data.c[2].b.g;
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -671,14 +671,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   float x = data.c[2].b[1];
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -720,14 +720,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   data.c[2].b = vec3(1.0f, 2.0f, 3.0f);
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -773,14 +773,14 @@
 precision mediump float;
 
 
-Data data : register(u0, space1);
+Data data;
 
-void main() {
+void tint_symbol() {
   data.c[2].b.y = 1.0f;
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
diff --git a/src/writer/glsl/generator_impl_module_constant_test.cc b/src/writer/glsl/generator_impl_module_constant_test.cc
index 85bcab9..dc6db0d 100644
--- a/src/writer/glsl/generator_impl_module_constant_test.cc
+++ b/src/writer/glsl/generator_impl_module_constant_test.cc
@@ -29,8 +29,7 @@
   GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.EmitProgramConstVariable(var)) << gen.error();
-  EXPECT_EQ(gen.result(),
-            "static const float pos[3] = float[3](1.0f, 2.0f, 3.0f);\n");
+  EXPECT_EQ(gen.result(), "const float pos[3] = float[3](1.0f, 2.0f, 3.0f);\n");
 }
 
 TEST_F(GlslGeneratorImplTest_ModuleConstant, Emit_SpecConstant) {
@@ -45,7 +44,7 @@
   EXPECT_EQ(gen.result(), R"(#ifndef WGSL_SPEC_CONSTANT_23
 #define WGSL_SPEC_CONSTANT_23 3.0f
 #endif
-static const float pos = WGSL_SPEC_CONSTANT_23;
+const float pos = WGSL_SPEC_CONSTANT_23;
 )");
 }
 
@@ -61,7 +60,7 @@
   EXPECT_EQ(gen.result(), R"(#ifndef WGSL_SPEC_CONSTANT_23
 #error spec constant required for constant id 23
 #endif
-static const float pos = WGSL_SPEC_CONSTANT_23;
+const float pos = WGSL_SPEC_CONSTANT_23;
 )");
 }
 
@@ -82,11 +81,11 @@
   EXPECT_EQ(gen.result(), R"(#ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 3.0f
 #endif
-static const float a = WGSL_SPEC_CONSTANT_0;
+const float a = WGSL_SPEC_CONSTANT_0;
 #ifndef WGSL_SPEC_CONSTANT_1
 #define WGSL_SPEC_CONSTANT_1 2.0f
 #endif
-static const float b = WGSL_SPEC_CONSTANT_1;
+const float b = WGSL_SPEC_CONSTANT_1;
 )");
 }
 
diff --git a/src/writer/glsl/generator_impl_sanitizer_test.cc b/src/writer/glsl/generator_impl_sanitizer_test.cc
index 5bf694a..d35ac15 100644
--- a/src/writer/glsl/generator_impl_sanitizer_test.cc
+++ b/src/writer/glsl/generator_impl_sanitizer_test.cc
@@ -52,7 +52,7 @@
 precision mediump float;
 
 
-my_struct b : register(t1, space2);
+my_struct b;
 
 void a_func() {
   uint tint_symbol_1 = 0u;
@@ -101,7 +101,7 @@
 precision mediump float;
 
 
-my_struct b : register(t1, space2);
+my_struct b;
 
 void a_func() {
   uint tint_symbol_1 = 0u;
@@ -152,7 +152,7 @@
 precision mediump float;
 
 
-my_struct b : register(t1, space2);
+my_struct b;
 
 void a_func() {
   uint tint_symbol_1 = 0u;
@@ -192,13 +192,13 @@
   auto* expect = R"(#version 310 es
 precision mediump float;
 
-void main() {
-  int tint_symbol[4] = int[4](1, 2, 3, 4);
-  int pos = tint_symbol[3];
+void tint_symbol() {
+  int tint_symbol_1[4] = int[4](1, 2, 3, 4);
+  int pos = tint_symbol_1[3];
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -239,13 +239,13 @@
   int c;
 };
 
-void main() {
-  S tint_symbol = S(1, vec3(2.0f, 3.0f, 4.0f), 4);
-  vec3 pos = tint_symbol.b;
+void tint_symbol() {
+  S tint_symbol_1 = S(1, vec3(2.0f, 3.0f, 4.0f), 4);
+  vec3 pos = tint_symbol_1.b;
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -280,13 +280,13 @@
   auto* expect = R"(#version 310 es
 precision mediump float;
 
-void main() {
+void tint_symbol() {
   int v = 0;
   int x = v;
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
@@ -331,13 +331,13 @@
   auto* expect = R"(#version 310 es
 precision mediump float;
 
-void main() {
+void tint_symbol() {
   mat4 m = mat4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
   float f = m[2][1];
   return;
 }
 void main() {
-  main();
+  tint_symbol();
 }
 
 
diff --git a/src/writer/glsl/generator_impl_type_test.cc b/src/writer/glsl/generator_impl_type_test.cc
index 0709dae..7bdb286 100644
--- a/src/writer/glsl/generator_impl_type_test.cc
+++ b/src/writer/glsl/generator_impl_type_test.cc
@@ -352,14 +352,12 @@
     GlslGeneratorImplTest_Type,
     GlslDepthTexturesTest,
     testing::Values(
-        GlslDepthTextureData{ast::TextureDimension::k2d,
-                             "Texture2D tex : register(t1, space2);"},
+        GlslDepthTextureData{ast::TextureDimension::k2d, "Texture2D tex;"},
         GlslDepthTextureData{ast::TextureDimension::k2dArray,
-                             "Texture2DArray tex : register(t1, space2);"},
-        GlslDepthTextureData{ast::TextureDimension::kCube,
-                             "TextureCube tex : register(t1, space2);"},
+                             "Texture2DArray tex;"},
+        GlslDepthTextureData{ast::TextureDimension::kCube, "TextureCube tex;"},
         GlslDepthTextureData{ast::TextureDimension::kCubeArray,
-                             "TextureCubeArray tex : register(t1, space2);"}));
+                             "TextureCubeArray tex;"}));
 
 using GlslDepthMultisampledTexturesTest = TestHelper;
 TEST_F(GlslDepthMultisampledTexturesTest, Emit) {
@@ -377,8 +375,7 @@
   GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_THAT(gen.result(),
-              HasSubstr("Texture2DMS<float4> tex : register(t1, space2);"));
+  EXPECT_THAT(gen.result(), HasSubstr("Texture2DMS<float4> tex;"));
 }
 
 enum class TextureDataType { F32, U32, I32 };
@@ -424,100 +421,99 @@
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_THAT(gen.result(), HasSubstr(params.result));
 }
-INSTANTIATE_TEST_SUITE_P(
-    GlslGeneratorImplTest_Type,
-    GlslSampledTexturesTest,
-    testing::Values(
-        GlslSampledTextureData{
-            ast::TextureDimension::k1d,
-            TextureDataType::F32,
-            "Texture1D<float4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k2d,
-            TextureDataType::F32,
-            "Texture2D<float4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k2dArray,
-            TextureDataType::F32,
-            "Texture2DArray<float4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k3d,
-            TextureDataType::F32,
-            "Texture3D<float4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::kCube,
-            TextureDataType::F32,
-            "TextureCube<float4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::kCubeArray,
-            TextureDataType::F32,
-            "TextureCubeArray<float4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k1d,
-            TextureDataType::U32,
-            "Texture1D<uint4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k2d,
-            TextureDataType::U32,
-            "Texture2D<uint4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k2dArray,
-            TextureDataType::U32,
-            "Texture2DArray<uint4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k3d,
-            TextureDataType::U32,
-            "Texture3D<uint4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::kCube,
-            TextureDataType::U32,
-            "TextureCube<uint4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::kCubeArray,
-            TextureDataType::U32,
-            "TextureCubeArray<uint4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k1d,
-            TextureDataType::I32,
-            "Texture1D<int4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k2d,
-            TextureDataType::I32,
-            "Texture2D<int4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k2dArray,
-            TextureDataType::I32,
-            "Texture2DArray<int4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::k3d,
-            TextureDataType::I32,
-            "Texture3D<int4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::kCube,
-            TextureDataType::I32,
-            "TextureCube<int4> tex : register(t1, space2);",
-        },
-        GlslSampledTextureData{
-            ast::TextureDimension::kCubeArray,
-            TextureDataType::I32,
-            "TextureCubeArray<int4> tex : register(t1, space2);",
-        }));
+INSTANTIATE_TEST_SUITE_P(GlslGeneratorImplTest_Type,
+                         GlslSampledTexturesTest,
+                         testing::Values(
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k1d,
+                                 TextureDataType::F32,
+                                 "Texture1D<float4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k2d,
+                                 TextureDataType::F32,
+                                 "Texture2D<float4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k2dArray,
+                                 TextureDataType::F32,
+                                 "Texture2DArray<float4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k3d,
+                                 TextureDataType::F32,
+                                 "Texture3D<float4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::kCube,
+                                 TextureDataType::F32,
+                                 "TextureCube<float4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::kCubeArray,
+                                 TextureDataType::F32,
+                                 "TextureCubeArray<float4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k1d,
+                                 TextureDataType::U32,
+                                 "Texture1D<uint4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k2d,
+                                 TextureDataType::U32,
+                                 "Texture2D<uint4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k2dArray,
+                                 TextureDataType::U32,
+                                 "Texture2DArray<uint4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k3d,
+                                 TextureDataType::U32,
+                                 "Texture3D<uint4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::kCube,
+                                 TextureDataType::U32,
+                                 "TextureCube<uint4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::kCubeArray,
+                                 TextureDataType::U32,
+                                 "TextureCubeArray<uint4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k1d,
+                                 TextureDataType::I32,
+                                 "Texture1D<int4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k2d,
+                                 TextureDataType::I32,
+                                 "Texture2D<int4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k2dArray,
+                                 TextureDataType::I32,
+                                 "Texture2DArray<int4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::k3d,
+                                 TextureDataType::I32,
+                                 "Texture3D<int4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::kCube,
+                                 TextureDataType::I32,
+                                 "TextureCube<int4> tex;",
+                             },
+                             GlslSampledTextureData{
+                                 ast::TextureDimension::kCubeArray,
+                                 TextureDataType::I32,
+                                 "TextureCubeArray<int4> tex;",
+                             }));
 
 TEST_F(GlslGeneratorImplTest_Type, EmitMultisampledTexture) {
   auto* f32 = create<sem::F32>();
@@ -564,46 +560,45 @@
 INSTANTIATE_TEST_SUITE_P(
     GlslGeneratorImplTest_Type,
     GlslStorageTexturesTest,
-    testing::Values(
-        GlslStorageTextureData{
-            ast::TextureDimension::k1d, ast::ImageFormat::kRgba8Unorm,
-            "RWTexture1D<float4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k2d, ast::ImageFormat::kRgba16Float,
-            "RWTexture2D<float4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k2dArray, ast::ImageFormat::kR32Float,
-            "RWTexture2DArray<float4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k3d, ast::ImageFormat::kRg32Float,
-            "RWTexture3D<float4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k1d, ast::ImageFormat::kRgba32Float,
-            "RWTexture1D<float4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k2d, ast::ImageFormat::kRgba16Uint,
-            "RWTexture2D<uint4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k2dArray, ast::ImageFormat::kR32Uint,
-            "RWTexture2DArray<uint4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k3d, ast::ImageFormat::kRg32Uint,
-            "RWTexture3D<uint4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k1d, ast::ImageFormat::kRgba32Uint,
-            "RWTexture1D<uint4> tex : register(u1, space2);"},
-        GlslStorageTextureData{ast::TextureDimension::k2d,
-                               ast::ImageFormat::kRgba16Sint,
-                               "RWTexture2D<int4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k2dArray, ast::ImageFormat::kR32Sint,
-            "RWTexture2DArray<int4> tex : register(u1, space2);"},
-        GlslStorageTextureData{ast::TextureDimension::k3d,
-                               ast::ImageFormat::kRg32Sint,
-                               "RWTexture3D<int4> tex : register(u1, space2);"},
-        GlslStorageTextureData{
-            ast::TextureDimension::k1d, ast::ImageFormat::kRgba32Sint,
-            "RWTexture1D<int4> tex : register(u1, space2);"}));
+    testing::Values(GlslStorageTextureData{ast::TextureDimension::k1d,
+                                           ast::ImageFormat::kRgba8Unorm,
+                                           "RWTexture1D<float4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k2d,
+                                           ast::ImageFormat::kRgba16Float,
+                                           "RWTexture2D<float4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k2dArray,
+                                           ast::ImageFormat::kR32Float,
+                                           "RWTexture2DArray<float4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k3d,
+                                           ast::ImageFormat::kRg32Float,
+                                           "RWTexture3D<float4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k1d,
+                                           ast::ImageFormat::kRgba32Float,
+                                           "RWTexture1D<float4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k2d,
+                                           ast::ImageFormat::kRgba16Uint,
+                                           "RWTexture2D<uint4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k2dArray,
+                                           ast::ImageFormat::kR32Uint,
+                                           "RWTexture2DArray<uint4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k3d,
+                                           ast::ImageFormat::kRg32Uint,
+                                           "RWTexture3D<uint4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k1d,
+                                           ast::ImageFormat::kRgba32Uint,
+                                           "RWTexture1D<uint4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k2d,
+                                           ast::ImageFormat::kRgba16Sint,
+                                           "RWTexture2D<int4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k2dArray,
+                                           ast::ImageFormat::kR32Sint,
+                                           "RWTexture2DArray<int4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k3d,
+                                           ast::ImageFormat::kRg32Sint,
+                                           "RWTexture3D<int4> tex;"},
+                    GlslStorageTextureData{ast::TextureDimension::k1d,
+                                           ast::ImageFormat::kRgba32Sint,
+                                           "RWTexture1D<int4> tex;"}));
 
 }  // namespace
 }  // namespace glsl
diff --git a/src/writer/glsl/generator_impl_variable_decl_statement_test.cc b/src/writer/glsl/generator_impl_variable_decl_statement_test.cc
index 3db868b..8d5cf90 100644
--- a/src/writer/glsl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/glsl/generator_impl_variable_decl_statement_test.cc
@@ -76,7 +76,7 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_THAT(gen.result(), HasSubstr("  static float a = 0.0f;\n"));
+  EXPECT_THAT(gen.result(), HasSubstr("  float a = 0.0f;\n"));
 }
 
 TEST_F(GlslGeneratorImplTest_VariableDecl,