diff --git a/src/ast/storage_texture.cc b/src/ast/storage_texture.cc
index b074f5d..82105ce 100644
--- a/src/ast/storage_texture.cc
+++ b/src/ast/storage_texture.cc
@@ -31,39 +31,6 @@
     case TexelFormat::kNone:
       out << "none";
       break;
-    case TexelFormat::kR8Unorm:
-      out << "r8unorm";
-      break;
-    case TexelFormat::kR8Snorm:
-      out << "r8snorm";
-      break;
-    case TexelFormat::kR8Uint:
-      out << "r8uint";
-      break;
-    case TexelFormat::kR8Sint:
-      out << "r8sint";
-      break;
-    case TexelFormat::kR16Uint:
-      out << "r16uint";
-      break;
-    case TexelFormat::kR16Sint:
-      out << "r16sint";
-      break;
-    case TexelFormat::kR16Float:
-      out << "r16float";
-      break;
-    case TexelFormat::kRg8Unorm:
-      out << "rg8unorm";
-      break;
-    case TexelFormat::kRg8Snorm:
-      out << "rg8snorm";
-      break;
-    case TexelFormat::kRg8Uint:
-      out << "rg8uint";
-      break;
-    case TexelFormat::kRg8Sint:
-      out << "rg8sint";
-      break;
     case TexelFormat::kR32Uint:
       out << "r32uint";
       break;
@@ -73,21 +40,9 @@
     case TexelFormat::kR32Float:
       out << "r32float";
       break;
-    case TexelFormat::kRg16Uint:
-      out << "rg16uint";
-      break;
-    case TexelFormat::kRg16Sint:
-      out << "rg16sint";
-      break;
-    case TexelFormat::kRg16Float:
-      out << "rg16float";
-      break;
     case TexelFormat::kRgba8Unorm:
       out << "rgba8unorm";
       break;
-    case TexelFormat::kRgba8UnormSrgb:
-      out << "rgba8unorm_srgb";
-      break;
     case TexelFormat::kRgba8Snorm:
       out << "rgba8snorm";
       break;
@@ -97,18 +52,6 @@
     case TexelFormat::kRgba8Sint:
       out << "rgba8sint";
       break;
-    case TexelFormat::kBgra8Unorm:
-      out << "bgra8unorm";
-      break;
-    case TexelFormat::kBgra8UnormSrgb:
-      out << "bgra8unorm_srgb";
-      break;
-    case TexelFormat::kRgb10A2Unorm:
-      out << "rgb10a2unorm";
-      break;
-    case TexelFormat::kRg11B10Float:
-      out << "rg11b10float";
-      break;
     case TexelFormat::kRg32Uint:
       out << "rg32uint";
       break;
@@ -167,11 +110,7 @@
 
 Type* StorageTexture::SubtypeFor(TexelFormat format, ProgramBuilder& builder) {
   switch (format) {
-    case TexelFormat::kR8Uint:
-    case TexelFormat::kR16Uint:
-    case TexelFormat::kRg8Uint:
     case TexelFormat::kR32Uint:
-    case TexelFormat::kRg16Uint:
     case TexelFormat::kRgba8Uint:
     case TexelFormat::kRg32Uint:
     case TexelFormat::kRgba16Uint:
@@ -179,11 +118,7 @@
       return builder.create<U32>();
     }
 
-    case TexelFormat::kR8Sint:
-    case TexelFormat::kR16Sint:
-    case TexelFormat::kRg8Sint:
     case TexelFormat::kR32Sint:
-    case TexelFormat::kRg16Sint:
     case TexelFormat::kRgba8Sint:
     case TexelFormat::kRg32Sint:
     case TexelFormat::kRgba16Sint:
@@ -191,20 +126,9 @@
       return builder.create<I32>();
     }
 
-    case TexelFormat::kR8Unorm:
-    case TexelFormat::kRg8Unorm:
     case TexelFormat::kRgba8Unorm:
-    case TexelFormat::kRgba8UnormSrgb:
-    case TexelFormat::kBgra8Unorm:
-    case TexelFormat::kBgra8UnormSrgb:
-    case TexelFormat::kRgb10A2Unorm:
-    case TexelFormat::kR8Snorm:
-    case TexelFormat::kRg8Snorm:
     case TexelFormat::kRgba8Snorm:
-    case TexelFormat::kR16Float:
     case TexelFormat::kR32Float:
-    case TexelFormat::kRg16Float:
-    case TexelFormat::kRg11B10Float:
     case TexelFormat::kRg32Float:
     case TexelFormat::kRgba16Float:
     case TexelFormat::kRgba32Float: {
diff --git a/src/ast/storage_texture.h b/src/ast/storage_texture.h
index 46cd2c8..30078ca 100644
--- a/src/ast/storage_texture.h
+++ b/src/ast/storage_texture.h
@@ -26,38 +26,19 @@
 /// The texel format in the storage texture
 enum class TexelFormat {
   kNone = -1,
-  kR8Unorm,
-  kR8Snorm,
-  kR8Uint,
-  kR8Sint,
-  kR16Uint,
-  kR16Sint,
-  kR16Float,
-  kRg8Unorm,
-  kRg8Snorm,
-  kRg8Uint,
-  kRg8Sint,
-  kR32Uint,
-  kR32Sint,
-  kR32Float,
-  kRg16Uint,
-  kRg16Sint,
-  kRg16Float,
   kRgba8Unorm,
-  kRgba8UnormSrgb,
   kRgba8Snorm,
   kRgba8Uint,
   kRgba8Sint,
-  kBgra8Unorm,
-  kBgra8UnormSrgb,
-  kRgb10A2Unorm,
-  kRg11B10Float,
-  kRg32Uint,
-  kRg32Sint,
-  kRg32Float,
   kRgba16Uint,
   kRgba16Sint,
   kRgba16Float,
+  kR32Uint,
+  kR32Sint,
+  kR32Float,
+  kRg32Uint,
+  kRg32Sint,
+  kRg32Float,
   kRgba32Uint,
   kRgba32Sint,
   kRgba32Float,
diff --git a/src/inspector/resource_binding.cc b/src/inspector/resource_binding.cc
index e0862ba..4589ea0 100644
--- a/src/inspector/resource_binding.cc
+++ b/src/inspector/resource_binding.cc
@@ -74,58 +74,20 @@
 ResourceBinding::TexelFormat TypeTexelFormatToResourceBindingTexelFormat(
     const ast::TexelFormat& image_format) {
   switch (image_format) {
-    case ast::TexelFormat::kR8Unorm:
-      return ResourceBinding::TexelFormat::kR8Unorm;
-    case ast::TexelFormat::kR8Snorm:
-      return ResourceBinding::TexelFormat::kR8Snorm;
-    case ast::TexelFormat::kR8Uint:
-      return ResourceBinding::TexelFormat::kR8Uint;
-    case ast::TexelFormat::kR8Sint:
-      return ResourceBinding::TexelFormat::kR8Sint;
-    case ast::TexelFormat::kR16Uint:
-      return ResourceBinding::TexelFormat::kR16Uint;
-    case ast::TexelFormat::kR16Sint:
-      return ResourceBinding::TexelFormat::kR16Sint;
-    case ast::TexelFormat::kR16Float:
-      return ResourceBinding::TexelFormat::kR16Float;
-    case ast::TexelFormat::kRg8Unorm:
-      return ResourceBinding::TexelFormat::kRg8Unorm;
-    case ast::TexelFormat::kRg8Snorm:
-      return ResourceBinding::TexelFormat::kRg8Snorm;
-    case ast::TexelFormat::kRg8Uint:
-      return ResourceBinding::TexelFormat::kRg8Uint;
-    case ast::TexelFormat::kRg8Sint:
-      return ResourceBinding::TexelFormat::kRg8Sint;
     case ast::TexelFormat::kR32Uint:
       return ResourceBinding::TexelFormat::kR32Uint;
     case ast::TexelFormat::kR32Sint:
       return ResourceBinding::TexelFormat::kR32Sint;
     case ast::TexelFormat::kR32Float:
       return ResourceBinding::TexelFormat::kR32Float;
-    case ast::TexelFormat::kRg16Uint:
-      return ResourceBinding::TexelFormat::kRg16Uint;
-    case ast::TexelFormat::kRg16Sint:
-      return ResourceBinding::TexelFormat::kRg16Sint;
-    case ast::TexelFormat::kRg16Float:
-      return ResourceBinding::TexelFormat::kRg16Float;
     case ast::TexelFormat::kRgba8Unorm:
       return ResourceBinding::TexelFormat::kRgba8Unorm;
-    case ast::TexelFormat::kRgba8UnormSrgb:
-      return ResourceBinding::TexelFormat::kRgba8UnormSrgb;
     case ast::TexelFormat::kRgba8Snorm:
       return ResourceBinding::TexelFormat::kRgba8Snorm;
     case ast::TexelFormat::kRgba8Uint:
       return ResourceBinding::TexelFormat::kRgba8Uint;
     case ast::TexelFormat::kRgba8Sint:
       return ResourceBinding::TexelFormat::kRgba8Sint;
-    case ast::TexelFormat::kBgra8Unorm:
-      return ResourceBinding::TexelFormat::kBgra8Unorm;
-    case ast::TexelFormat::kBgra8UnormSrgb:
-      return ResourceBinding::TexelFormat::kBgra8UnormSrgb;
-    case ast::TexelFormat::kRgb10A2Unorm:
-      return ResourceBinding::TexelFormat::kRgb10A2Unorm;
-    case ast::TexelFormat::kRg11B10Float:
-      return ResourceBinding::TexelFormat::kRg11B10Float;
     case ast::TexelFormat::kRg32Uint:
       return ResourceBinding::TexelFormat::kRg32Uint;
     case ast::TexelFormat::kRg32Sint:
diff --git a/src/inspector/resource_binding.h b/src/inspector/resource_binding.h
index cb84917..8f62cac 100644
--- a/src/inspector/resource_binding.h
+++ b/src/inspector/resource_binding.h
@@ -50,6 +50,26 @@
   /// Enumerator of texel image formats
   enum class TexelFormat {
     kNone = -1,
+
+    kRgba8Unorm,
+    kRgba8Snorm,
+    kRgba8Uint,
+    kRgba8Sint,
+    kRgba16Uint,
+    kRgba16Sint,
+    kRgba16Float,
+    kR32Uint,
+    kR32Sint,
+    kR32Float,
+    kRg32Uint,
+    kRg32Sint,
+    kRg32Float,
+    kRgba32Uint,
+    kRgba32Sint,
+    kRgba32Float,
+
+    // [DEPRECATED]
+    // The below are all deprecated, and will be removed.
     kR8Unorm,
     kR8Snorm,
     kR8Uint,
@@ -61,30 +81,14 @@
     kRg8Snorm,
     kRg8Uint,
     kRg8Sint,
-    kR32Uint,
-    kR32Sint,
-    kR32Float,
     kRg16Uint,
     kRg16Sint,
     kRg16Float,
-    kRgba8Unorm,
     kRgba8UnormSrgb,
-    kRgba8Snorm,
-    kRgba8Uint,
-    kRgba8Sint,
     kBgra8Unorm,
     kBgra8UnormSrgb,
     kRgb10A2Unorm,
     kRg11B10Float,
-    kRg32Uint,
-    kRg32Sint,
-    kRg32Float,
-    kRgba16Uint,
-    kRgba16Sint,
-    kRgba16Float,
-    kRgba32Uint,
-    kRgba32Sint,
-    kRgba32Float,
   };
 
   /// Renamed field [DEPRECATED]
diff --git a/src/reader/spirv/parser_impl.cc b/src/reader/spirv/parser_impl.cc
index 8a5f48b..287b0a8 100644
--- a/src/reader/spirv/parser_impl.cc
+++ b/src/reader/spirv/parser_impl.cc
@@ -2528,42 +2528,23 @@
 
 const Type* ParserImpl::GetComponentTypeForFormat(ast::TexelFormat format) {
   switch (format) {
-    case ast::TexelFormat::kR8Uint:
-    case ast::TexelFormat::kR16Uint:
-    case ast::TexelFormat::kRg8Uint:
     case ast::TexelFormat::kR32Uint:
-    case ast::TexelFormat::kRg16Uint:
     case ast::TexelFormat::kRgba8Uint:
     case ast::TexelFormat::kRg32Uint:
     case ast::TexelFormat::kRgba16Uint:
     case ast::TexelFormat::kRgba32Uint:
       return ty_.U32();
 
-    case ast::TexelFormat::kR8Sint:
-    case ast::TexelFormat::kR16Sint:
-    case ast::TexelFormat::kRg8Sint:
     case ast::TexelFormat::kR32Sint:
-    case ast::TexelFormat::kRg16Sint:
     case ast::TexelFormat::kRgba8Sint:
     case ast::TexelFormat::kRg32Sint:
     case ast::TexelFormat::kRgba16Sint:
     case ast::TexelFormat::kRgba32Sint:
       return ty_.I32();
 
-    case ast::TexelFormat::kR8Unorm:
-    case ast::TexelFormat::kRg8Unorm:
     case ast::TexelFormat::kRgba8Unorm:
-    case ast::TexelFormat::kRgba8UnormSrgb:
-    case ast::TexelFormat::kBgra8Unorm:
-    case ast::TexelFormat::kBgra8UnormSrgb:
-    case ast::TexelFormat::kRgb10A2Unorm:
-    case ast::TexelFormat::kR8Snorm:
-    case ast::TexelFormat::kRg8Snorm:
     case ast::TexelFormat::kRgba8Snorm:
-    case ast::TexelFormat::kR16Float:
     case ast::TexelFormat::kR32Float:
-    case ast::TexelFormat::kRg16Float:
-    case ast::TexelFormat::kRg11B10Float:
     case ast::TexelFormat::kRg32Float:
     case ast::TexelFormat::kRgba16Float:
     case ast::TexelFormat::kRgba32Float:
@@ -2577,36 +2558,18 @@
 
 unsigned ParserImpl::GetChannelCountForFormat(ast::TexelFormat format) {
   switch (format) {
-    case ast::TexelFormat::kR16Float:
-    case ast::TexelFormat::kR16Sint:
-    case ast::TexelFormat::kR16Uint:
     case ast::TexelFormat::kR32Float:
     case ast::TexelFormat::kR32Sint:
     case ast::TexelFormat::kR32Uint:
-    case ast::TexelFormat::kR8Sint:
-    case ast::TexelFormat::kR8Snorm:
-    case ast::TexelFormat::kR8Uint:
-    case ast::TexelFormat::kR8Unorm:
       // One channel
       return 1;
 
-    case ast::TexelFormat::kRg11B10Float:
-    case ast::TexelFormat::kRg16Float:
-    case ast::TexelFormat::kRg16Sint:
-    case ast::TexelFormat::kRg16Uint:
     case ast::TexelFormat::kRg32Float:
     case ast::TexelFormat::kRg32Sint:
     case ast::TexelFormat::kRg32Uint:
-    case ast::TexelFormat::kRg8Sint:
-    case ast::TexelFormat::kRg8Snorm:
-    case ast::TexelFormat::kRg8Uint:
-    case ast::TexelFormat::kRg8Unorm:
       // Two channels
       return 2;
 
-    case ast::TexelFormat::kBgra8Unorm:
-    case ast::TexelFormat::kBgra8UnormSrgb:
-    case ast::TexelFormat::kRgb10A2Unorm:
     case ast::TexelFormat::kRgba16Float:
     case ast::TexelFormat::kRgba16Sint:
     case ast::TexelFormat::kRgba16Uint:
@@ -2617,7 +2580,6 @@
     case ast::TexelFormat::kRgba8Snorm:
     case ast::TexelFormat::kRgba8Uint:
     case ast::TexelFormat::kRgba8Unorm:
-    case ast::TexelFormat::kRgba8UnormSrgb:
       // Four channels
       return 4;
 
diff --git a/src/reader/spirv/parser_type_test.cc b/src/reader/spirv/parser_type_test.cc
index c683cdd..dde9a01 100644
--- a/src/reader/spirv/parser_type_test.cc
+++ b/src/reader/spirv/parser_type_test.cc
@@ -46,9 +46,9 @@
   EXPECT_EQ(ty.SampledTexture(ast::TextureDimension::k2d, ty.I32()),
             ty.SampledTexture(ast::TextureDimension::k2d, ty.I32()));
   EXPECT_EQ(ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::TexelFormat::kR16Sint, ast::Access::kRead),
+                              ast::TexelFormat::kR32Uint, ast::Access::kRead),
             ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::TexelFormat::kR16Sint, ast::Access::kRead));
+                              ast::TexelFormat::kR32Uint, ast::Access::kRead));
 }
 
 TEST(SpvParserTypeTest, DifferentArgumentsGivesDifferentPointer) {
@@ -83,17 +83,17 @@
   EXPECT_NE(ty.SampledTexture(ast::TextureDimension::k2d, ty.I32()),
             ty.SampledTexture(ast::TextureDimension::k2d, ty.U32()));
   EXPECT_NE(ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::TexelFormat::kR16Sint, ast::Access::kRead),
+                              ast::TexelFormat::kR32Uint, ast::Access::kRead),
             ty.StorageTexture(ast::TextureDimension::k3d,
-                              ast::TexelFormat::kR16Sint, ast::Access::kRead));
+                              ast::TexelFormat::kR32Uint, ast::Access::kRead));
   EXPECT_NE(ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::TexelFormat::kR16Sint, ast::Access::kRead),
+                              ast::TexelFormat::kR32Uint, ast::Access::kRead),
             ty.StorageTexture(ast::TextureDimension::k2d,
                               ast::TexelFormat::kR32Sint, ast::Access::kRead));
   EXPECT_NE(ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::TexelFormat::kR16Sint, ast::Access::kRead),
+                              ast::TexelFormat::kR32Uint, ast::Access::kRead),
             ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::TexelFormat::kR16Sint, ast::Access::kWrite));
+                              ast::TexelFormat::kR32Uint, ast::Access::kWrite));
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index adb259b..719e1b9 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -745,139 +745,30 @@
   return Failure::kNoMatch;
 }
 
-// image_storage_type
-//  : R8UNORM
-//  | R8SNORM
-//  | R8UINT
-//  | R8SINT
-//  | R16UINT
-//  | R16SINT
-//  | R16FLOAT
-//  | RG8UNORM
-//  | RG8SNORM
-//  | RG8UINT
-//  | RG8SINT
-//  | R32UINT
-//  | R32SINT
-//  | R32FLOAT
-//  | RG16UINT
-//  | RG16SINT
-//  | RG16FLOAT
-//  | RGBA8UNORM
-/// | RGBA8UNORM-SRGB
-//  | RGBA8SNORM
-//  | RGBA8UINT
-//  | RGBA8SINT
-//  | BGRA8UNORM
-//  | BGRA8UNORM-SRGB
-//  | RGB10A2UNORM
-//  | RG11B10FLOAT
-//  | RG32UINT
-//  | RG32SINT
-//  | RG32FLOAT
-//  | RGBA16UINT
-//  | RGBA16SINT
-//  | RGBA16FLOAT
-//  | RGBA32UINT
-//  | RGBA32SINT
-//  | RGBA32FLOAT
+// texel_format
+//  : 'rgba8unorm'
+//  | 'rgba8snorm'
+//  | 'rgba8uint'
+//  | 'rgba8sint'
+//  | 'rgba16uint'
+//  | 'rgba16sint'
+//  | 'rgba16float'
+//  | 'r32uint'
+//  | 'r32sint'
+//  | 'r32float'
+//  | 'rg32uint'
+//  | 'rg32sint'
+//  | 'rg32float'
+//  | 'rgba32uint'
+//  | 'rgba32sint'
+//  | 'rgba32float'
 Expect<ast::TexelFormat> ParserImpl::expect_texel_format(
     const std::string& use) {
   auto tok = next();
   if (tok.IsIdentifier()) {
     auto s = tok.to_str();
-    if (s == "bgra8unorm") {
-      return ast::TexelFormat::kBgra8Unorm;
-    }
-    if (s == "bgra8unorm_srgb") {
-      return ast::TexelFormat::kBgra8UnormSrgb;
-    }
-    if (s == "r16float") {
-      return ast::TexelFormat::kR16Float;
-    }
-    if (s == "r16sint") {
-      return ast::TexelFormat::kR16Sint;
-    }
-    if (s == "r16uint") {
-      return ast::TexelFormat::kR16Uint;
-    }
-    if (s == "r32float") {
-      return ast::TexelFormat::kR32Float;
-    }
-    if (s == "r32sint") {
-      return ast::TexelFormat::kR32Sint;
-    }
-    if (s == "r32uint") {
-      return ast::TexelFormat::kR32Uint;
-    }
-    if (s == "r8sint") {
-      return ast::TexelFormat::kR8Sint;
-    }
-    if (s == "r8snorm") {
-      return ast::TexelFormat::kR8Snorm;
-    }
-    if (s == "r8uint") {
-      return ast::TexelFormat::kR8Uint;
-    }
-    if (s == "r8unorm") {
-      return ast::TexelFormat::kR8Unorm;
-    }
-    if (s == "rg11b10float") {
-      return ast::TexelFormat::kRg11B10Float;
-    }
-    if (s == "rg16float") {
-      return ast::TexelFormat::kRg16Float;
-    }
-    if (s == "rg16sint") {
-      return ast::TexelFormat::kRg16Sint;
-    }
-    if (s == "rg16uint") {
-      return ast::TexelFormat::kRg16Uint;
-    }
-    if (s == "rg32float") {
-      return ast::TexelFormat::kRg32Float;
-    }
-    if (s == "rg32sint") {
-      return ast::TexelFormat::kRg32Sint;
-    }
-    if (s == "rg32uint") {
-      return ast::TexelFormat::kRg32Uint;
-    }
-    if (s == "rg8sint") {
-      return ast::TexelFormat::kRg8Sint;
-    }
-    if (s == "rg8snorm") {
-      return ast::TexelFormat::kRg8Snorm;
-    }
-    if (s == "rg8uint") {
-      return ast::TexelFormat::kRg8Uint;
-    }
-    if (s == "rg8unorm") {
-      return ast::TexelFormat::kRg8Unorm;
-    }
-    if (s == "rgb10a2unorm") {
-      return ast::TexelFormat::kRgb10A2Unorm;
-    }
-    if (s == "rgba16float") {
-      return ast::TexelFormat::kRgba16Float;
-    }
-    if (s == "rgba16sint") {
-      return ast::TexelFormat::kRgba16Sint;
-    }
-    if (s == "rgba16uint") {
-      return ast::TexelFormat::kRgba16Uint;
-    }
-    if (s == "rgba32float") {
-      return ast::TexelFormat::kRgba32Float;
-    }
-    if (s == "rgba32sint") {
-      return ast::TexelFormat::kRgba32Sint;
-    }
-    if (s == "rgba32uint") {
-      return ast::TexelFormat::kRgba32Uint;
-    }
-    if (s == "rgba8sint") {
-      return ast::TexelFormat::kRgba8Sint;
+    if (s == "rgba8unorm") {
+      return ast::TexelFormat::kRgba8Unorm;
     }
     if (s == "rgba8snorm") {
       return ast::TexelFormat::kRgba8Snorm;
@@ -885,11 +776,44 @@
     if (s == "rgba8uint") {
       return ast::TexelFormat::kRgba8Uint;
     }
-    if (s == "rgba8unorm") {
-      return ast::TexelFormat::kRgba8Unorm;
+    if (s == "rgba8sint") {
+      return ast::TexelFormat::kRgba8Sint;
     }
-    if (s == "rgba8unorm_srgb") {
-      return ast::TexelFormat::kRgba8UnormSrgb;
+    if (s == "rgba16uint") {
+      return ast::TexelFormat::kRgba16Uint;
+    }
+    if (s == "rgba16sint") {
+      return ast::TexelFormat::kRgba16Sint;
+    }
+    if (s == "rgba16float") {
+      return ast::TexelFormat::kRgba16Float;
+    }
+    if (s == "r32uint") {
+      return ast::TexelFormat::kR32Uint;
+    }
+    if (s == "r32sint") {
+      return ast::TexelFormat::kR32Sint;
+    }
+    if (s == "r32float") {
+      return ast::TexelFormat::kR32Float;
+    }
+    if (s == "rg32uint") {
+      return ast::TexelFormat::kRg32Uint;
+    }
+    if (s == "rg32sint") {
+      return ast::TexelFormat::kRg32Sint;
+    }
+    if (s == "rg32float") {
+      return ast::TexelFormat::kRg32Float;
+    }
+    if (s == "rgba32uint") {
+      return ast::TexelFormat::kRgba32Uint;
+    }
+    if (s == "rgba32sint") {
+      return ast::TexelFormat::kRgba32Sint;
+    }
+    if (s == "rgba32float") {
+      return ast::TexelFormat::kRgba32Float;
     }
   }
   return add_error(tok.source(), "invalid format", use);
diff --git a/src/reader/wgsl/parser_impl_error_msg_test.cc b/src/reader/wgsl/parser_impl_error_msg_test.cc
index 7c1d391..6d1ff74 100644
--- a/src/reader/wgsl/parser_impl_error_msg_test.cc
+++ b/src/reader/wgsl/parser_impl_error_msg_test.cc
@@ -585,10 +585,10 @@
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStorageTextureMissingGreaterThan) {
-  EXPECT("var x : texture_storage_2d<r8uint, read;",
-         "test.wgsl:1:40 error: expected '>' for storage texture type\n"
-         "var x : texture_storage_2d<r8uint, read;\n"
-         "                                       ^\n");
+  EXPECT("var x : texture_storage_2d<r32uint, read;",
+         "test.wgsl:1:41 error: expected '>' for storage texture type\n"
+         "var x : texture_storage_2d<r32uint, read;\n"
+         "                                        ^\n");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStorageTextureMissingSubtype) {
diff --git a/src/reader/wgsl/parser_impl_texel_format_test.cc b/src/reader/wgsl/parser_impl_texel_format_test.cc
index 8a0d5a7..86955ae 100644
--- a/src/reader/wgsl/parser_impl_texel_format_test.cc
+++ b/src/reader/wgsl/parser_impl_texel_format_test.cc
@@ -27,94 +27,6 @@
   EXPECT_EQ(p->error(), "1:1: invalid format for test");
 }
 
-TEST_F(ParserImplTest, ImageStorageType_R8Unorm) {
-  auto p = parser("r8unorm");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kR8Unorm);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_R8Snorm) {
-  auto p = parser("r8snorm");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kR8Snorm);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_R8Uint) {
-  auto p = parser("r8uint");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kR8Uint);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_R8Sint) {
-  auto p = parser("r8sint");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kR8Sint);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_R16Uint) {
-  auto p = parser("r16uint");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kR16Uint);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_R16Sint) {
-  auto p = parser("r16sint");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kR16Sint);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_R16Float) {
-  auto p = parser("r16float");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kR16Float);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Rg8Unorm) {
-  auto p = parser("rg8unorm");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRg8Unorm);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Rg8Snorm) {
-  auto p = parser("rg8snorm");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRg8Snorm);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Rg8Uint) {
-  auto p = parser("rg8uint");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRg8Uint);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Rg8Sint) {
-  auto p = parser("rg8sint");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRg8Sint);
-  EXPECT_FALSE(p->has_error());
-}
-
 TEST_F(ParserImplTest, ImageStorageType_R32Uint) {
   auto p = parser("r32uint");
   auto t = p->expect_texel_format("test");
@@ -139,30 +51,6 @@
   EXPECT_FALSE(p->has_error());
 }
 
-TEST_F(ParserImplTest, ImageStorageType_Rg16Uint) {
-  auto p = parser("rg16uint");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRg16Uint);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Rg16Sint) {
-  auto p = parser("rg16sint");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRg16Sint);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Rg16Float) {
-  auto p = parser("rg16float");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRg16Float);
-  EXPECT_FALSE(p->has_error());
-}
-
 TEST_F(ParserImplTest, ImageStorageType_Rgba8Unorm) {
   auto p = parser("rgba8unorm");
   auto t = p->expect_texel_format("test");
@@ -171,14 +59,6 @@
   EXPECT_FALSE(p->has_error());
 }
 
-TEST_F(ParserImplTest, ImageStorageType_Rgba8UnormSrgb) {
-  auto p = parser("rgba8unorm_srgb");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRgba8UnormSrgb);
-  EXPECT_FALSE(p->has_error());
-}
-
 TEST_F(ParserImplTest, ImageStorageType_Rgba8Snorm) {
   auto p = parser("rgba8snorm");
   auto t = p->expect_texel_format("test");
@@ -203,38 +83,6 @@
   EXPECT_FALSE(p->has_error());
 }
 
-TEST_F(ParserImplTest, ImageStorageType_Bgra8Unorm) {
-  auto p = parser("bgra8unorm");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kBgra8Unorm);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Bgra8UnormSrgb) {
-  auto p = parser("bgra8unorm_srgb");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kBgra8UnormSrgb);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Rgb10A2Unorm) {
-  auto p = parser("rgb10a2unorm");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRgb10A2Unorm);
-  EXPECT_FALSE(p->has_error());
-}
-
-TEST_F(ParserImplTest, ImageStorageType_Rg11B10Float) {
-  auto p = parser("rg11b10float");
-  auto t = p->expect_texel_format("test");
-  EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::TexelFormat::kRg11B10Float);
-  EXPECT_FALSE(p->has_error());
-}
-
 TEST_F(ParserImplTest, ImageStorageType_Rg32Uint) {
   auto p = parser("rg32uint");
   auto t = p->expect_texel_format("test");
diff --git a/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc b/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
index 0b4af5c..214bd72 100644
--- a/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
+++ b/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
@@ -184,8 +184,8 @@
   EXPECT_EQ(p->error(), "1:28: expected '>' for multisampled texture type");
 }
 
-TEST_F(ParserImplTest, TextureSamplerTypes_StorageTexture_Readonly1dR8Unorm) {
-  auto p = parser("texture_storage_1d<r8unorm, read>");
+TEST_F(ParserImplTest, TextureSamplerTypes_StorageTexture_Readonly1dRg32Float) {
+  auto p = parser("texture_storage_1d<rg32float, read>");
   auto t = p->texture_sampler_types();
   ASSERT_FALSE(p->has_error()) << p->error();
   EXPECT_TRUE(t.matched);
@@ -194,14 +194,14 @@
 
   ASSERT_TRUE(t->Is<ast::Texture>());
   ASSERT_TRUE(t->Is<ast::StorageTexture>());
-  EXPECT_EQ(t->As<ast::StorageTexture>()->format, ast::TexelFormat::kR8Unorm);
+  EXPECT_EQ(t->As<ast::StorageTexture>()->format, ast::TexelFormat::kRg32Float);
   EXPECT_EQ(t->As<ast::StorageTexture>()->access, ast::Access::kRead);
   EXPECT_EQ(t->As<ast::Texture>()->dim, ast::TextureDimension::k1d);
-  EXPECT_EQ(t->source.range, (Source::Range{{1u, 1u}, {1u, 34u}}));
+  EXPECT_EQ(t->source.range, (Source::Range{{1u, 1u}, {1u, 36u}}));
 }
 
-TEST_F(ParserImplTest, TextureSamplerTypes_StorageTexture_Writeonly2dR16Float) {
-  auto p = parser("texture_storage_2d<r16float, write>");
+TEST_F(ParserImplTest, TextureSamplerTypes_StorageTexture_Writeonly2dR32Uint) {
+  auto p = parser("texture_storage_2d<r32uint, write>");
   auto t = p->texture_sampler_types();
   ASSERT_FALSE(p->has_error()) << p->error();
   EXPECT_TRUE(t.matched);
@@ -210,10 +210,10 @@
 
   ASSERT_TRUE(t->Is<ast::Texture>());
   ASSERT_TRUE(t->Is<ast::StorageTexture>());
-  EXPECT_EQ(t->As<ast::StorageTexture>()->format, ast::TexelFormat::kR16Float);
+  EXPECT_EQ(t->As<ast::StorageTexture>()->format, ast::TexelFormat::kR32Uint);
   EXPECT_EQ(t->As<ast::StorageTexture>()->access, ast::Access::kWrite);
   EXPECT_EQ(t->As<ast::Texture>()->dim, ast::TextureDimension::k2d);
-  EXPECT_EQ(t->source.range, (Source::Range{{1u, 1u}, {1u, 36u}}));
+  EXPECT_EQ(t->source.range, (Source::Range{{1u, 1u}, {1u, 35u}}));
 }
 
 TEST_F(ParserImplTest, TextureSamplerTypes_StorageTexture_InvalidType) {
@@ -226,7 +226,7 @@
 }
 
 TEST_F(ParserImplTest, TextureSamplerTypes_StorageTexture_InvalidAccess) {
-  auto p = parser("texture_storage_1d<r16float, abc>");
+  auto p = parser("texture_storage_1d<r32float, abc>");
   auto t = p->texture_sampler_types();
   EXPECT_EQ(t.value, nullptr);
   EXPECT_FALSE(t.matched);
@@ -253,7 +253,7 @@
 }
 
 TEST_F(ParserImplTest, TextureSamplerTypes_StorageTexture_MissingGreaterThan) {
-  auto p = parser("texture_storage_1d<r8unorm, read");
+  auto p = parser("texture_storage_1d<r32uint, read");
   auto t = p->texture_sampler_types();
   EXPECT_EQ(t.value, nullptr);
   EXPECT_FALSE(t.matched);
diff --git a/src/resolver/dependency_graph_test.cc b/src/resolver/dependency_graph_test.cc
index 7186ef9..17364e6 100644
--- a/src/resolver/dependency_graph_test.cc
+++ b/src/resolver/dependency_graph_test.cc
@@ -1316,7 +1316,7 @@
   Global(Sym(), ty.external_texture());
   Global(Sym(), ty.multisampled_texture(ast::TextureDimension::k2d, T));
   Global(Sym(), ty.storage_texture(ast::TextureDimension::k2d,
-                                   ast::TexelFormat::kR16Float,
+                                   ast::TexelFormat::kR32Float,
                                    ast::Access::kRead));  //
   Global(Sym(), ty.sampler(ast::SamplerKind::kSampler));
   Func(Sym(), {}, ty.void_(), {});
diff --git a/src/resolver/intrinsic_test.cc b/src/resolver/intrinsic_test.cc
index ffe9388..57b0342 100644
--- a/src/resolver/intrinsic_test.cc
+++ b/src/resolver/intrinsic_test.cc
@@ -222,7 +222,7 @@
 struct TextureTestParams {
   ast::TextureDimension dim;
   Texture type = Texture::kF32;
-  ast::TexelFormat format = ast::TexelFormat::kR16Float;
+  ast::TexelFormat format = ast::TexelFormat::kR32Float;
 };
 inline std::ostream& operator<<(std::ostream& out, TextureTestParams data) {
   out << data.dim << "_" << data.type;
diff --git a/src/resolver/type_validation_test.cc b/src/resolver/type_validation_test.cc
index 9da7dfa..2592246 100644
--- a/src/resolver/type_validation_test.cc
+++ b/src/resolver/type_validation_test.cc
@@ -861,30 +861,12 @@
 };
 
 static constexpr FormatParams format_cases[] = {
-    FormatParams{ast::TexelFormat::kBgra8Unorm, false},
-    FormatParams{ast::TexelFormat::kBgra8UnormSrgb, false},
-    FormatParams{ast::TexelFormat::kR16Float, false},
-    FormatParams{ast::TexelFormat::kR16Sint, false},
-    FormatParams{ast::TexelFormat::kR16Uint, false},
     FormatParams{ast::TexelFormat::kR32Float, true},
     FormatParams{ast::TexelFormat::kR32Sint, true},
     FormatParams{ast::TexelFormat::kR32Uint, true},
-    FormatParams{ast::TexelFormat::kR8Sint, false},
-    FormatParams{ast::TexelFormat::kR8Snorm, false},
-    FormatParams{ast::TexelFormat::kR8Uint, false},
-    FormatParams{ast::TexelFormat::kR8Unorm, false},
-    FormatParams{ast::TexelFormat::kRg11B10Float, false},
-    FormatParams{ast::TexelFormat::kRg16Float, false},
-    FormatParams{ast::TexelFormat::kRg16Sint, false},
-    FormatParams{ast::TexelFormat::kRg16Uint, false},
     FormatParams{ast::TexelFormat::kRg32Float, true},
     FormatParams{ast::TexelFormat::kRg32Sint, true},
     FormatParams{ast::TexelFormat::kRg32Uint, true},
-    FormatParams{ast::TexelFormat::kRg8Sint, false},
-    FormatParams{ast::TexelFormat::kRg8Snorm, false},
-    FormatParams{ast::TexelFormat::kRg8Uint, false},
-    FormatParams{ast::TexelFormat::kRg8Unorm, false},
-    FormatParams{ast::TexelFormat::kRgb10A2Unorm, false},
     FormatParams{ast::TexelFormat::kRgba16Float, true},
     FormatParams{ast::TexelFormat::kRgba16Sint, true},
     FormatParams{ast::TexelFormat::kRgba16Uint, true},
@@ -894,8 +876,7 @@
     FormatParams{ast::TexelFormat::kRgba8Sint, true},
     FormatParams{ast::TexelFormat::kRgba8Snorm, true},
     FormatParams{ast::TexelFormat::kRgba8Uint, true},
-    FormatParams{ast::TexelFormat::kRgba8Unorm, true},
-    FormatParams{ast::TexelFormat::kRgba8UnormSrgb, false}};
+    FormatParams{ast::TexelFormat::kRgba8Unorm, true}};
 
 using StorageTextureFormatTest = ResolverTestWithParam<FormatParams>;
 TEST_P(StorageTextureFormatTest, All) {
diff --git a/src/sem/storage_texture_type.cc b/src/sem/storage_texture_type.cc
index 8f796db..6492afd 100644
--- a/src/sem/storage_texture_type.cc
+++ b/src/sem/storage_texture_type.cc
@@ -48,11 +48,7 @@
 sem::Type* StorageTexture::SubtypeFor(ast::TexelFormat format,
                                       sem::Manager& type_mgr) {
   switch (format) {
-    case ast::TexelFormat::kR8Uint:
-    case ast::TexelFormat::kR16Uint:
-    case ast::TexelFormat::kRg8Uint:
     case ast::TexelFormat::kR32Uint:
-    case ast::TexelFormat::kRg16Uint:
     case ast::TexelFormat::kRgba8Uint:
     case ast::TexelFormat::kRg32Uint:
     case ast::TexelFormat::kRgba16Uint:
@@ -60,11 +56,7 @@
       return type_mgr.Get<sem::U32>();
     }
 
-    case ast::TexelFormat::kR8Sint:
-    case ast::TexelFormat::kR16Sint:
-    case ast::TexelFormat::kRg8Sint:
     case ast::TexelFormat::kR32Sint:
-    case ast::TexelFormat::kRg16Sint:
     case ast::TexelFormat::kRgba8Sint:
     case ast::TexelFormat::kRg32Sint:
     case ast::TexelFormat::kRgba16Sint:
@@ -72,20 +64,9 @@
       return type_mgr.Get<sem::I32>();
     }
 
-    case ast::TexelFormat::kR8Unorm:
-    case ast::TexelFormat::kRg8Unorm:
     case ast::TexelFormat::kRgba8Unorm:
-    case ast::TexelFormat::kRgba8UnormSrgb:
-    case ast::TexelFormat::kBgra8Unorm:
-    case ast::TexelFormat::kBgra8UnormSrgb:
-    case ast::TexelFormat::kRgb10A2Unorm:
-    case ast::TexelFormat::kR8Snorm:
-    case ast::TexelFormat::kRg8Snorm:
     case ast::TexelFormat::kRgba8Snorm:
-    case ast::TexelFormat::kR16Float:
     case ast::TexelFormat::kR32Float:
-    case ast::TexelFormat::kRg16Float:
-    case ast::TexelFormat::kRg11B10Float:
     case ast::TexelFormat::kRg32Float:
     case ast::TexelFormat::kRgba16Float:
     case ast::TexelFormat::kRgba32Float: {
diff --git a/src/transform/renamer_test.cc b/src/transform/renamer_test.cc
index d32c9f3..7f83043 100644
--- a/src/transform/renamer_test.cc
+++ b/src/transform/renamer_test.cc
@@ -1334,19 +1334,19 @@
         "ptrdiff_t",
         "r16snorm",
         "r16unorm",
-        // "r8unorm",  // Also used in WGSL
+        "r8unorm",
         "reference",
         "rg11b10f",
         "rg16snorm",
         "rg16unorm",
-        // "rg8snorm",  // Also used in WGSL
-        // "rg8unorm",  // Also used in WGSL
+        "rg8snorm",
+        "rg8unorm",
         "rgb10a2",
         "rgb9e5",
         "rgba16snorm",
         "rgba16unorm",
-        // "rgba8snorm",  // Also used in WGSL
-        // "rgba8unorm",  // Also used in WGSL
+        "rgba8snorm",
+        "rgba8unorm",
         // "sampler",  // Also used in WGSL
         "short2",
         "short3",
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index cec7b77..f7f354f 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -4304,74 +4304,20 @@
 SpvImageFormat Builder::convert_texel_format_to_spv(
     const ast::TexelFormat format) {
   switch (format) {
-    case ast::TexelFormat::kR8Unorm:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatR8;
-    case ast::TexelFormat::kR8Snorm:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatR8Snorm;
-    case ast::TexelFormat::kR8Uint:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatR8ui;
-    case ast::TexelFormat::kR8Sint:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatR8i;
-    case ast::TexelFormat::kR16Uint:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatR16ui;
-    case ast::TexelFormat::kR16Sint:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatR16i;
-    case ast::TexelFormat::kR16Float:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatR16f;
-    case ast::TexelFormat::kRg8Unorm:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatRg8;
-    case ast::TexelFormat::kRg8Snorm:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatRg8Snorm;
-    case ast::TexelFormat::kRg8Uint:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatRg8ui;
-    case ast::TexelFormat::kRg8Sint:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatRg8i;
     case ast::TexelFormat::kR32Uint:
       return SpvImageFormatR32ui;
     case ast::TexelFormat::kR32Sint:
       return SpvImageFormatR32i;
     case ast::TexelFormat::kR32Float:
       return SpvImageFormatR32f;
-    case ast::TexelFormat::kRg16Uint:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatRg16ui;
-    case ast::TexelFormat::kRg16Sint:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatRg16i;
-    case ast::TexelFormat::kRg16Float:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatRg16f;
     case ast::TexelFormat::kRgba8Unorm:
       return SpvImageFormatRgba8;
-    case ast::TexelFormat::kRgba8UnormSrgb:
-      return SpvImageFormatUnknown;
     case ast::TexelFormat::kRgba8Snorm:
       return SpvImageFormatRgba8Snorm;
     case ast::TexelFormat::kRgba8Uint:
       return SpvImageFormatRgba8ui;
     case ast::TexelFormat::kRgba8Sint:
       return SpvImageFormatRgba8i;
-    case ast::TexelFormat::kBgra8Unorm:
-      return SpvImageFormatUnknown;
-    case ast::TexelFormat::kBgra8UnormSrgb:
-      return SpvImageFormatUnknown;
-    case ast::TexelFormat::kRgb10A2Unorm:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatRgb10A2;
-    case ast::TexelFormat::kRg11B10Float:
-      push_capability(SpvCapabilityStorageImageExtendedFormats);
-      return SpvImageFormatR11fG11fB10f;
     case ast::TexelFormat::kRg32Uint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg32ui;
diff --git a/src/writer/spirv/builder_format_conversion_test.cc b/src/writer/spirv/builder_format_conversion_test.cc
index c7ec41f..0c4b67b 100644
--- a/src/writer/spirv/builder_format_conversion_test.cc
+++ b/src/writer/spirv/builder_format_conversion_test.cc
@@ -51,33 +51,34 @@
     BuilderTest,
     ImageFormatConversionTest,
     testing::Values(
-        TestData{ast::TexelFormat::kR8Unorm, SpvImageFormatR8, true},
-        TestData{ast::TexelFormat::kR8Snorm, SpvImageFormatR8Snorm, true},
-        TestData{ast::TexelFormat::kR8Uint, SpvImageFormatR8ui, true},
-        TestData{ast::TexelFormat::kR8Sint, SpvImageFormatR8i, true},
-        TestData{ast::TexelFormat::kR16Uint, SpvImageFormatR16ui, true},
-        TestData{ast::TexelFormat::kR16Sint, SpvImageFormatR16i, true},
-        TestData{ast::TexelFormat::kR16Float, SpvImageFormatR16f, true},
-        TestData{ast::TexelFormat::kRg8Unorm, SpvImageFormatRg8, true},
-        TestData{ast::TexelFormat::kRg8Snorm, SpvImageFormatRg8Snorm, true},
-        TestData{ast::TexelFormat::kRg8Uint, SpvImageFormatRg8ui, true},
-        TestData{ast::TexelFormat::kRg8Sint, SpvImageFormatRg8i, true},
+        /* WGSL unsupported formats
+  TestData{ast::TexelFormat::kR8Unorm, SpvImageFormatR8, true},
+  TestData{ast::TexelFormat::kR8Snorm, SpvImageFormatR8Snorm, true},
+  TestData{ast::TexelFormat::kR8Uint, SpvImageFormatR8ui, true},
+  TestData{ast::TexelFormat::kR8Sint, SpvImageFormatR8i, true},
+  TestData{ast::TexelFormat::kR16Uint, SpvImageFormatR16ui, true},
+  TestData{ast::TexelFormat::kR16Sint, SpvImageFormatR16i, true},
+  TestData{ast::TexelFormat::kR16Float, SpvImageFormatR16f, true},
+  TestData{ast::TexelFormat::kRg8Unorm, SpvImageFormatRg8, true},
+  TestData{ast::TexelFormat::kRg8Snorm, SpvImageFormatRg8Snorm, true},
+  TestData{ast::TexelFormat::kRg8Uint, SpvImageFormatRg8ui, true},
+  TestData{ast::TexelFormat::kRg8Sint, SpvImageFormatRg8i, true},
+  TestData{ast::TexelFormat::kRg16Uint, SpvImageFormatRg16ui, true},
+  TestData{ast::TexelFormat::kRg16Sint, SpvImageFormatRg16i, true},
+  TestData{ast::TexelFormat::kRg16Float, SpvImageFormatRg16f, true},
+  TestData{ast::TexelFormat::kRgba8UnormSrgb, SpvImageFormatUnknown},
+  TestData{ast::TexelFormat::kBgra8Unorm, SpvImageFormatUnknown},
+  TestData{ast::TexelFormat::kBgra8UnormSrgb, SpvImageFormatUnknown},
+  TestData{ast::TexelFormat::kRgb10A2Unorm, SpvImageFormatRgb10A2, true},
+  TestData{ast::TexelFormat::kRg11B10Float, SpvImageFormatR11fG11fB10f, true},
+*/
         TestData{ast::TexelFormat::kR32Uint, SpvImageFormatR32ui},
         TestData{ast::TexelFormat::kR32Sint, SpvImageFormatR32i},
         TestData{ast::TexelFormat::kR32Float, SpvImageFormatR32f},
-        TestData{ast::TexelFormat::kRg16Uint, SpvImageFormatRg16ui, true},
-        TestData{ast::TexelFormat::kRg16Sint, SpvImageFormatRg16i, true},
-        TestData{ast::TexelFormat::kRg16Float, SpvImageFormatRg16f, true},
         TestData{ast::TexelFormat::kRgba8Unorm, SpvImageFormatRgba8},
-        TestData{ast::TexelFormat::kRgba8UnormSrgb, SpvImageFormatUnknown},
         TestData{ast::TexelFormat::kRgba8Snorm, SpvImageFormatRgba8Snorm},
         TestData{ast::TexelFormat::kRgba8Uint, SpvImageFormatRgba8ui},
         TestData{ast::TexelFormat::kRgba8Sint, SpvImageFormatRgba8i},
-        TestData{ast::TexelFormat::kBgra8Unorm, SpvImageFormatUnknown},
-        TestData{ast::TexelFormat::kBgra8UnormSrgb, SpvImageFormatUnknown},
-        TestData{ast::TexelFormat::kRgb10A2Unorm, SpvImageFormatRgb10A2, true},
-        TestData{ast::TexelFormat::kRg11B10Float, SpvImageFormatR11fG11fB10f,
-                 true},
         TestData{ast::TexelFormat::kRg32Uint, SpvImageFormatRg32ui, true},
         TestData{ast::TexelFormat::kRg32Sint, SpvImageFormatRg32i, true},
         TestData{ast::TexelFormat::kRg32Float, SpvImageFormatRg32f, true},
diff --git a/src/writer/wgsl/generator_impl_type_test.cc b/src/writer/wgsl/generator_impl_type_test.cc
index 2b84826..236c1b1 100644
--- a/src/writer/wgsl/generator_impl_type_test.cc
+++ b/src/writer/wgsl/generator_impl_type_test.cc
@@ -489,32 +489,13 @@
     WgslGeneratorImplTest,
     WgslGenerator_ImageFormatTest,
     testing::Values(
-        ImageFormatData{ast::TexelFormat::kR8Unorm, "r8unorm"},
-        ImageFormatData{ast::TexelFormat::kR8Snorm, "r8snorm"},
-        ImageFormatData{ast::TexelFormat::kR8Uint, "r8uint"},
-        ImageFormatData{ast::TexelFormat::kR8Sint, "r8sint"},
-        ImageFormatData{ast::TexelFormat::kR16Uint, "r16uint"},
-        ImageFormatData{ast::TexelFormat::kR16Sint, "r16sint"},
-        ImageFormatData{ast::TexelFormat::kR16Float, "r16float"},
-        ImageFormatData{ast::TexelFormat::kRg8Unorm, "rg8unorm"},
-        ImageFormatData{ast::TexelFormat::kRg8Snorm, "rg8snorm"},
-        ImageFormatData{ast::TexelFormat::kRg8Uint, "rg8uint"},
-        ImageFormatData{ast::TexelFormat::kRg8Sint, "rg8sint"},
         ImageFormatData{ast::TexelFormat::kR32Uint, "r32uint"},
         ImageFormatData{ast::TexelFormat::kR32Sint, "r32sint"},
         ImageFormatData{ast::TexelFormat::kR32Float, "r32float"},
-        ImageFormatData{ast::TexelFormat::kRg16Uint, "rg16uint"},
-        ImageFormatData{ast::TexelFormat::kRg16Sint, "rg16sint"},
-        ImageFormatData{ast::TexelFormat::kRg16Float, "rg16float"},
         ImageFormatData{ast::TexelFormat::kRgba8Unorm, "rgba8unorm"},
-        ImageFormatData{ast::TexelFormat::kRgba8UnormSrgb, "rgba8unorm_srgb"},
         ImageFormatData{ast::TexelFormat::kRgba8Snorm, "rgba8snorm"},
         ImageFormatData{ast::TexelFormat::kRgba8Uint, "rgba8uint"},
         ImageFormatData{ast::TexelFormat::kRgba8Sint, "rgba8sint"},
-        ImageFormatData{ast::TexelFormat::kBgra8Unorm, "bgra8unorm"},
-        ImageFormatData{ast::TexelFormat::kBgra8UnormSrgb, "bgra8unorm_srgb"},
-        ImageFormatData{ast::TexelFormat::kRgb10A2Unorm, "rgb10a2unorm"},
-        ImageFormatData{ast::TexelFormat::kRg11B10Float, "rg11b10float"},
         ImageFormatData{ast::TexelFormat::kRg32Uint, "rg32uint"},
         ImageFormatData{ast::TexelFormat::kRg32Sint, "rg32sint"},
         ImageFormatData{ast::TexelFormat::kRg32Float, "rg32float"},
