ast: Rename ImageFormat to TexelFormat

This is what its called in the spec.

Issue: tint:1361
Change-Id: I512c4224191fd2bbf04522da2093872f79ee02a6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/75581
Reviewed-by: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/samples/main.cc b/samples/main.cc
index bcbbe3e..076ea2b 100644
--- a/samples/main.cc
+++ b/samples/main.cc
@@ -253,80 +253,80 @@
   return "Unknown";
 }
 
-std::string ImageFormatToString(
-    tint::inspector::ResourceBinding::ImageFormat format) {
+std::string TexelFormatToString(
+    tint::inspector::ResourceBinding::TexelFormat format) {
   switch (format) {
-    case tint::inspector::ResourceBinding::ImageFormat::kR8Unorm:
+    case tint::inspector::ResourceBinding::TexelFormat::kR8Unorm:
       return "R8Unorm";
-    case tint::inspector::ResourceBinding::ImageFormat::kR8Snorm:
+    case tint::inspector::ResourceBinding::TexelFormat::kR8Snorm:
       return "R8Snorm";
-    case tint::inspector::ResourceBinding::ImageFormat::kR8Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kR8Uint:
       return "R8Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kR8Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kR8Sint:
       return "R8Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kR16Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kR16Uint:
       return "R16Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kR16Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kR16Sint:
       return "R16Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kR16Float:
+    case tint::inspector::ResourceBinding::TexelFormat::kR16Float:
       return "R16Float";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg8Unorm:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg8Unorm:
       return "Rg8Unorm";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg8Snorm:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg8Snorm:
       return "Rg8Snorm";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg8Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg8Uint:
       return "Rg8Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg8Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg8Sint:
       return "Rg8Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kR32Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kR32Uint:
       return "R32Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kR32Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kR32Sint:
       return "R32Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kR32Float:
+    case tint::inspector::ResourceBinding::TexelFormat::kR32Float:
       return "R32Float";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg16Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg16Uint:
       return "Rg16Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg16Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg16Sint:
       return "Rg16Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg16Float:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg16Float:
       return "Rg16Float";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba8Unorm:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba8Unorm:
       return "Rgba8Unorm";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba8UnormSrgb:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba8UnormSrgb:
       return "Rgba8UnormSrgb";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba8Snorm:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba8Snorm:
       return "Rgba8Snorm";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba8Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba8Uint:
       return "Rgba8Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba8Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba8Sint:
       return "Rgba8Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kBgra8Unorm:
+    case tint::inspector::ResourceBinding::TexelFormat::kBgra8Unorm:
       return "Bgra8Unorm";
-    case tint::inspector::ResourceBinding::ImageFormat::kBgra8UnormSrgb:
+    case tint::inspector::ResourceBinding::TexelFormat::kBgra8UnormSrgb:
       return "Bgra8UnormSrgb";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgb10A2Unorm:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgb10A2Unorm:
       return "Rgb10A2Unorm";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg11B10Float:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg11B10Float:
       return "Rg11B10Float";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg32Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg32Uint:
       return "Rg32Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg32Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg32Sint:
       return "Rg32Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRg32Float:
+    case tint::inspector::ResourceBinding::TexelFormat::kRg32Float:
       return "Rg32Float";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba16Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba16Uint:
       return "Rgba16Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba16Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba16Sint:
       return "Rgba16Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba16Float:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba16Float:
       return "Rgba16Float";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba32Uint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba32Uint:
       return "Rgba32Uint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba32Sint:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba32Sint:
       return "Rgba32Sint";
-    case tint::inspector::ResourceBinding::ImageFormat::kRgba32Float:
+    case tint::inspector::ResourceBinding::TexelFormat::kRgba32Float:
       return "Rgba32Float";
-    case tint::inspector::ResourceBinding::ImageFormat::kNone:
+    case tint::inspector::ResourceBinding::TexelFormat::kNone:
       return "None";
   }
   return "Unknown";
@@ -1162,7 +1162,7 @@
         std::cout << "\t\t sampled_kind = "
                   << SampledKindToString(binding.sampled_kind) << std::endl;
         std::cout << "\t\t image_format = "
-                  << ImageFormatToString(binding.image_format) << std::endl;
+                  << TexelFormatToString(binding.image_format) << std::endl;
       }
     }
     std::cout << std::string(80, '-') << std::endl;
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 62fd9fc..4bea019 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -840,7 +840,6 @@
       reader/wgsl/parser_impl_global_decl_test.cc
       reader/wgsl/parser_impl_global_variable_decl_test.cc
       reader/wgsl/parser_impl_if_stmt_test.cc
-      reader/wgsl/parser_impl_image_storage_type_test.cc
       reader/wgsl/parser_impl_inclusive_or_expression_test.cc
       reader/wgsl/parser_impl_logical_and_expression_test.cc
       reader/wgsl/parser_impl_logical_or_expression_test.cc
@@ -872,6 +871,7 @@
       reader/wgsl/parser_impl_test.cc
       reader/wgsl/parser_impl_test_helper.cc
       reader/wgsl/parser_impl_test_helper.h
+      reader/wgsl/parser_impl_texel_format_test.cc
       reader/wgsl/parser_impl_texture_sampler_types_test.cc
       reader/wgsl/parser_impl_type_alias_test.cc
       reader/wgsl/parser_impl_type_decl_test.cc
diff --git a/src/ast/intrinsic_texture_helper_test.cc b/src/ast/intrinsic_texture_helper_test.cc
index 76c9a73..4273f1e 100644
--- a/src/ast/intrinsic_texture_helper_test.cc
+++ b/src/ast/intrinsic_texture_helper_test.cc
@@ -63,7 +63,7 @@
     ValidTextureOverload o,
     const char* d,
     Access acc,
-    ast::ImageFormat i,
+    ast::TexelFormat fmt,
     ast::TextureDimension dims,
     TextureDataType datatype,
     const char* f,
@@ -72,7 +72,7 @@
       description(d),
       texture_kind(TextureKind::kStorage),
       access(acc),
-      image_format(i),
+      texel_format(fmt),
       texture_dimension(dims),
       texture_data_type(datatype),
       function(f),
@@ -128,7 +128,7 @@
   }
   out << "\n";
   out << "access:            " << data.access << "\n";
-  out << "image_format:      " << data.image_format << "\n";
+  out << "texel_format:      " << data.texel_format << "\n";
   out << "texture_dimension: " << data.texture_dimension << "\n";
   out << "texture_data_type: " << data.texture_data_type << "\n";
   return out;
@@ -179,7 +179,7 @@
           decos);
 
     case ast::intrinsic::test::TextureKind::kStorage: {
-      auto* st = b->ty.storage_texture(texture_dimension, image_format, access);
+      auto* st = b->ty.storage_texture(texture_dimension, texel_format, access);
       return b->Global("texture", st, decos);
     }
   }
@@ -422,7 +422,7 @@
           ValidTextureOverload::kDimensionsStorageWO1d,
           "textureDimensions(t : texture_storage_1d<rgba32float>) -> i32",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k1d,
           TextureDataType::kF32,
           "textureDimensions",
@@ -433,7 +433,7 @@
           "textureDimensions(t : texture_storage_2d<rgba32float>) -> "
           "vec2<i32>",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k2d,
           TextureDataType::kF32,
           "textureDimensions",
@@ -444,7 +444,7 @@
           "textureDimensions(t : texture_storage_2d_array<rgba32float>) -> "
           "vec2<i32>",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k2dArray,
           TextureDataType::kF32,
           "textureDimensions",
@@ -455,7 +455,7 @@
           "textureDimensions(t : texture_storage_3d<rgba32float>) -> "
           "vec3<i32>",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k3d,
           TextureDataType::kF32,
           "textureDimensions",
@@ -848,7 +848,7 @@
           ValidTextureOverload::kNumLayersStorageWO2dArray,
           "textureNumLayers(t : texture_storage_2d_array<rgba32float>) -> i32",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k2dArray,
           TextureDataType::kF32,
           "textureNumLayers",
@@ -2205,7 +2205,7 @@
           "             coords : i32,\n"
           "             value  : vec4<T>)",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k1d,
           TextureDataType::kF32,
           "textureStore",
@@ -2221,7 +2221,7 @@
           "             coords : vec2<i32>,\n"
           "             value  : vec4<T>)",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k2d,
           TextureDataType::kF32,
           "textureStore",
@@ -2238,7 +2238,7 @@
           "             array_index : i32,\n"
           "             value       : vec4<T>)",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k2dArray,
           TextureDataType::kF32,
           "textureStore",
@@ -2255,7 +2255,7 @@
           "             coords : vec3<i32>,\n"
           "             value  : vec4<T>)",
           ast::Access::kWrite,
-          ast::ImageFormat::kRgba32Float,
+          ast::TexelFormat::kRgba32Float,
           ast::TextureDimension::k3d,
           TextureDataType::kF32,
           "textureStore",
diff --git a/src/ast/intrinsic_texture_helper_test.h b/src/ast/intrinsic_texture_helper_test.h
index 64b995a..b5f4a34 100644
--- a/src/ast/intrinsic_texture_helper_test.h
+++ b/src/ast/intrinsic_texture_helper_test.h
@@ -207,7 +207,7 @@
   TextureOverloadCase(ValidTextureOverload,
                       const char*,
                       Access,
-                      ast::ImageFormat,
+                      ast::TexelFormat,
                       ast::TextureDimension,
                       TextureDataType,
                       const char*,
@@ -248,7 +248,7 @@
   Access const access = Access::kReadWrite;
   /// The image format for the storage texture
   /// Used only when texture_kind is kStorage
-  ast::ImageFormat const image_format = ast::ImageFormat::kNone;
+  ast::TexelFormat const texel_format = ast::TexelFormat::kNone;
   /// The dimensions of the texture parameter
   ast::TextureDimension const texture_dimension;
   /// The data type of the texture parameter
diff --git a/src/ast/storage_texture.cc b/src/ast/storage_texture.cc
index 5b8fdcd..b074f5d 100644
--- a/src/ast/storage_texture.cc
+++ b/src/ast/storage_texture.cc
@@ -26,114 +26,114 @@
 
 // Note, these names match the names in the WGSL spec. This behaviour is used
 // in the WGSL writer to emit the texture format names.
-std::ostream& operator<<(std::ostream& out, ImageFormat format) {
+std::ostream& operator<<(std::ostream& out, TexelFormat format) {
   switch (format) {
-    case ImageFormat::kNone:
+    case TexelFormat::kNone:
       out << "none";
       break;
-    case ImageFormat::kR8Unorm:
+    case TexelFormat::kR8Unorm:
       out << "r8unorm";
       break;
-    case ImageFormat::kR8Snorm:
+    case TexelFormat::kR8Snorm:
       out << "r8snorm";
       break;
-    case ImageFormat::kR8Uint:
+    case TexelFormat::kR8Uint:
       out << "r8uint";
       break;
-    case ImageFormat::kR8Sint:
+    case TexelFormat::kR8Sint:
       out << "r8sint";
       break;
-    case ImageFormat::kR16Uint:
+    case TexelFormat::kR16Uint:
       out << "r16uint";
       break;
-    case ImageFormat::kR16Sint:
+    case TexelFormat::kR16Sint:
       out << "r16sint";
       break;
-    case ImageFormat::kR16Float:
+    case TexelFormat::kR16Float:
       out << "r16float";
       break;
-    case ImageFormat::kRg8Unorm:
+    case TexelFormat::kRg8Unorm:
       out << "rg8unorm";
       break;
-    case ImageFormat::kRg8Snorm:
+    case TexelFormat::kRg8Snorm:
       out << "rg8snorm";
       break;
-    case ImageFormat::kRg8Uint:
+    case TexelFormat::kRg8Uint:
       out << "rg8uint";
       break;
-    case ImageFormat::kRg8Sint:
+    case TexelFormat::kRg8Sint:
       out << "rg8sint";
       break;
-    case ImageFormat::kR32Uint:
+    case TexelFormat::kR32Uint:
       out << "r32uint";
       break;
-    case ImageFormat::kR32Sint:
+    case TexelFormat::kR32Sint:
       out << "r32sint";
       break;
-    case ImageFormat::kR32Float:
+    case TexelFormat::kR32Float:
       out << "r32float";
       break;
-    case ImageFormat::kRg16Uint:
+    case TexelFormat::kRg16Uint:
       out << "rg16uint";
       break;
-    case ImageFormat::kRg16Sint:
+    case TexelFormat::kRg16Sint:
       out << "rg16sint";
       break;
-    case ImageFormat::kRg16Float:
+    case TexelFormat::kRg16Float:
       out << "rg16float";
       break;
-    case ImageFormat::kRgba8Unorm:
+    case TexelFormat::kRgba8Unorm:
       out << "rgba8unorm";
       break;
-    case ImageFormat::kRgba8UnormSrgb:
+    case TexelFormat::kRgba8UnormSrgb:
       out << "rgba8unorm_srgb";
       break;
-    case ImageFormat::kRgba8Snorm:
+    case TexelFormat::kRgba8Snorm:
       out << "rgba8snorm";
       break;
-    case ImageFormat::kRgba8Uint:
+    case TexelFormat::kRgba8Uint:
       out << "rgba8uint";
       break;
-    case ImageFormat::kRgba8Sint:
+    case TexelFormat::kRgba8Sint:
       out << "rgba8sint";
       break;
-    case ImageFormat::kBgra8Unorm:
+    case TexelFormat::kBgra8Unorm:
       out << "bgra8unorm";
       break;
-    case ImageFormat::kBgra8UnormSrgb:
+    case TexelFormat::kBgra8UnormSrgb:
       out << "bgra8unorm_srgb";
       break;
-    case ImageFormat::kRgb10A2Unorm:
+    case TexelFormat::kRgb10A2Unorm:
       out << "rgb10a2unorm";
       break;
-    case ImageFormat::kRg11B10Float:
+    case TexelFormat::kRg11B10Float:
       out << "rg11b10float";
       break;
-    case ImageFormat::kRg32Uint:
+    case TexelFormat::kRg32Uint:
       out << "rg32uint";
       break;
-    case ImageFormat::kRg32Sint:
+    case TexelFormat::kRg32Sint:
       out << "rg32sint";
       break;
-    case ImageFormat::kRg32Float:
+    case TexelFormat::kRg32Float:
       out << "rg32float";
       break;
-    case ImageFormat::kRgba16Uint:
+    case TexelFormat::kRgba16Uint:
       out << "rgba16uint";
       break;
-    case ImageFormat::kRgba16Sint:
+    case TexelFormat::kRgba16Sint:
       out << "rgba16sint";
       break;
-    case ImageFormat::kRgba16Float:
+    case TexelFormat::kRgba16Float:
       out << "rgba16float";
       break;
-    case ImageFormat::kRgba32Uint:
+    case TexelFormat::kRgba32Uint:
       out << "rgba32uint";
       break;
-    case ImageFormat::kRgba32Sint:
+    case TexelFormat::kRgba32Sint:
       out << "rgba32sint";
       break;
-    case ImageFormat::kRgba32Float:
+    case TexelFormat::kRgba32Float:
       out << "rgba32float";
       break;
   }
@@ -143,7 +143,7 @@
 StorageTexture::StorageTexture(ProgramID pid,
                                const Source& src,
                                TextureDimension d,
-                               ImageFormat fmt,
+                               TexelFormat fmt,
                                const Type* subtype,
                                Access ac)
     : Base(pid, src, d), format(fmt), type(subtype), access(ac) {}
@@ -165,53 +165,53 @@
   return ctx->dst->create<StorageTexture>(src, dim, format, ty, access);
 }
 
-Type* StorageTexture::SubtypeFor(ImageFormat format, ProgramBuilder& builder) {
+Type* StorageTexture::SubtypeFor(TexelFormat format, ProgramBuilder& builder) {
   switch (format) {
-    case ImageFormat::kR8Uint:
-    case ImageFormat::kR16Uint:
-    case ImageFormat::kRg8Uint:
-    case ImageFormat::kR32Uint:
-    case ImageFormat::kRg16Uint:
-    case ImageFormat::kRgba8Uint:
-    case ImageFormat::kRg32Uint:
-    case ImageFormat::kRgba16Uint:
-    case ImageFormat::kRgba32Uint: {
+    case TexelFormat::kR8Uint:
+    case TexelFormat::kR16Uint:
+    case TexelFormat::kRg8Uint:
+    case TexelFormat::kR32Uint:
+    case TexelFormat::kRg16Uint:
+    case TexelFormat::kRgba8Uint:
+    case TexelFormat::kRg32Uint:
+    case TexelFormat::kRgba16Uint:
+    case TexelFormat::kRgba32Uint: {
       return builder.create<U32>();
     }
 
-    case ImageFormat::kR8Sint:
-    case ImageFormat::kR16Sint:
-    case ImageFormat::kRg8Sint:
-    case ImageFormat::kR32Sint:
-    case ImageFormat::kRg16Sint:
-    case ImageFormat::kRgba8Sint:
-    case ImageFormat::kRg32Sint:
-    case ImageFormat::kRgba16Sint:
-    case ImageFormat::kRgba32Sint: {
+    case TexelFormat::kR8Sint:
+    case TexelFormat::kR16Sint:
+    case TexelFormat::kRg8Sint:
+    case TexelFormat::kR32Sint:
+    case TexelFormat::kRg16Sint:
+    case TexelFormat::kRgba8Sint:
+    case TexelFormat::kRg32Sint:
+    case TexelFormat::kRgba16Sint:
+    case TexelFormat::kRgba32Sint: {
       return builder.create<I32>();
     }
 
-    case ImageFormat::kR8Unorm:
-    case ImageFormat::kRg8Unorm:
-    case ImageFormat::kRgba8Unorm:
-    case ImageFormat::kRgba8UnormSrgb:
-    case ImageFormat::kBgra8Unorm:
-    case ImageFormat::kBgra8UnormSrgb:
-    case ImageFormat::kRgb10A2Unorm:
-    case ImageFormat::kR8Snorm:
-    case ImageFormat::kRg8Snorm:
-    case ImageFormat::kRgba8Snorm:
-    case ImageFormat::kR16Float:
-    case ImageFormat::kR32Float:
-    case ImageFormat::kRg16Float:
-    case ImageFormat::kRg11B10Float:
-    case ImageFormat::kRg32Float:
-    case ImageFormat::kRgba16Float:
-    case ImageFormat::kRgba32Float: {
+    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: {
       return builder.create<F32>();
     }
 
-    case ImageFormat::kNone:
+    case TexelFormat::kNone:
       break;
   }
 
diff --git a/src/ast/storage_texture.h b/src/ast/storage_texture.h
index 5e56aba..46cd2c8 100644
--- a/src/ast/storage_texture.h
+++ b/src/ast/storage_texture.h
@@ -23,10 +23,8 @@
 namespace tint {
 namespace ast {
 
-class Manager;
-
-/// The image format in the storage texture
-enum class ImageFormat {
+/// The texel format in the storage texture
+enum class TexelFormat {
   kNone = -1,
   kR8Unorm,
   kR8Snorm,
@@ -66,9 +64,9 @@
 };
 
 /// @param out the std::ostream to write to
-/// @param format the ImageFormat
+/// @param format the TexelFormat
 /// @return the std::ostream so calls can be chained
-std::ostream& operator<<(std::ostream& out, ImageFormat format);
+std::ostream& operator<<(std::ostream& out, TexelFormat format);
 
 /// A storage texture type.
 class StorageTexture : public Castable<StorageTexture, Texture> {
@@ -83,7 +81,7 @@
   StorageTexture(ProgramID pid,
                  const Source& src,
                  TextureDimension dim,
-                 ImageFormat format,
+                 TexelFormat format,
                  const Type* subtype,
                  Access access_control);
 
@@ -103,11 +101,11 @@
 
   /// @param format the storage texture image format
   /// @param builder the ProgramBuilder used to build the returned type
-  /// @returns the storage texture subtype for the given ImageFormat
-  static Type* SubtypeFor(ImageFormat format, ProgramBuilder& builder);
+  /// @returns the storage texture subtype for the given TexelFormat
+  static Type* SubtypeFor(TexelFormat format, ProgramBuilder& builder);
 
   /// The image format
-  const ImageFormat format;
+  const TexelFormat format;
 
   /// The storage subtype
   const Type* const type;
diff --git a/src/ast/storage_texture_test.cc b/src/ast/storage_texture_test.cc
index ecd2c13..2fbf8cc 100644
--- a/src/ast/storage_texture_test.cc
+++ b/src/ast/storage_texture_test.cc
@@ -23,45 +23,45 @@
 using AstStorageTextureTest = TestHelper;
 
 TEST_F(AstStorageTextureTest, IsTexture) {
-  auto* subtype = StorageTexture::SubtypeFor(ImageFormat::kRgba32Float, *this);
+  auto* subtype = StorageTexture::SubtypeFor(TexelFormat::kRgba32Float, *this);
   Texture* ty =
       create<StorageTexture>(TextureDimension::k2dArray,
-                             ImageFormat::kRgba32Float, subtype, Access::kRead);
+                             TexelFormat::kRgba32Float, subtype, Access::kRead);
   EXPECT_FALSE(ty->Is<DepthTexture>());
   EXPECT_FALSE(ty->Is<SampledTexture>());
   EXPECT_TRUE(ty->Is<StorageTexture>());
 }
 
 TEST_F(AstStorageTextureTest, Dim) {
-  auto* subtype = StorageTexture::SubtypeFor(ImageFormat::kRgba32Float, *this);
+  auto* subtype = StorageTexture::SubtypeFor(TexelFormat::kRgba32Float, *this);
   auto* s =
       create<StorageTexture>(TextureDimension::k2dArray,
-                             ImageFormat::kRgba32Float, subtype, Access::kRead);
+                             TexelFormat::kRgba32Float, subtype, Access::kRead);
   EXPECT_EQ(s->dim, TextureDimension::k2dArray);
 }
 
 TEST_F(AstStorageTextureTest, Format) {
-  auto* subtype = StorageTexture::SubtypeFor(ImageFormat::kRgba32Float, *this);
+  auto* subtype = StorageTexture::SubtypeFor(TexelFormat::kRgba32Float, *this);
   auto* s =
       create<StorageTexture>(TextureDimension::k2dArray,
-                             ImageFormat::kRgba32Float, subtype, Access::kRead);
-  EXPECT_EQ(s->format, ImageFormat::kRgba32Float);
+                             TexelFormat::kRgba32Float, subtype, Access::kRead);
+  EXPECT_EQ(s->format, TexelFormat::kRgba32Float);
 }
 
 TEST_F(AstStorageTextureTest, FriendlyName) {
-  auto* subtype = StorageTexture::SubtypeFor(ImageFormat::kRgba32Float, *this);
+  auto* subtype = StorageTexture::SubtypeFor(TexelFormat::kRgba32Float, *this);
   auto* s =
       create<StorageTexture>(TextureDimension::k2dArray,
-                             ImageFormat::kRgba32Float, subtype, Access::kRead);
+                             TexelFormat::kRgba32Float, subtype, Access::kRead);
   EXPECT_EQ(s->FriendlyName(Symbols()),
             "texture_storage_2d_array<rgba32float, read>");
 }
 
 TEST_F(AstStorageTextureTest, F32) {
-  auto* subtype = StorageTexture::SubtypeFor(ImageFormat::kRgba32Float, *this);
+  auto* subtype = StorageTexture::SubtypeFor(TexelFormat::kRgba32Float, *this);
   Type* s =
       create<StorageTexture>(TextureDimension::k2dArray,
-                             ImageFormat::kRgba32Float, subtype, Access::kRead);
+                             TexelFormat::kRgba32Float, subtype, Access::kRead);
 
   ASSERT_TRUE(s->Is<Texture>());
   ASSERT_TRUE(s->Is<StorageTexture>());
@@ -69,9 +69,9 @@
 }
 
 TEST_F(AstStorageTextureTest, U32) {
-  auto* subtype = StorageTexture::SubtypeFor(ImageFormat::kRg32Uint, *this);
+  auto* subtype = StorageTexture::SubtypeFor(TexelFormat::kRg32Uint, *this);
   Type* s =
-      create<StorageTexture>(TextureDimension::k2dArray, ImageFormat::kRg32Uint,
+      create<StorageTexture>(TextureDimension::k2dArray, TexelFormat::kRg32Uint,
                              subtype, Access::kRead);
 
   ASSERT_TRUE(s->Is<Texture>());
@@ -80,10 +80,10 @@
 }
 
 TEST_F(AstStorageTextureTest, I32) {
-  auto* subtype = StorageTexture::SubtypeFor(ImageFormat::kRgba32Sint, *this);
+  auto* subtype = StorageTexture::SubtypeFor(TexelFormat::kRgba32Sint, *this);
   Type* s =
       create<StorageTexture>(TextureDimension::k2dArray,
-                             ImageFormat::kRgba32Sint, subtype, Access::kRead);
+                             TexelFormat::kRgba32Sint, subtype, Access::kRead);
 
   ASSERT_TRUE(s->Is<Texture>());
   ASSERT_TRUE(s->Is<StorageTexture>());
diff --git a/src/inspector/inspector.cc b/src/inspector/inspector.cc
index c011a8e..a9f2f65 100644
--- a/src/inspector/inspector.cc
+++ b/src/inspector/inspector.cc
@@ -757,8 +757,8 @@
 
     auto* base_type = texture_type->type();
     entry.sampled_kind = BaseTypeToSampledKind(base_type);
-    entry.image_format = TypeImageFormatToResourceBindingImageFormat(
-        texture_type->image_format());
+    entry.image_format = TypeTexelFormatToResourceBindingTexelFormat(
+        texture_type->texel_format());
 
     result.push_back(entry);
   }
diff --git a/src/inspector/inspector_test.cc b/src/inspector/inspector_test.cc
index e2c0eae..1c2d6da 100644
--- a/src/inspector/inspector_test.cc
+++ b/src/inspector/inspector_test.cc
@@ -130,11 +130,11 @@
 
 typedef std::tuple<ast::TextureDimension, ResourceBinding::TextureDimension>
     DimensionParams;
-typedef std::tuple<ast::ImageFormat,
-                   ResourceBinding::ImageFormat,
+typedef std::tuple<ast::TexelFormat,
+                   ResourceBinding::TexelFormat,
                    ResourceBinding::SampledKind>
-    ImageFormatParams;
-typedef std::tuple<DimensionParams, ImageFormatParams>
+    TexelFormatParams;
+typedef std::tuple<DimensionParams, TexelFormatParams>
     GetStorageTextureTestParams;
 class InspectorGetStorageTextureResourceBindingsTestWithParam
     : public InspectorBuilder,
@@ -1292,7 +1292,7 @@
   Func("depth_ms_func", {}, ty.void_(), {Ignore("depth_ms_texture")});
 
   auto* st_type = MakeStorageTextureTypes(ast::TextureDimension::k2d,
-                                          ast::ImageFormat::kR32Uint);
+                                          ast::TexelFormat::kR32Uint);
   AddStorageTexture("st_var", st_type, 4, 0);
   MakeStorageTextureBodyFunction("st_func", "st_var", ty.vec2<i32>(), {});
 
@@ -2379,15 +2379,15 @@
 
 TEST_P(InspectorGetStorageTextureResourceBindingsTestWithParam, Simple) {
   DimensionParams dim_params;
-  ImageFormatParams format_params;
+  TexelFormatParams format_params;
   std::tie(dim_params, format_params) = GetParam();
 
   ast::TextureDimension dim;
   ResourceBinding::TextureDimension expected_dim;
   std::tie(dim, expected_dim) = dim_params;
 
-  ast::ImageFormat format;
-  ResourceBinding::ImageFormat expected_format;
+  ast::TexelFormat format;
+  ResourceBinding::TexelFormat expected_format;
   ResourceBinding::SampledKind expected_kind;
   std::tie(format, expected_format, expected_kind) = format_params;
 
@@ -2445,53 +2445,53 @@
             std::make_tuple(ast::TextureDimension::k3d,
                             ResourceBinding::TextureDimension::k3d)),
         testing::Values(
-            std::make_tuple(ast::ImageFormat::kR32Float,
-                            ResourceBinding::ImageFormat::kR32Float,
+            std::make_tuple(ast::TexelFormat::kR32Float,
+                            ResourceBinding::TexelFormat::kR32Float,
                             ResourceBinding::SampledKind::kFloat),
-            std::make_tuple(ast::ImageFormat::kR32Sint,
-                            ResourceBinding::ImageFormat::kR32Sint,
+            std::make_tuple(ast::TexelFormat::kR32Sint,
+                            ResourceBinding::TexelFormat::kR32Sint,
                             ResourceBinding::SampledKind::kSInt),
-            std::make_tuple(ast::ImageFormat::kR32Uint,
-                            ResourceBinding::ImageFormat::kR32Uint,
+            std::make_tuple(ast::TexelFormat::kR32Uint,
+                            ResourceBinding::TexelFormat::kR32Uint,
                             ResourceBinding::SampledKind::kUInt),
-            std::make_tuple(ast::ImageFormat::kRg32Float,
-                            ResourceBinding::ImageFormat::kRg32Float,
+            std::make_tuple(ast::TexelFormat::kRg32Float,
+                            ResourceBinding::TexelFormat::kRg32Float,
                             ResourceBinding::SampledKind::kFloat),
-            std::make_tuple(ast::ImageFormat::kRg32Sint,
-                            ResourceBinding::ImageFormat::kRg32Sint,
+            std::make_tuple(ast::TexelFormat::kRg32Sint,
+                            ResourceBinding::TexelFormat::kRg32Sint,
                             ResourceBinding::SampledKind::kSInt),
-            std::make_tuple(ast::ImageFormat::kRg32Uint,
-                            ResourceBinding::ImageFormat::kRg32Uint,
+            std::make_tuple(ast::TexelFormat::kRg32Uint,
+                            ResourceBinding::TexelFormat::kRg32Uint,
                             ResourceBinding::SampledKind::kUInt),
-            std::make_tuple(ast::ImageFormat::kRgba16Float,
-                            ResourceBinding::ImageFormat::kRgba16Float,
+            std::make_tuple(ast::TexelFormat::kRgba16Float,
+                            ResourceBinding::TexelFormat::kRgba16Float,
                             ResourceBinding::SampledKind::kFloat),
-            std::make_tuple(ast::ImageFormat::kRgba16Sint,
-                            ResourceBinding::ImageFormat::kRgba16Sint,
+            std::make_tuple(ast::TexelFormat::kRgba16Sint,
+                            ResourceBinding::TexelFormat::kRgba16Sint,
                             ResourceBinding::SampledKind::kSInt),
-            std::make_tuple(ast::ImageFormat::kRgba16Uint,
-                            ResourceBinding::ImageFormat::kRgba16Uint,
+            std::make_tuple(ast::TexelFormat::kRgba16Uint,
+                            ResourceBinding::TexelFormat::kRgba16Uint,
                             ResourceBinding::SampledKind::kUInt),
-            std::make_tuple(ast::ImageFormat::kRgba32Float,
-                            ResourceBinding::ImageFormat::kRgba32Float,
+            std::make_tuple(ast::TexelFormat::kRgba32Float,
+                            ResourceBinding::TexelFormat::kRgba32Float,
                             ResourceBinding::SampledKind::kFloat),
-            std::make_tuple(ast::ImageFormat::kRgba32Sint,
-                            ResourceBinding::ImageFormat::kRgba32Sint,
+            std::make_tuple(ast::TexelFormat::kRgba32Sint,
+                            ResourceBinding::TexelFormat::kRgba32Sint,
                             ResourceBinding::SampledKind::kSInt),
-            std::make_tuple(ast::ImageFormat::kRgba32Uint,
-                            ResourceBinding::ImageFormat::kRgba32Uint,
+            std::make_tuple(ast::TexelFormat::kRgba32Uint,
+                            ResourceBinding::TexelFormat::kRgba32Uint,
                             ResourceBinding::SampledKind::kUInt),
-            std::make_tuple(ast::ImageFormat::kRgba8Sint,
-                            ResourceBinding::ImageFormat::kRgba8Sint,
+            std::make_tuple(ast::TexelFormat::kRgba8Sint,
+                            ResourceBinding::TexelFormat::kRgba8Sint,
                             ResourceBinding::SampledKind::kSInt),
-            std::make_tuple(ast::ImageFormat::kRgba8Snorm,
-                            ResourceBinding::ImageFormat::kRgba8Snorm,
+            std::make_tuple(ast::TexelFormat::kRgba8Snorm,
+                            ResourceBinding::TexelFormat::kRgba8Snorm,
                             ResourceBinding::SampledKind::kFloat),
-            std::make_tuple(ast::ImageFormat::kRgba8Uint,
-                            ResourceBinding::ImageFormat::kRgba8Uint,
+            std::make_tuple(ast::TexelFormat::kRgba8Uint,
+                            ResourceBinding::TexelFormat::kRgba8Uint,
                             ResourceBinding::SampledKind::kUInt),
-            std::make_tuple(ast::ImageFormat::kRgba8Unorm,
-                            ResourceBinding::ImageFormat::kRgba8Unorm,
+            std::make_tuple(ast::TexelFormat::kRgba8Unorm,
+                            ResourceBinding::TexelFormat::kRgba8Unorm,
                             ResourceBinding::SampledKind::kFloat))));
 
 TEST_P(InspectorGetDepthTextureResourceBindingsTestWithParam,
diff --git a/src/inspector/resource_binding.cc b/src/inspector/resource_binding.cc
index e9f6e8a..e0862ba 100644
--- a/src/inspector/resource_binding.cc
+++ b/src/inspector/resource_binding.cc
@@ -71,83 +71,83 @@
   }
 }
 
-ResourceBinding::ImageFormat TypeImageFormatToResourceBindingImageFormat(
-    const ast::ImageFormat& image_format) {
+ResourceBinding::TexelFormat TypeTexelFormatToResourceBindingTexelFormat(
+    const ast::TexelFormat& image_format) {
   switch (image_format) {
-    case ast::ImageFormat::kR8Unorm:
-      return ResourceBinding::ImageFormat::kR8Unorm;
-    case ast::ImageFormat::kR8Snorm:
-      return ResourceBinding::ImageFormat::kR8Snorm;
-    case ast::ImageFormat::kR8Uint:
-      return ResourceBinding::ImageFormat::kR8Uint;
-    case ast::ImageFormat::kR8Sint:
-      return ResourceBinding::ImageFormat::kR8Sint;
-    case ast::ImageFormat::kR16Uint:
-      return ResourceBinding::ImageFormat::kR16Uint;
-    case ast::ImageFormat::kR16Sint:
-      return ResourceBinding::ImageFormat::kR16Sint;
-    case ast::ImageFormat::kR16Float:
-      return ResourceBinding::ImageFormat::kR16Float;
-    case ast::ImageFormat::kRg8Unorm:
-      return ResourceBinding::ImageFormat::kRg8Unorm;
-    case ast::ImageFormat::kRg8Snorm:
-      return ResourceBinding::ImageFormat::kRg8Snorm;
-    case ast::ImageFormat::kRg8Uint:
-      return ResourceBinding::ImageFormat::kRg8Uint;
-    case ast::ImageFormat::kRg8Sint:
-      return ResourceBinding::ImageFormat::kRg8Sint;
-    case ast::ImageFormat::kR32Uint:
-      return ResourceBinding::ImageFormat::kR32Uint;
-    case ast::ImageFormat::kR32Sint:
-      return ResourceBinding::ImageFormat::kR32Sint;
-    case ast::ImageFormat::kR32Float:
-      return ResourceBinding::ImageFormat::kR32Float;
-    case ast::ImageFormat::kRg16Uint:
-      return ResourceBinding::ImageFormat::kRg16Uint;
-    case ast::ImageFormat::kRg16Sint:
-      return ResourceBinding::ImageFormat::kRg16Sint;
-    case ast::ImageFormat::kRg16Float:
-      return ResourceBinding::ImageFormat::kRg16Float;
-    case ast::ImageFormat::kRgba8Unorm:
-      return ResourceBinding::ImageFormat::kRgba8Unorm;
-    case ast::ImageFormat::kRgba8UnormSrgb:
-      return ResourceBinding::ImageFormat::kRgba8UnormSrgb;
-    case ast::ImageFormat::kRgba8Snorm:
-      return ResourceBinding::ImageFormat::kRgba8Snorm;
-    case ast::ImageFormat::kRgba8Uint:
-      return ResourceBinding::ImageFormat::kRgba8Uint;
-    case ast::ImageFormat::kRgba8Sint:
-      return ResourceBinding::ImageFormat::kRgba8Sint;
-    case ast::ImageFormat::kBgra8Unorm:
-      return ResourceBinding::ImageFormat::kBgra8Unorm;
-    case ast::ImageFormat::kBgra8UnormSrgb:
-      return ResourceBinding::ImageFormat::kBgra8UnormSrgb;
-    case ast::ImageFormat::kRgb10A2Unorm:
-      return ResourceBinding::ImageFormat::kRgb10A2Unorm;
-    case ast::ImageFormat::kRg11B10Float:
-      return ResourceBinding::ImageFormat::kRg11B10Float;
-    case ast::ImageFormat::kRg32Uint:
-      return ResourceBinding::ImageFormat::kRg32Uint;
-    case ast::ImageFormat::kRg32Sint:
-      return ResourceBinding::ImageFormat::kRg32Sint;
-    case ast::ImageFormat::kRg32Float:
-      return ResourceBinding::ImageFormat::kRg32Float;
-    case ast::ImageFormat::kRgba16Uint:
-      return ResourceBinding::ImageFormat::kRgba16Uint;
-    case ast::ImageFormat::kRgba16Sint:
-      return ResourceBinding::ImageFormat::kRgba16Sint;
-    case ast::ImageFormat::kRgba16Float:
-      return ResourceBinding::ImageFormat::kRgba16Float;
-    case ast::ImageFormat::kRgba32Uint:
-      return ResourceBinding::ImageFormat::kRgba32Uint;
-    case ast::ImageFormat::kRgba32Sint:
-      return ResourceBinding::ImageFormat::kRgba32Sint;
-    case ast::ImageFormat::kRgba32Float:
-      return ResourceBinding::ImageFormat::kRgba32Float;
-    case ast::ImageFormat::kNone:
-      return ResourceBinding::ImageFormat::kNone;
+    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:
+      return ResourceBinding::TexelFormat::kRg32Sint;
+    case ast::TexelFormat::kRg32Float:
+      return ResourceBinding::TexelFormat::kRg32Float;
+    case ast::TexelFormat::kRgba16Uint:
+      return ResourceBinding::TexelFormat::kRgba16Uint;
+    case ast::TexelFormat::kRgba16Sint:
+      return ResourceBinding::TexelFormat::kRgba16Sint;
+    case ast::TexelFormat::kRgba16Float:
+      return ResourceBinding::TexelFormat::kRgba16Float;
+    case ast::TexelFormat::kRgba32Uint:
+      return ResourceBinding::TexelFormat::kRgba32Uint;
+    case ast::TexelFormat::kRgba32Sint:
+      return ResourceBinding::TexelFormat::kRgba32Sint;
+    case ast::TexelFormat::kRgba32Float:
+      return ResourceBinding::TexelFormat::kRgba32Float;
+    case ast::TexelFormat::kNone:
+      return ResourceBinding::TexelFormat::kNone;
   }
-  return ResourceBinding::ImageFormat::kNone;
+  return ResourceBinding::TexelFormat::kNone;
 }
 
 }  // namespace inspector
diff --git a/src/inspector/resource_binding.h b/src/inspector/resource_binding.h
index 6558019..cb84917 100644
--- a/src/inspector/resource_binding.h
+++ b/src/inspector/resource_binding.h
@@ -47,8 +47,8 @@
   /// in SPIR-V OpTypeImage.
   enum class SampledKind { kUnknown = -1, kFloat, kUInt, kSInt };
 
-  /// Enumerator of texture image formats
-  enum class ImageFormat {
+  /// Enumerator of texel image formats
+  enum class TexelFormat {
     kNone = -1,
     kR8Unorm,
     kR8Snorm,
@@ -87,6 +87,9 @@
     kRgba32Float,
   };
 
+  /// Renamed field [DEPRECATED]
+  using ImageFormat = TexelFormat;
+
   /// kXXX maps to entries returned by GetXXXResourceBindings call.
   enum class ResourceType {
     kUniformBuffer,
@@ -118,7 +121,7 @@
   /// Kind of data being sampled, if defined.
   SampledKind sampled_kind;
   /// Format of data, if defined.
-  ImageFormat image_format;
+  TexelFormat image_format;
 };
 
 /// Convert from internal ast::TextureDimension to public
@@ -134,12 +137,12 @@
 /// @returns the publicly visible equivalent
 ResourceBinding::SampledKind BaseTypeToSampledKind(const sem::Type* base_type);
 
-/// Convert from internal ast::ImageFormat to public
-/// ResourceBinding::ImageFormat
+/// Convert from internal ast::TexelFormat to public
+/// ResourceBinding::TexelFormat
 /// @param image_format internal value to convert from
 /// @returns the publicly visible equivalent
-ResourceBinding::ImageFormat TypeImageFormatToResourceBindingImageFormat(
-    const ast::ImageFormat& image_format);
+ResourceBinding::TexelFormat TypeTexelFormatToResourceBindingTexelFormat(
+    const ast::TexelFormat& image_format);
 
 }  // namespace inspector
 }  // namespace tint
diff --git a/src/inspector/test_inspector_builder.cc b/src/inspector/test_inspector_builder.cc
index 55c16f6..3548eea 100644
--- a/src/inspector/test_inspector_builder.cc
+++ b/src/inspector/test_inspector_builder.cc
@@ -321,7 +321,7 @@
 
 const ast::Type* InspectorBuilder::MakeStorageTextureTypes(
     ast::TextureDimension dim,
-    ast::ImageFormat format) {
+    ast::TexelFormat format) {
   return ty.storage_texture(dim, format, ast::Access::kWrite);
 }
 
diff --git a/src/inspector/test_inspector_builder.h b/src/inspector/test_inspector_builder.h
index e3783ab..b041419 100644
--- a/src/inspector/test_inspector_builder.h
+++ b/src/inspector/test_inspector_builder.h
@@ -332,10 +332,10 @@
 
   /// Generates appropriate types for a Read-Only StorageTexture
   /// @param dim the texture dimension of the storage texture
-  /// @param format the image format of the storage texture
+  /// @param format the texel format of the storage texture
   /// @returns the storage texture type
   const ast::Type* MakeStorageTextureTypes(ast::TextureDimension dim,
-                                           ast::ImageFormat format);
+                                           ast::TexelFormat format);
 
   /// Adds a storage texture variable to the program
   /// @param name the name of the variable
diff --git a/src/intrinsic_table.cc b/src/intrinsic_table.cc
index 7c0f13d..23c9e30 100644
--- a/src/intrinsic_table.cc
+++ b/src/intrinsic_table.cc
@@ -290,7 +290,7 @@
 // TODO(bclayton): See if we can move more of this hand-rolled code to the
 // template
 ////////////////////////////////////////////////////////////////////////////////
-using TexelFormat = ast::ImageFormat;
+using TexelFormat = ast::TexelFormat;
 using Access = ast::Access;
 using StorageClass = ast::StorageClass;
 using ParameterUsage = sem::ParameterUsage;
@@ -619,7 +619,7 @@
   }
   if (auto* v = ty->As<sem::StorageTexture>()) {
     if (v->dim() == dim) {
-      F = Number(static_cast<uint32_t>(v->image_format()));
+      F = Number(static_cast<uint32_t>(v->texel_format()));
       A = Number(static_cast<uint32_t>(v->access()));
       return true;
     }
diff --git a/src/intrinsic_table_test.cc b/src/intrinsic_table_test.cc
index e1614b0..dbb759e 100644
--- a/src/intrinsic_table_test.cc
+++ b/src/intrinsic_table_test.cc
@@ -394,9 +394,9 @@
   auto* vec2_i32 = create<sem::Vector>(i32, 2);
   auto* vec4_f32 = create<sem::Vector>(f32, 4);
   auto* subtype =
-      sem::StorageTexture::SubtypeFor(ast::ImageFormat::kR32Float, Types());
+      sem::StorageTexture::SubtypeFor(ast::TexelFormat::kR32Float, Types());
   auto* tex = create<sem::StorageTexture>(ast::TextureDimension::k2d,
-                                          ast::ImageFormat::kR32Float,
+                                          ast::TexelFormat::kR32Float,
                                           ast::Access::kWrite, subtype);
 
   auto* result = table->Lookup(IntrinsicType::kTextureStore,
diff --git a/src/program_builder.h b/src/program_builder.h
index b724328..2d97ad6 100644
--- a/src/program_builder.h
+++ b/src/program_builder.h
@@ -901,11 +901,11 @@
     }
 
     /// @param dims the dimensionality of the texture
-    /// @param format the image format of the texture
+    /// @param format the texel format of the texture
     /// @param access the access control of the texture
     /// @returns the storage texture
     const ast::StorageTexture* storage_texture(ast::TextureDimension dims,
-                                               ast::ImageFormat format,
+                                               ast::TexelFormat format,
                                                ast::Access access) const {
       auto* subtype = ast::StorageTexture::SubtypeFor(format, *builder);
       return builder->create<ast::StorageTexture>(dims, format, subtype,
@@ -914,12 +914,12 @@
 
     /// @param source the Source of the node
     /// @param dims the dimensionality of the texture
-    /// @param format the image format of the texture
+    /// @param format the texel format of the texture
     /// @param access the access control of the texture
     /// @returns the storage texture
     const ast::StorageTexture* storage_texture(const Source& source,
                                                ast::TextureDimension dims,
-                                               ast::ImageFormat format,
+                                               ast::TexelFormat format,
                                                ast::Access access) const {
       auto* subtype = ast::StorageTexture::SubtypeFor(format, *builder);
       return builder->create<ast::StorageTexture>(source, dims, format, subtype,
diff --git a/src/reader/spirv/enum_converter.cc b/src/reader/spirv/enum_converter.cc
index 82421cc..843076e 100644
--- a/src/reader/spirv/enum_converter.cc
+++ b/src/reader/spirv/enum_converter.cc
@@ -130,53 +130,53 @@
   return ast::TextureDimension::kNone;
 }
 
-ast::ImageFormat EnumConverter::ToImageFormat(SpvImageFormat fmt) {
+ast::TexelFormat EnumConverter::ToTexelFormat(SpvImageFormat fmt) {
   switch (fmt) {
     case SpvImageFormatUnknown:
-      return ast::ImageFormat::kNone;
+      return ast::TexelFormat::kNone;
 
     // 8 bit channels
     case SpvImageFormatRgba8:
-      return ast::ImageFormat::kRgba8Unorm;
+      return ast::TexelFormat::kRgba8Unorm;
     case SpvImageFormatRgba8Snorm:
-      return ast::ImageFormat::kRgba8Snorm;
+      return ast::TexelFormat::kRgba8Snorm;
     case SpvImageFormatRgba8ui:
-      return ast::ImageFormat::kRgba8Uint;
+      return ast::TexelFormat::kRgba8Uint;
     case SpvImageFormatRgba8i:
-      return ast::ImageFormat::kRgba8Sint;
+      return ast::TexelFormat::kRgba8Sint;
 
     // 16 bit channels
     case SpvImageFormatRgba16ui:
-      return ast::ImageFormat::kRgba16Uint;
+      return ast::TexelFormat::kRgba16Uint;
     case SpvImageFormatRgba16i:
-      return ast::ImageFormat::kRgba16Sint;
+      return ast::TexelFormat::kRgba16Sint;
     case SpvImageFormatRgba16f:
-      return ast::ImageFormat::kRgba16Float;
+      return ast::TexelFormat::kRgba16Float;
 
     // 32 bit channels
     case SpvImageFormatR32ui:
-      return ast::ImageFormat::kR32Uint;
+      return ast::TexelFormat::kR32Uint;
     case SpvImageFormatR32i:
-      return ast::ImageFormat::kR32Sint;
+      return ast::TexelFormat::kR32Sint;
     case SpvImageFormatR32f:
-      return ast::ImageFormat::kR32Float;
+      return ast::TexelFormat::kR32Float;
     case SpvImageFormatRg32ui:
-      return ast::ImageFormat::kRg32Uint;
+      return ast::TexelFormat::kRg32Uint;
     case SpvImageFormatRg32i:
-      return ast::ImageFormat::kRg32Sint;
+      return ast::TexelFormat::kRg32Sint;
     case SpvImageFormatRg32f:
-      return ast::ImageFormat::kRg32Float;
+      return ast::TexelFormat::kRg32Float;
     case SpvImageFormatRgba32ui:
-      return ast::ImageFormat::kRgba32Uint;
+      return ast::TexelFormat::kRgba32Uint;
     case SpvImageFormatRgba32i:
-      return ast::ImageFormat::kRgba32Sint;
+      return ast::TexelFormat::kRgba32Sint;
     case SpvImageFormatRgba32f:
-      return ast::ImageFormat::kRgba32Float;
+      return ast::TexelFormat::kRgba32Float;
     default:
       break;
   }
   Fail() << "invalid image format: " << int(fmt);
-  return ast::ImageFormat::kNone;
+  return ast::TexelFormat::kNone;
 }
 
 }  // namespace spirv
diff --git a/src/reader/spirv/enum_converter.h b/src/reader/spirv/enum_converter.h
index 25b4971..66f0c7b 100644
--- a/src/reader/spirv/enum_converter.h
+++ b/src/reader/spirv/enum_converter.h
@@ -60,11 +60,11 @@
   /// @returns a Tint AST texture dimension
   ast::TextureDimension ToDim(SpvDim dim, bool arrayed);
 
-  /// Converts a SPIR-V Image Format to a Tint ImageFormat
+  /// Converts a SPIR-V Image Format to a TexelFormat
   /// On failure, logs an error and returns kNone
   /// @param fmt the SPIR-V format
   /// @returns a Tint AST format
-  ast::ImageFormat ToImageFormat(SpvImageFormat fmt);
+  ast::TexelFormat ToTexelFormat(SpvImageFormat fmt);
 
  private:
   /// Registers a failure and returns a stream for log diagnostics.
diff --git a/src/reader/spirv/enum_converter_test.cc b/src/reader/spirv/enum_converter_test.cc
index d19054e..4c9cf5c 100644
--- a/src/reader/spirv/enum_converter_test.cc
+++ b/src/reader/spirv/enum_converter_test.cc
@@ -312,21 +312,21 @@
         DimCase{SpvDimBuffer, true, false, ast::TextureDimension::kNone},
         DimCase{SpvDimSubpassData, true, false, ast::TextureDimension::kNone}));
 
-// ImageFormat
+// TexelFormat
 
-struct ImageFormatCase {
+struct TexelFormatCase {
   SpvImageFormat format;
   bool expect_success;
-  ast::ImageFormat expected;
+  ast::TexelFormat expected;
 };
-inline std::ostream& operator<<(std::ostream& out, ImageFormatCase ifc) {
-  out << "ImageFormatCase{ SpvImageFormat:" << int(ifc.format)
+inline std::ostream& operator<<(std::ostream& out, TexelFormatCase ifc) {
+  out << "TexelFormatCase{ SpvImageFormat:" << int(ifc.format)
       << " expect_success?:" << int(ifc.expect_success)
       << " expected:" << int(ifc.expected) << "}";
   return out;
 }
 
-class SpvImageFormatTest : public testing::TestWithParam<ImageFormatCase> {
+class SpvImageFormatTest : public testing::TestWithParam<TexelFormatCase> {
  public:
   SpvImageFormatTest()
       : success_(true),
@@ -345,7 +345,7 @@
 TEST_P(SpvImageFormatTest, Samples) {
   const auto params = GetParam();
 
-  const auto result = converter_.ToImageFormat(params.format);
+  const auto result = converter_.ToTexelFormat(params.format);
   EXPECT_EQ(success_, params.expect_success) << params;
   if (params.expect_success) {
     EXPECT_EQ(result, params.expected);
@@ -361,68 +361,68 @@
     SpvImageFormatTest,
     testing::Values(
         // Unknown.  This is used for sampled images.
-        ImageFormatCase{SpvImageFormatUnknown, true, ast::ImageFormat::kNone},
+        TexelFormatCase{SpvImageFormatUnknown, true, ast::TexelFormat::kNone},
         // 8 bit channels
-        ImageFormatCase{SpvImageFormatRgba8, true,
-                        ast::ImageFormat::kRgba8Unorm},
-        ImageFormatCase{SpvImageFormatRgba8Snorm, true,
-                        ast::ImageFormat::kRgba8Snorm},
-        ImageFormatCase{SpvImageFormatRgba8ui, true,
-                        ast::ImageFormat::kRgba8Uint},
-        ImageFormatCase{SpvImageFormatRgba8i, true,
-                        ast::ImageFormat::kRgba8Sint},
+        TexelFormatCase{SpvImageFormatRgba8, true,
+                        ast::TexelFormat::kRgba8Unorm},
+        TexelFormatCase{SpvImageFormatRgba8Snorm, true,
+                        ast::TexelFormat::kRgba8Snorm},
+        TexelFormatCase{SpvImageFormatRgba8ui, true,
+                        ast::TexelFormat::kRgba8Uint},
+        TexelFormatCase{SpvImageFormatRgba8i, true,
+                        ast::TexelFormat::kRgba8Sint},
         // 16 bit channels
-        ImageFormatCase{SpvImageFormatRgba16ui, true,
-                        ast::ImageFormat::kRgba16Uint},
-        ImageFormatCase{SpvImageFormatRgba16i, true,
-                        ast::ImageFormat::kRgba16Sint},
-        ImageFormatCase{SpvImageFormatRgba16f, true,
-                        ast::ImageFormat::kRgba16Float},
+        TexelFormatCase{SpvImageFormatRgba16ui, true,
+                        ast::TexelFormat::kRgba16Uint},
+        TexelFormatCase{SpvImageFormatRgba16i, true,
+                        ast::TexelFormat::kRgba16Sint},
+        TexelFormatCase{SpvImageFormatRgba16f, true,
+                        ast::TexelFormat::kRgba16Float},
         // 32 bit channels
         // ... 1 channel
-        ImageFormatCase{SpvImageFormatR32ui, true, ast::ImageFormat::kR32Uint},
-        ImageFormatCase{SpvImageFormatR32i, true, ast::ImageFormat::kR32Sint},
-        ImageFormatCase{SpvImageFormatR32f, true, ast::ImageFormat::kR32Float},
+        TexelFormatCase{SpvImageFormatR32ui, true, ast::TexelFormat::kR32Uint},
+        TexelFormatCase{SpvImageFormatR32i, true, ast::TexelFormat::kR32Sint},
+        TexelFormatCase{SpvImageFormatR32f, true, ast::TexelFormat::kR32Float},
         // ... 2 channels
-        ImageFormatCase{SpvImageFormatRg32ui, true,
-                        ast::ImageFormat::kRg32Uint},
-        ImageFormatCase{SpvImageFormatRg32i, true, ast::ImageFormat::kRg32Sint},
-        ImageFormatCase{SpvImageFormatRg32f, true,
-                        ast::ImageFormat::kRg32Float},
+        TexelFormatCase{SpvImageFormatRg32ui, true,
+                        ast::TexelFormat::kRg32Uint},
+        TexelFormatCase{SpvImageFormatRg32i, true, ast::TexelFormat::kRg32Sint},
+        TexelFormatCase{SpvImageFormatRg32f, true,
+                        ast::TexelFormat::kRg32Float},
         // ... 4 channels
-        ImageFormatCase{SpvImageFormatRgba32ui, true,
-                        ast::ImageFormat::kRgba32Uint},
-        ImageFormatCase{SpvImageFormatRgba32i, true,
-                        ast::ImageFormat::kRgba32Sint},
-        ImageFormatCase{SpvImageFormatRgba32f, true,
-                        ast::ImageFormat::kRgba32Float}));
+        TexelFormatCase{SpvImageFormatRgba32ui, true,
+                        ast::TexelFormat::kRgba32Uint},
+        TexelFormatCase{SpvImageFormatRgba32i, true,
+                        ast::TexelFormat::kRgba32Sint},
+        TexelFormatCase{SpvImageFormatRgba32f, true,
+                        ast::TexelFormat::kRgba32Float}));
 
 INSTANTIATE_TEST_SUITE_P(
     EnumConverterBad,
     SpvImageFormatTest,
     testing::Values(
         // Scanning in order from the SPIR-V spec.
-        ImageFormatCase{SpvImageFormatRg16f, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatR11fG11fB10f, false,
-                        ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatR16f, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRgb10A2, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRg16, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRg8, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatR16, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatR8, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRgba16Snorm, false,
-                        ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRg16Snorm, false,
-                        ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRg8Snorm, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRg16i, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRg8i, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatR8i, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRgb10a2ui, false,
-                        ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRg16ui, false, ast::ImageFormat::kNone},
-        ImageFormatCase{SpvImageFormatRg8ui, false, ast::ImageFormat::kNone}));
+        TexelFormatCase{SpvImageFormatRg16f, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatR11fG11fB10f, false,
+                        ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatR16f, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRgb10A2, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRg16, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRg8, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatR16, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatR8, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRgba16Snorm, false,
+                        ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRg16Snorm, false,
+                        ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRg8Snorm, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRg16i, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRg8i, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatR8i, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRgb10a2ui, false,
+                        ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRg16ui, false, ast::TexelFormat::kNone},
+        TexelFormatCase{SpvImageFormatRg8ui, false, ast::TexelFormat::kNone}));
 
 }  // namespace
 }  // namespace spirv
diff --git a/src/reader/spirv/parser_impl.cc b/src/reader/spirv/parser_impl.cc
index 92e57d1..8a5f48b 100644
--- a/src/reader/spirv/parser_impl.cc
+++ b/src/reader/spirv/parser_impl.cc
@@ -2505,8 +2505,8 @@
       }
     } else {
       const auto access = ast::Access::kWrite;
-      const auto format = enum_converter_.ToImageFormat(image_type->format());
-      if (format == ast::ImageFormat::kNone) {
+      const auto format = enum_converter_.ToTexelFormat(image_type->format());
+      if (format == ast::TexelFormat::kNone) {
         return nullptr;
       }
       ast_store_type = ty_.StorageTexture(dim, format, access);
@@ -2526,47 +2526,47 @@
   return result;
 }
 
-const Type* ParserImpl::GetComponentTypeForFormat(ast::ImageFormat format) {
+const Type* ParserImpl::GetComponentTypeForFormat(ast::TexelFormat format) {
   switch (format) {
-    case ast::ImageFormat::kR8Uint:
-    case ast::ImageFormat::kR16Uint:
-    case ast::ImageFormat::kRg8Uint:
-    case ast::ImageFormat::kR32Uint:
-    case ast::ImageFormat::kRg16Uint:
-    case ast::ImageFormat::kRgba8Uint:
-    case ast::ImageFormat::kRg32Uint:
-    case ast::ImageFormat::kRgba16Uint:
-    case ast::ImageFormat::kRgba32Uint:
+    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::ImageFormat::kR8Sint:
-    case ast::ImageFormat::kR16Sint:
-    case ast::ImageFormat::kRg8Sint:
-    case ast::ImageFormat::kR32Sint:
-    case ast::ImageFormat::kRg16Sint:
-    case ast::ImageFormat::kRgba8Sint:
-    case ast::ImageFormat::kRg32Sint:
-    case ast::ImageFormat::kRgba16Sint:
-    case ast::ImageFormat::kRgba32Sint:
+    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::ImageFormat::kR8Unorm:
-    case ast::ImageFormat::kRg8Unorm:
-    case ast::ImageFormat::kRgba8Unorm:
-    case ast::ImageFormat::kRgba8UnormSrgb:
-    case ast::ImageFormat::kBgra8Unorm:
-    case ast::ImageFormat::kBgra8UnormSrgb:
-    case ast::ImageFormat::kRgb10A2Unorm:
-    case ast::ImageFormat::kR8Snorm:
-    case ast::ImageFormat::kRg8Snorm:
-    case ast::ImageFormat::kRgba8Snorm:
-    case ast::ImageFormat::kR16Float:
-    case ast::ImageFormat::kR32Float:
-    case ast::ImageFormat::kRg16Float:
-    case ast::ImageFormat::kRg11B10Float:
-    case ast::ImageFormat::kRg32Float:
-    case ast::ImageFormat::kRgba16Float:
-    case ast::ImageFormat::kRgba32Float:
+    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:
       return ty_.F32();
     default:
       break;
@@ -2575,49 +2575,49 @@
   return nullptr;
 }
 
-unsigned ParserImpl::GetChannelCountForFormat(ast::ImageFormat format) {
+unsigned ParserImpl::GetChannelCountForFormat(ast::TexelFormat format) {
   switch (format) {
-    case ast::ImageFormat::kR16Float:
-    case ast::ImageFormat::kR16Sint:
-    case ast::ImageFormat::kR16Uint:
-    case ast::ImageFormat::kR32Float:
-    case ast::ImageFormat::kR32Sint:
-    case ast::ImageFormat::kR32Uint:
-    case ast::ImageFormat::kR8Sint:
-    case ast::ImageFormat::kR8Snorm:
-    case ast::ImageFormat::kR8Uint:
-    case ast::ImageFormat::kR8Unorm:
+    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::ImageFormat::kRg11B10Float:
-    case ast::ImageFormat::kRg16Float:
-    case ast::ImageFormat::kRg16Sint:
-    case ast::ImageFormat::kRg16Uint:
-    case ast::ImageFormat::kRg32Float:
-    case ast::ImageFormat::kRg32Sint:
-    case ast::ImageFormat::kRg32Uint:
-    case ast::ImageFormat::kRg8Sint:
-    case ast::ImageFormat::kRg8Snorm:
-    case ast::ImageFormat::kRg8Uint:
-    case ast::ImageFormat::kRg8Unorm:
+    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::ImageFormat::kBgra8Unorm:
-    case ast::ImageFormat::kBgra8UnormSrgb:
-    case ast::ImageFormat::kRgb10A2Unorm:
-    case ast::ImageFormat::kRgba16Float:
-    case ast::ImageFormat::kRgba16Sint:
-    case ast::ImageFormat::kRgba16Uint:
-    case ast::ImageFormat::kRgba32Float:
-    case ast::ImageFormat::kRgba32Sint:
-    case ast::ImageFormat::kRgba32Uint:
-    case ast::ImageFormat::kRgba8Sint:
-    case ast::ImageFormat::kRgba8Snorm:
-    case ast::ImageFormat::kRgba8Uint:
-    case ast::ImageFormat::kRgba8Unorm:
-    case ast::ImageFormat::kRgba8UnormSrgb:
+    case ast::TexelFormat::kBgra8Unorm:
+    case ast::TexelFormat::kBgra8UnormSrgb:
+    case ast::TexelFormat::kRgb10A2Unorm:
+    case ast::TexelFormat::kRgba16Float:
+    case ast::TexelFormat::kRgba16Sint:
+    case ast::TexelFormat::kRgba16Uint:
+    case ast::TexelFormat::kRgba32Float:
+    case ast::TexelFormat::kRgba32Sint:
+    case ast::TexelFormat::kRgba32Uint:
+    case ast::TexelFormat::kRgba8Sint:
+    case ast::TexelFormat::kRgba8Snorm:
+    case ast::TexelFormat::kRgba8Uint:
+    case ast::TexelFormat::kRgba8Unorm:
+    case ast::TexelFormat::kRgba8UnormSrgb:
       // Four channels
       return 4;
 
@@ -2628,7 +2628,7 @@
   return 0;
 }
 
-const Type* ParserImpl::GetTexelTypeForFormat(ast::ImageFormat format) {
+const Type* ParserImpl::GetTexelTypeForFormat(ast::TexelFormat format) {
   const auto* component_type = GetComponentTypeForFormat(format);
   if (!component_type) {
     return nullptr;
diff --git a/src/reader/spirv/parser_impl.h b/src/reader/spirv/parser_impl.h
index de9f71a..4a31473 100644
--- a/src/reader/spirv/parser_impl.h
+++ b/src/reader/spirv/parser_impl.h
@@ -637,19 +637,19 @@
   /// format.
   /// @param format image texel format
   /// @returns the component type, one of f32, i32, u32
-  const Type* GetComponentTypeForFormat(ast::ImageFormat format);
+  const Type* GetComponentTypeForFormat(ast::TexelFormat format);
 
   /// Returns the number of channels in the given image format.
   /// @param format image texel format
   /// @returns the number of channels in the format
-  unsigned GetChannelCountForFormat(ast::ImageFormat format);
+  unsigned GetChannelCountForFormat(ast::TexelFormat format);
 
   /// Returns the texel type corresponding to the given image format.
   /// This the WGSL type used for the texel parameter to textureStore.
   /// It's always a 4-element vector.
   /// @param format image texel format
   /// @returns the texel format
-  const Type* GetTexelTypeForFormat(ast::ImageFormat format);
+  const Type* GetTexelTypeForFormat(ast::TexelFormat format);
 
   /// Returns the SPIR-V instruction with the given ID, or nullptr.
   /// @param id the SPIR-V result ID
diff --git a/src/reader/spirv/parser_type.cc b/src/reader/spirv/parser_type.cc
index 63d5123..846ad69 100644
--- a/src/reader/spirv/parser_type.cc
+++ b/src/reader/spirv/parser_type.cc
@@ -19,8 +19,8 @@
 #include <utility>
 
 #include "src/program_builder.h"
-#include "src/utils/map.h"
 #include "src/utils/hash.h"
+#include "src/utils/map.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::reader::spirv::Type);
 TINT_INSTANTIATE_TYPEINFO(tint::reader::spirv::Void);
@@ -237,7 +237,7 @@
 }
 
 StorageTexture::StorageTexture(ast::TextureDimension d,
-                               ast::ImageFormat f,
+                               ast::TexelFormat f,
                                ast::Access a)
     : Base(d), format(f), access(a) {}
 StorageTexture::StorageTexture(const StorageTexture&) = default;
@@ -532,7 +532,7 @@
 
 const spirv::StorageTexture* TypeManager::StorageTexture(
     ast::TextureDimension dims,
-    ast::ImageFormat fmt,
+    ast::TexelFormat fmt,
     ast::Access access) {
   return utils::GetOrCreate(
       state->storage_textures_, spirv::StorageTexture(dims, fmt, access), [&] {
diff --git a/src/reader/spirv/parser_type.h b/src/reader/spirv/parser_type.h
index 4466a63..9317dde 100644
--- a/src/reader/spirv/parser_type.h
+++ b/src/reader/spirv/parser_type.h
@@ -422,7 +422,7 @@
   /// @param d the texture dimensions
   /// @param f the storage image format
   /// @param a the access control
-  StorageTexture(ast::TextureDimension d, ast::ImageFormat f, ast::Access a);
+  StorageTexture(ast::TextureDimension d, ast::TexelFormat f, ast::Access a);
 
   /// Copy constructor
   /// @param other the other type to copy
@@ -438,7 +438,7 @@
 #endif  // NDEBUG
 
   /// the storage image format
-  ast::ImageFormat const format;
+  ast::TexelFormat const format;
 
   /// the access control
   ast::Access const access;
@@ -595,7 +595,7 @@
   /// @return a StorageTexture type. Repeated calls with the same arguments will
   /// return the same pointer.
   const spirv::StorageTexture* StorageTexture(ast::TextureDimension d,
-                                              ast::ImageFormat f,
+                                              ast::TexelFormat f,
                                               ast::Access a);
 
  private:
diff --git a/src/reader/spirv/parser_type_test.cc b/src/reader/spirv/parser_type_test.cc
index 8818e3f..c683cdd 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::ImageFormat::kR16Sint, ast::Access::kRead),
+                              ast::TexelFormat::kR16Sint, ast::Access::kRead),
             ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::ImageFormat::kR16Sint, ast::Access::kRead));
+                              ast::TexelFormat::kR16Sint, 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::ImageFormat::kR16Sint, ast::Access::kRead),
+                              ast::TexelFormat::kR16Sint, ast::Access::kRead),
             ty.StorageTexture(ast::TextureDimension::k3d,
-                              ast::ImageFormat::kR16Sint, ast::Access::kRead));
+                              ast::TexelFormat::kR16Sint, ast::Access::kRead));
   EXPECT_NE(ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::ImageFormat::kR16Sint, ast::Access::kRead),
+                              ast::TexelFormat::kR16Sint, ast::Access::kRead),
             ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::ImageFormat::kR32Sint, ast::Access::kRead));
+                              ast::TexelFormat::kR32Sint, ast::Access::kRead));
   EXPECT_NE(ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::ImageFormat::kR16Sint, ast::Access::kRead),
+                              ast::TexelFormat::kR16Sint, ast::Access::kRead),
             ty.StorageTexture(ast::TextureDimension::k2d,
-                              ast::ImageFormat::kR16Sint, ast::Access::kWrite));
+                              ast::TexelFormat::kR16Sint, ast::Access::kWrite));
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index 725312d..adb259b 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -563,7 +563,7 @@
 //  | depth_texture_type
 //  | sampled_texture_type LESS_THAN type_decl GREATER_THAN
 //  | multisampled_texture_type LESS_THAN type_decl GREATER_THAN
-//  | storage_texture_type LESS_THAN image_storage_type
+//  | storage_texture_type LESS_THAN texel_format
 //                         COMMA access GREATER_THAN
 Maybe<const ast::Type*> ParserImpl::texture_sampler_types() {
   auto type = sampler_type();
@@ -607,9 +607,9 @@
   if (storage.matched) {
     const char* use = "storage texture type";
     using StorageTextureInfo =
-        std::pair<tint::ast::ImageFormat, tint::ast::Access>;
+        std::pair<tint::ast::TexelFormat, tint::ast::Access>;
     auto params = expect_lt_gt_block(use, [&]() -> Expect<StorageTextureInfo> {
-      auto format = expect_image_storage_type(use);
+      auto format = expect_texel_format(use);
       if (format.errored) {
         return Failure::kErrored;
       }
@@ -781,115 +781,115 @@
 //  | RGBA32UINT
 //  | RGBA32SINT
 //  | RGBA32FLOAT
-Expect<ast::ImageFormat> ParserImpl::expect_image_storage_type(
+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::ImageFormat::kBgra8Unorm;
+      return ast::TexelFormat::kBgra8Unorm;
     }
     if (s == "bgra8unorm_srgb") {
-      return ast::ImageFormat::kBgra8UnormSrgb;
+      return ast::TexelFormat::kBgra8UnormSrgb;
     }
     if (s == "r16float") {
-      return ast::ImageFormat::kR16Float;
+      return ast::TexelFormat::kR16Float;
     }
     if (s == "r16sint") {
-      return ast::ImageFormat::kR16Sint;
+      return ast::TexelFormat::kR16Sint;
     }
     if (s == "r16uint") {
-      return ast::ImageFormat::kR16Uint;
+      return ast::TexelFormat::kR16Uint;
     }
     if (s == "r32float") {
-      return ast::ImageFormat::kR32Float;
+      return ast::TexelFormat::kR32Float;
     }
     if (s == "r32sint") {
-      return ast::ImageFormat::kR32Sint;
+      return ast::TexelFormat::kR32Sint;
     }
     if (s == "r32uint") {
-      return ast::ImageFormat::kR32Uint;
+      return ast::TexelFormat::kR32Uint;
     }
     if (s == "r8sint") {
-      return ast::ImageFormat::kR8Sint;
+      return ast::TexelFormat::kR8Sint;
     }
     if (s == "r8snorm") {
-      return ast::ImageFormat::kR8Snorm;
+      return ast::TexelFormat::kR8Snorm;
     }
     if (s == "r8uint") {
-      return ast::ImageFormat::kR8Uint;
+      return ast::TexelFormat::kR8Uint;
     }
     if (s == "r8unorm") {
-      return ast::ImageFormat::kR8Unorm;
+      return ast::TexelFormat::kR8Unorm;
     }
     if (s == "rg11b10float") {
-      return ast::ImageFormat::kRg11B10Float;
+      return ast::TexelFormat::kRg11B10Float;
     }
     if (s == "rg16float") {
-      return ast::ImageFormat::kRg16Float;
+      return ast::TexelFormat::kRg16Float;
     }
     if (s == "rg16sint") {
-      return ast::ImageFormat::kRg16Sint;
+      return ast::TexelFormat::kRg16Sint;
     }
     if (s == "rg16uint") {
-      return ast::ImageFormat::kRg16Uint;
+      return ast::TexelFormat::kRg16Uint;
     }
     if (s == "rg32float") {
-      return ast::ImageFormat::kRg32Float;
+      return ast::TexelFormat::kRg32Float;
     }
     if (s == "rg32sint") {
-      return ast::ImageFormat::kRg32Sint;
+      return ast::TexelFormat::kRg32Sint;
     }
     if (s == "rg32uint") {
-      return ast::ImageFormat::kRg32Uint;
+      return ast::TexelFormat::kRg32Uint;
     }
     if (s == "rg8sint") {
-      return ast::ImageFormat::kRg8Sint;
+      return ast::TexelFormat::kRg8Sint;
     }
     if (s == "rg8snorm") {
-      return ast::ImageFormat::kRg8Snorm;
+      return ast::TexelFormat::kRg8Snorm;
     }
     if (s == "rg8uint") {
-      return ast::ImageFormat::kRg8Uint;
+      return ast::TexelFormat::kRg8Uint;
     }
     if (s == "rg8unorm") {
-      return ast::ImageFormat::kRg8Unorm;
+      return ast::TexelFormat::kRg8Unorm;
     }
     if (s == "rgb10a2unorm") {
-      return ast::ImageFormat::kRgb10A2Unorm;
+      return ast::TexelFormat::kRgb10A2Unorm;
     }
     if (s == "rgba16float") {
-      return ast::ImageFormat::kRgba16Float;
+      return ast::TexelFormat::kRgba16Float;
     }
     if (s == "rgba16sint") {
-      return ast::ImageFormat::kRgba16Sint;
+      return ast::TexelFormat::kRgba16Sint;
     }
     if (s == "rgba16uint") {
-      return ast::ImageFormat::kRgba16Uint;
+      return ast::TexelFormat::kRgba16Uint;
     }
     if (s == "rgba32float") {
-      return ast::ImageFormat::kRgba32Float;
+      return ast::TexelFormat::kRgba32Float;
     }
     if (s == "rgba32sint") {
-      return ast::ImageFormat::kRgba32Sint;
+      return ast::TexelFormat::kRgba32Sint;
     }
     if (s == "rgba32uint") {
-      return ast::ImageFormat::kRgba32Uint;
+      return ast::TexelFormat::kRgba32Uint;
     }
     if (s == "rgba8sint") {
-      return ast::ImageFormat::kRgba8Sint;
+      return ast::TexelFormat::kRgba8Sint;
     }
     if (s == "rgba8snorm") {
-      return ast::ImageFormat::kRgba8Snorm;
+      return ast::TexelFormat::kRgba8Snorm;
     }
     if (s == "rgba8uint") {
-      return ast::ImageFormat::kRgba8Uint;
+      return ast::TexelFormat::kRgba8Uint;
     }
     if (s == "rgba8unorm") {
-      return ast::ImageFormat::kRgba8Unorm;
+      return ast::TexelFormat::kRgba8Unorm;
     }
     if (s == "rgba8unorm_srgb") {
-      return ast::ImageFormat::kRgba8UnormSrgb;
+      return ast::TexelFormat::kRgba8UnormSrgb;
     }
   }
   return add_error(tok.source(), "invalid format", use);
diff --git a/src/reader/wgsl/parser_impl.h b/src/reader/wgsl/parser_impl.h
index 6f51e0e..2037150 100644
--- a/src/reader/wgsl/parser_impl.h
+++ b/src/reader/wgsl/parser_impl.h
@@ -469,10 +469,10 @@
   /// Parses a 'texture_external_type' grammar element
   /// @returns the parsed Type or nullptr if none matched
   Maybe<const ast::Type*> external_texture_type();
-  /// Parses a `image_storage_type` grammar element
+  /// Parses a `texel_format` grammar element
   /// @param use a description of what was being parsed if an error was raised
-  /// @returns returns the image format or kNone if none matched.
-  Expect<ast::ImageFormat> expect_image_storage_type(const std::string& use);
+  /// @returns returns the texel format or kNone if none matched.
+  Expect<ast::TexelFormat> expect_texel_format(const std::string& use);
   /// Parses a `function_header` grammar element
   /// @returns the parsed function header
   Maybe<FunctionHeader> function_header();
diff --git a/src/reader/wgsl/parser_impl_image_storage_type_test.cc b/src/reader/wgsl/parser_impl_texel_format_test.cc
similarity index 63%
rename from src/reader/wgsl/parser_impl_image_storage_type_test.cc
rename to src/reader/wgsl/parser_impl_texel_format_test.cc
index bafb777..8a0d5a7 100644
--- a/src/reader/wgsl/parser_impl_image_storage_type_test.cc
+++ b/src/reader/wgsl/parser_impl_texel_format_test.cc
@@ -21,7 +21,7 @@
 
 TEST_F(ParserImplTest, ImageStorageType_Invalid) {
   auto p = parser("1234");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_TRUE(t.errored);
   EXPECT_TRUE(p->has_error());
   EXPECT_EQ(p->error(), "1:1: invalid format for test");
@@ -29,281 +29,281 @@
 
 TEST_F(ParserImplTest, ImageStorageType_R8Unorm) {
   auto p = parser("r8unorm");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR8Unorm);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR8Snorm);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR8Uint);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR8Sint);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR16Uint);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR16Sint);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR16Float);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg8Unorm);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg8Snorm);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg8Uint);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg8Sint);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR32Uint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kR32Uint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_R32Sint) {
   auto p = parser("r32sint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR32Sint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kR32Sint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_R32Float) {
   auto p = parser("r32float");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kR32Float);
+  EXPECT_EQ(t.value, ast::TexelFormat::kR32Float);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rg16Uint) {
   auto p = parser("rg16uint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg16Uint);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg16Sint);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg16Float);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba8Unorm);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba8Unorm);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba8UnormSrgb) {
   auto p = parser("rgba8unorm_srgb");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba8UnormSrgb);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba8Snorm);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba8Snorm);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba8Uint) {
   auto p = parser("rgba8uint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba8Uint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba8Uint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba8Sint) {
   auto p = parser("rgba8sint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba8Sint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba8Sint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Bgra8Unorm) {
   auto p = parser("bgra8unorm");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kBgra8Unorm);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kBgra8UnormSrgb);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgb10A2Unorm);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg11B10Float);
+  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_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg32Uint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRg32Uint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rg32Sint) {
   auto p = parser("rg32sint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg32Sint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRg32Sint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rg32Float) {
   auto p = parser("rg32float");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRg32Float);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRg32Float);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba16Uint) {
   auto p = parser("rgba16uint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba16Uint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba16Uint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba16Sint) {
   auto p = parser("rgba16sint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba16Sint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba16Sint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba16Float) {
   auto p = parser("rgba16float");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba16Float);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba16Float);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba32Uint) {
   auto p = parser("rgba32uint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba32Uint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba32Uint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba32Sint) {
   auto p = parser("rgba32sint");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba32Sint);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba32Sint);
   EXPECT_FALSE(p->has_error());
 }
 
 TEST_F(ParserImplTest, ImageStorageType_Rgba32Float) {
   auto p = parser("rgba32float");
-  auto t = p->expect_image_storage_type("test");
+  auto t = p->expect_texel_format("test");
   EXPECT_FALSE(t.errored);
-  EXPECT_EQ(t.value, ast::ImageFormat::kRgba32Float);
+  EXPECT_EQ(t.value, ast::TexelFormat::kRgba32Float);
   EXPECT_FALSE(p->has_error());
 }
 
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 fbd8127..0b4af5c 100644
--- a/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
+++ b/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
@@ -194,7 +194,7 @@
 
   ASSERT_TRUE(t->Is<ast::Texture>());
   ASSERT_TRUE(t->Is<ast::StorageTexture>());
-  EXPECT_EQ(t->As<ast::StorageTexture>()->format, ast::ImageFormat::kR8Unorm);
+  EXPECT_EQ(t->As<ast::StorageTexture>()->format, ast::TexelFormat::kR8Unorm);
   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}}));
@@ -210,7 +210,7 @@
 
   ASSERT_TRUE(t->Is<ast::Texture>());
   ASSERT_TRUE(t->Is<ast::StorageTexture>());
-  EXPECT_EQ(t->As<ast::StorageTexture>()->format, ast::ImageFormat::kR16Float);
+  EXPECT_EQ(t->As<ast::StorageTexture>()->format, ast::TexelFormat::kR16Float);
   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}}));
diff --git a/src/resolver/assignment_validation_test.cc b/src/resolver/assignment_validation_test.cc
index 1981c87..f573161 100644
--- a/src/resolver/assignment_validation_test.cc
+++ b/src/resolver/assignment_validation_test.cc
@@ -227,7 +227,7 @@
 
   auto make_type = [&] {
     return ty.storage_texture(ast::TextureDimension::k1d,
-                              ast::ImageFormat::kRgba8Unorm,
+                              ast::TexelFormat::kRgba8Unorm,
                               ast::Access::kWrite);
   };
 
diff --git a/src/resolver/dependency_graph_test.cc b/src/resolver/dependency_graph_test.cc
index dcbcd72..7186ef9 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::ImageFormat::kR16Float,
+                                   ast::TexelFormat::kR16Float,
                                    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 c0ba99d..ffe9388 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::ImageFormat format = ast::ImageFormat::kR16Float;
+  ast::TexelFormat format = ast::TexelFormat::kR16Float;
 };
 inline std::ostream& operator<<(std::ostream& out, TextureTestParams data) {
   out << data.dim << "_" << data.type;
diff --git a/src/resolver/resolver_validation.cc b/src/resolver/resolver_validation.cc
index 117eb25..a457ec3 100644
--- a/src/resolver/resolver_validation.cc
+++ b/src/resolver/resolver_validation.cc
@@ -95,24 +95,24 @@
   }
 }
 
-bool IsValidStorageTextureImageFormat(ast::ImageFormat format) {
+bool IsValidStorageTextureTexelFormat(ast::TexelFormat format) {
   switch (format) {
-    case ast::ImageFormat::kR32Uint:
-    case ast::ImageFormat::kR32Sint:
-    case ast::ImageFormat::kR32Float:
-    case ast::ImageFormat::kRg32Uint:
-    case ast::ImageFormat::kRg32Sint:
-    case ast::ImageFormat::kRg32Float:
-    case ast::ImageFormat::kRgba8Unorm:
-    case ast::ImageFormat::kRgba8Snorm:
-    case ast::ImageFormat::kRgba8Uint:
-    case ast::ImageFormat::kRgba8Sint:
-    case ast::ImageFormat::kRgba16Uint:
-    case ast::ImageFormat::kRgba16Sint:
-    case ast::ImageFormat::kRgba16Float:
-    case ast::ImageFormat::kRgba32Uint:
-    case ast::ImageFormat::kRgba32Sint:
-    case ast::ImageFormat::kRgba32Float:
+    case ast::TexelFormat::kR32Uint:
+    case ast::TexelFormat::kR32Sint:
+    case ast::TexelFormat::kR32Float:
+    case ast::TexelFormat::kRg32Uint:
+    case ast::TexelFormat::kRg32Sint:
+    case ast::TexelFormat::kRg32Float:
+    case ast::TexelFormat::kRgba8Unorm:
+    case ast::TexelFormat::kRgba8Snorm:
+    case ast::TexelFormat::kRgba8Uint:
+    case ast::TexelFormat::kRgba8Sint:
+    case ast::TexelFormat::kRgba16Uint:
+    case ast::TexelFormat::kRgba16Sint:
+    case ast::TexelFormat::kRgba16Float:
+    case ast::TexelFormat::kRgba32Uint:
+    case ast::TexelFormat::kRgba32Sint:
+    case ast::TexelFormat::kRgba32Float:
       return true;
     default:
       return false;
@@ -182,7 +182,7 @@
     return false;
   }
 
-  if (!IsValidStorageTextureImageFormat(t->format)) {
+  if (!IsValidStorageTextureTexelFormat(t->format)) {
     AddError(
         "image format must be one of the texel formats specified for storage "
         "textues in https://gpuweb.github.io/gpuweb/wgsl/#texel-formats",
diff --git a/src/resolver/type_validation_test.cc b/src/resolver/type_validation_test.cc
index aa9a7be..9da7dfa 100644
--- a/src/resolver/type_validation_test.cc
+++ b/src/resolver/type_validation_test.cc
@@ -837,7 +837,7 @@
 
   auto* st =
       ty.storage_texture(Source{{12, 34}}, params.dim,
-                         ast::ImageFormat::kR32Uint, ast::Access::kWrite);
+                         ast::TexelFormat::kR32Uint, ast::Access::kWrite);
 
   Global("a", st, ast::StorageClass::kNone,
          ast::DecorationList{GroupAndBinding(0, 0)});
@@ -856,46 +856,46 @@
                          testing::ValuesIn(Dimension_cases));
 
 struct FormatParams {
-  ast::ImageFormat format;
+  ast::TexelFormat format;
   bool is_valid;
 };
 
 static constexpr FormatParams format_cases[] = {
-    FormatParams{ast::ImageFormat::kBgra8Unorm, false},
-    FormatParams{ast::ImageFormat::kBgra8UnormSrgb, false},
-    FormatParams{ast::ImageFormat::kR16Float, false},
-    FormatParams{ast::ImageFormat::kR16Sint, false},
-    FormatParams{ast::ImageFormat::kR16Uint, false},
-    FormatParams{ast::ImageFormat::kR32Float, true},
-    FormatParams{ast::ImageFormat::kR32Sint, true},
-    FormatParams{ast::ImageFormat::kR32Uint, true},
-    FormatParams{ast::ImageFormat::kR8Sint, false},
-    FormatParams{ast::ImageFormat::kR8Snorm, false},
-    FormatParams{ast::ImageFormat::kR8Uint, false},
-    FormatParams{ast::ImageFormat::kR8Unorm, false},
-    FormatParams{ast::ImageFormat::kRg11B10Float, false},
-    FormatParams{ast::ImageFormat::kRg16Float, false},
-    FormatParams{ast::ImageFormat::kRg16Sint, false},
-    FormatParams{ast::ImageFormat::kRg16Uint, false},
-    FormatParams{ast::ImageFormat::kRg32Float, true},
-    FormatParams{ast::ImageFormat::kRg32Sint, true},
-    FormatParams{ast::ImageFormat::kRg32Uint, true},
-    FormatParams{ast::ImageFormat::kRg8Sint, false},
-    FormatParams{ast::ImageFormat::kRg8Snorm, false},
-    FormatParams{ast::ImageFormat::kRg8Uint, false},
-    FormatParams{ast::ImageFormat::kRg8Unorm, false},
-    FormatParams{ast::ImageFormat::kRgb10A2Unorm, false},
-    FormatParams{ast::ImageFormat::kRgba16Float, true},
-    FormatParams{ast::ImageFormat::kRgba16Sint, true},
-    FormatParams{ast::ImageFormat::kRgba16Uint, true},
-    FormatParams{ast::ImageFormat::kRgba32Float, true},
-    FormatParams{ast::ImageFormat::kRgba32Sint, true},
-    FormatParams{ast::ImageFormat::kRgba32Uint, true},
-    FormatParams{ast::ImageFormat::kRgba8Sint, true},
-    FormatParams{ast::ImageFormat::kRgba8Snorm, true},
-    FormatParams{ast::ImageFormat::kRgba8Uint, true},
-    FormatParams{ast::ImageFormat::kRgba8Unorm, true},
-    FormatParams{ast::ImageFormat::kRgba8UnormSrgb, false}};
+    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},
+    FormatParams{ast::TexelFormat::kRgba32Float, true},
+    FormatParams{ast::TexelFormat::kRgba32Sint, true},
+    FormatParams{ast::TexelFormat::kRgba32Uint, true},
+    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}};
 
 using StorageTextureFormatTest = ResolverTestWithParam<FormatParams>;
 TEST_P(StorageTextureFormatTest, All) {
@@ -951,7 +951,7 @@
 
   auto* st =
       ty.storage_texture(Source{{12, 34}}, ast::TextureDimension::k1d,
-                         ast::ImageFormat::kR32Uint, ast::Access::kUndefined);
+                         ast::TexelFormat::kR32Uint, ast::Access::kUndefined);
 
   Global("a", st, ast::StorageClass::kNone,
          ast::DecorationList{GroupAndBinding(0, 0)});
@@ -967,7 +967,7 @@
 
   auto* st =
       ty.storage_texture(Source{{12, 34}}, ast::TextureDimension::k1d,
-                         ast::ImageFormat::kR32Uint, ast::Access::kReadWrite);
+                         ast::TexelFormat::kR32Uint, ast::Access::kReadWrite);
 
   Global("a", st, ast::StorageClass::kNone, nullptr,
          ast::DecorationList{GroupAndBinding(0, 0)});
@@ -983,7 +983,7 @@
   // var a : texture_storage_1d<ru32int, read>;
 
   auto* st = ty.storage_texture(Source{{12, 34}}, ast::TextureDimension::k1d,
-                                ast::ImageFormat::kR32Uint, ast::Access::kRead);
+                                ast::TexelFormat::kR32Uint, ast::Access::kRead);
 
   Global("a", st, ast::StorageClass::kNone, nullptr,
          ast::DecorationList{GroupAndBinding(0, 0)});
@@ -999,7 +999,7 @@
   // var a : texture_storage_1d<ru32int, write>;
 
   auto* st =
-      ty.storage_texture(ast::TextureDimension::k1d, ast::ImageFormat::kR32Uint,
+      ty.storage_texture(ast::TextureDimension::k1d, ast::TexelFormat::kR32Uint,
                          ast::Access::kWrite);
 
   Global("a", st, ast::StorageClass::kNone, nullptr,
diff --git a/src/sem/storage_texture_type.cc b/src/sem/storage_texture_type.cc
index d690354..8f796db 100644
--- a/src/sem/storage_texture_type.cc
+++ b/src/sem/storage_texture_type.cc
@@ -22,10 +22,10 @@
 namespace sem {
 
 StorageTexture::StorageTexture(ast::TextureDimension dim,
-                               ast::ImageFormat format,
+                               ast::TexelFormat format,
                                ast::Access access,
                                sem::Type* subtype)
-    : Base(dim), image_format_(format), access_(access), subtype_(subtype) {}
+    : Base(dim), texel_format_(format), access_(access), subtype_(subtype) {}
 
 StorageTexture::StorageTexture(StorageTexture&&) = default;
 
@@ -33,66 +33,66 @@
 
 std::string StorageTexture::type_name() const {
   std::ostringstream out;
-  out << "__storage_texture_" << dim() << "_" << image_format_ << "_"
+  out << "__storage_texture_" << dim() << "_" << texel_format_ << "_"
       << access_;
   return out.str();
 }
 
 std::string StorageTexture::FriendlyName(const SymbolTable&) const {
   std::ostringstream out;
-  out << "texture_storage_" << dim() << "<" << image_format_ << ", " << access_
+  out << "texture_storage_" << dim() << "<" << texel_format_ << ", " << access_
       << ">";
   return out.str();
 }
 
-sem::Type* StorageTexture::SubtypeFor(ast::ImageFormat format,
+sem::Type* StorageTexture::SubtypeFor(ast::TexelFormat format,
                                       sem::Manager& type_mgr) {
   switch (format) {
-    case ast::ImageFormat::kR8Uint:
-    case ast::ImageFormat::kR16Uint:
-    case ast::ImageFormat::kRg8Uint:
-    case ast::ImageFormat::kR32Uint:
-    case ast::ImageFormat::kRg16Uint:
-    case ast::ImageFormat::kRgba8Uint:
-    case ast::ImageFormat::kRg32Uint:
-    case ast::ImageFormat::kRgba16Uint:
-    case ast::ImageFormat::kRgba32Uint: {
+    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 type_mgr.Get<sem::U32>();
     }
 
-    case ast::ImageFormat::kR8Sint:
-    case ast::ImageFormat::kR16Sint:
-    case ast::ImageFormat::kRg8Sint:
-    case ast::ImageFormat::kR32Sint:
-    case ast::ImageFormat::kRg16Sint:
-    case ast::ImageFormat::kRgba8Sint:
-    case ast::ImageFormat::kRg32Sint:
-    case ast::ImageFormat::kRgba16Sint:
-    case ast::ImageFormat::kRgba32Sint: {
+    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 type_mgr.Get<sem::I32>();
     }
 
-    case ast::ImageFormat::kR8Unorm:
-    case ast::ImageFormat::kRg8Unorm:
-    case ast::ImageFormat::kRgba8Unorm:
-    case ast::ImageFormat::kRgba8UnormSrgb:
-    case ast::ImageFormat::kBgra8Unorm:
-    case ast::ImageFormat::kBgra8UnormSrgb:
-    case ast::ImageFormat::kRgb10A2Unorm:
-    case ast::ImageFormat::kR8Snorm:
-    case ast::ImageFormat::kRg8Snorm:
-    case ast::ImageFormat::kRgba8Snorm:
-    case ast::ImageFormat::kR16Float:
-    case ast::ImageFormat::kR32Float:
-    case ast::ImageFormat::kRg16Float:
-    case ast::ImageFormat::kRg11B10Float:
-    case ast::ImageFormat::kRg32Float:
-    case ast::ImageFormat::kRgba16Float:
-    case ast::ImageFormat::kRgba32Float: {
+    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: {
       return type_mgr.Get<sem::F32>();
     }
 
-    case ast::ImageFormat::kNone:
+    case ast::TexelFormat::kNone:
       break;
   }
 
diff --git a/src/sem/storage_texture_type.h b/src/sem/storage_texture_type.h
index 216ed28..4881db8 100644
--- a/src/sem/storage_texture_type.h
+++ b/src/sem/storage_texture_type.h
@@ -31,11 +31,11 @@
  public:
   /// Constructor
   /// @param dim the dimensionality of the texture
-  /// @param format the image format of the texture
+  /// @param format the texel format of the texture
   /// @param access the access control type of the texture
   /// @param subtype the storage subtype. Use SubtypeFor() to calculate this.
   StorageTexture(ast::TextureDimension dim,
-                 ast::ImageFormat format,
+                 ast::TexelFormat format,
                  ast::Access access,
                  sem::Type* subtype);
 
@@ -46,8 +46,8 @@
   /// @returns the storage subtype
   Type* type() const { return subtype_; }
 
-  /// @returns the image format
-  ast::ImageFormat image_format() const { return image_format_; }
+  /// @returns the texel format
+  ast::TexelFormat texel_format() const { return texel_format_; }
 
   /// @returns the access control
   ast::Access access() const { return access_; }
@@ -62,11 +62,11 @@
 
   /// @param format the storage texture image format
   /// @param type_mgr the sem::Manager used to build the returned type
-  /// @returns the storage texture subtype for the given ImageFormat
-  static sem::Type* SubtypeFor(ast::ImageFormat format, sem::Manager& type_mgr);
+  /// @returns the storage texture subtype for the given TexelFormat
+  static sem::Type* SubtypeFor(ast::TexelFormat format, sem::Manager& type_mgr);
 
  private:
-  ast::ImageFormat const image_format_;
+  ast::TexelFormat const texel_format_;
   ast::Access const access_;
   Type* const subtype_;
 };
diff --git a/src/sem/storage_texture_type_test.cc b/src/sem/storage_texture_type_test.cc
index 8917af0..45e75d6 100644
--- a/src/sem/storage_texture_type_test.cc
+++ b/src/sem/storage_texture_type_test.cc
@@ -27,27 +27,27 @@
 
 TEST_F(StorageTextureTest, Dim) {
   auto* subtype =
-      StorageTexture::SubtypeFor(ast::ImageFormat::kRgba32Float, Types());
+      StorageTexture::SubtypeFor(ast::TexelFormat::kRgba32Float, Types());
   auto* s = create<StorageTexture>(ast::TextureDimension::k2dArray,
-                                   ast::ImageFormat::kRgba32Float,
+                                   ast::TexelFormat::kRgba32Float,
                                    ast::Access::kReadWrite, subtype);
   EXPECT_EQ(s->dim(), ast::TextureDimension::k2dArray);
 }
 
 TEST_F(StorageTextureTest, Format) {
   auto* subtype =
-      StorageTexture::SubtypeFor(ast::ImageFormat::kRgba32Float, Types());
+      StorageTexture::SubtypeFor(ast::TexelFormat::kRgba32Float, Types());
   auto* s = create<StorageTexture>(ast::TextureDimension::k2dArray,
-                                   ast::ImageFormat::kRgba32Float,
+                                   ast::TexelFormat::kRgba32Float,
                                    ast::Access::kReadWrite, subtype);
-  EXPECT_EQ(s->image_format(), ast::ImageFormat::kRgba32Float);
+  EXPECT_EQ(s->texel_format(), ast::TexelFormat::kRgba32Float);
 }
 
 TEST_F(StorageTextureTest, TypeName) {
   auto* subtype =
-      StorageTexture::SubtypeFor(ast::ImageFormat::kRgba32Float, Types());
+      StorageTexture::SubtypeFor(ast::TexelFormat::kRgba32Float, Types());
   auto* s = create<StorageTexture>(ast::TextureDimension::k2dArray,
-                                   ast::ImageFormat::kRgba32Float,
+                                   ast::TexelFormat::kRgba32Float,
                                    ast::Access::kReadWrite, subtype);
   EXPECT_EQ(s->type_name(),
             "__storage_texture_2d_array_rgba32float_read_write");
@@ -55,9 +55,9 @@
 
 TEST_F(StorageTextureTest, FriendlyName) {
   auto* subtype =
-      StorageTexture::SubtypeFor(ast::ImageFormat::kRgba32Float, Types());
+      StorageTexture::SubtypeFor(ast::TexelFormat::kRgba32Float, Types());
   auto* s = create<StorageTexture>(ast::TextureDimension::k2dArray,
-                                   ast::ImageFormat::kRgba32Float,
+                                   ast::TexelFormat::kRgba32Float,
                                    ast::Access::kReadWrite, subtype);
   EXPECT_EQ(s->FriendlyName(Symbols()),
             "texture_storage_2d_array<rgba32float, read_write>");
@@ -65,9 +65,9 @@
 
 TEST_F(StorageTextureTest, F32) {
   auto* subtype =
-      sem::StorageTexture::SubtypeFor(ast::ImageFormat::kRgba32Float, Types());
+      sem::StorageTexture::SubtypeFor(ast::TexelFormat::kRgba32Float, Types());
   Type* s = create<StorageTexture>(ast::TextureDimension::k2dArray,
-                                   ast::ImageFormat::kRgba32Float,
+                                   ast::TexelFormat::kRgba32Float,
                                    ast::Access::kReadWrite, subtype);
 
   auto program = Build();
@@ -80,9 +80,9 @@
 
 TEST_F(StorageTextureTest, U32) {
   auto* subtype =
-      sem::StorageTexture::SubtypeFor(ast::ImageFormat::kRg32Uint, Types());
+      sem::StorageTexture::SubtypeFor(ast::TexelFormat::kRg32Uint, Types());
   Type* s = create<StorageTexture>(ast::TextureDimension::k2dArray,
-                                   ast::ImageFormat::kRg32Uint,
+                                   ast::TexelFormat::kRg32Uint,
                                    ast::Access::kReadWrite, subtype);
 
   auto program = Build();
@@ -95,9 +95,9 @@
 
 TEST_F(StorageTextureTest, I32) {
   auto* subtype =
-      sem::StorageTexture::SubtypeFor(ast::ImageFormat::kRgba32Sint, Types());
+      sem::StorageTexture::SubtypeFor(ast::TexelFormat::kRgba32Sint, Types());
   Type* s = create<StorageTexture>(ast::TextureDimension::k2dArray,
-                                   ast::ImageFormat::kRgba32Sint,
+                                   ast::TexelFormat::kRgba32Sint,
                                    ast::Access::kReadWrite, subtype);
 
   auto program = Build();
diff --git a/src/transform/transform.cc b/src/transform/transform.cc
index bf94f08..a7ad0a2 100644
--- a/src/transform/transform.cc
+++ b/src/transform/transform.cc
@@ -152,7 +152,7 @@
   }
   if (auto* t = ty->As<sem::StorageTexture>()) {
     return ctx.dst->create<ast::StorageTexture>(
-        t->dim(), t->image_format(), CreateASTTypeFor(ctx, t->type()),
+        t->dim(), t->texel_format(), CreateASTTypeFor(ctx, t->type()),
         t->access());
   }
   if (auto* s = ty->As<sem::Sampler>()) {
diff --git a/src/writer/glsl/generator_impl_type_test.cc b/src/writer/glsl/generator_impl_type_test.cc
index 32b2142..2a042cd 100644
--- a/src/writer/glsl/generator_impl_type_test.cc
+++ b/src/writer/glsl/generator_impl_type_test.cc
@@ -507,7 +507,7 @@
 
 struct GlslStorageTextureData {
   ast::TextureDimension dim;
-  ast::ImageFormat imgfmt;
+  ast::TexelFormat imgfmt;
   std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out,
@@ -539,32 +539,32 @@
     GlslStorageTexturesTest,
     testing::Values(
         GlslStorageTextureData{ast::TextureDimension::k1d,
-                               ast::ImageFormat::kRgba8Unorm, "image1D tex;"},
+                               ast::TexelFormat::kRgba8Unorm, "image1D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k2d,
-                               ast::ImageFormat::kRgba16Float, "image2D tex;"},
+                               ast::TexelFormat::kRgba16Float, "image2D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k2dArray,
-                               ast::ImageFormat::kR32Float,
+                               ast::TexelFormat::kR32Float,
                                "image2DArray tex;"},
         GlslStorageTextureData{ast::TextureDimension::k3d,
-                               ast::ImageFormat::kRg32Float, "image3D tex;"},
+                               ast::TexelFormat::kRg32Float, "image3D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k1d,
-                               ast::ImageFormat::kRgba32Float, "image1D tex;"},
+                               ast::TexelFormat::kRgba32Float, "image1D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k2d,
-                               ast::ImageFormat::kRgba16Uint, "image2D tex;"},
+                               ast::TexelFormat::kRgba16Uint, "image2D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k2dArray,
-                               ast::ImageFormat::kR32Uint, "image2DArray tex;"},
+                               ast::TexelFormat::kR32Uint, "image2DArray tex;"},
         GlslStorageTextureData{ast::TextureDimension::k3d,
-                               ast::ImageFormat::kRg32Uint, "image3D tex;"},
+                               ast::TexelFormat::kRg32Uint, "image3D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k1d,
-                               ast::ImageFormat::kRgba32Uint, "image1D tex;"},
+                               ast::TexelFormat::kRgba32Uint, "image1D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k2d,
-                               ast::ImageFormat::kRgba16Sint, "image2D tex;"},
+                               ast::TexelFormat::kRgba16Sint, "image2D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k2dArray,
-                               ast::ImageFormat::kR32Sint, "image2DArray tex;"},
+                               ast::TexelFormat::kR32Sint, "image2DArray tex;"},
         GlslStorageTextureData{ast::TextureDimension::k3d,
-                               ast::ImageFormat::kRg32Sint, "image3D tex;"},
+                               ast::TexelFormat::kRg32Sint, "image3D tex;"},
         GlslStorageTextureData{ast::TextureDimension::k1d,
-                               ast::ImageFormat::kRgba32Sint, "image1D tex;"}));
+                               ast::TexelFormat::kRgba32Sint, "image1D tex;"}));
 
 }  // namespace
 }  // namespace glsl
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index 361684f..76dc529 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -76,26 +76,26 @@
 const char kTempNamePrefix[] = "tint_tmp";
 const char kSpecConstantPrefix[] = "WGSL_SPEC_CONSTANT_";
 
-const char* image_format_to_rwtexture_type(ast::ImageFormat image_format) {
+const char* image_format_to_rwtexture_type(ast::TexelFormat image_format) {
   switch (image_format) {
-    case ast::ImageFormat::kRgba8Unorm:
-    case ast::ImageFormat::kRgba8Snorm:
-    case ast::ImageFormat::kRgba16Float:
-    case ast::ImageFormat::kR32Float:
-    case ast::ImageFormat::kRg32Float:
-    case ast::ImageFormat::kRgba32Float:
+    case ast::TexelFormat::kRgba8Unorm:
+    case ast::TexelFormat::kRgba8Snorm:
+    case ast::TexelFormat::kRgba16Float:
+    case ast::TexelFormat::kR32Float:
+    case ast::TexelFormat::kRg32Float:
+    case ast::TexelFormat::kRgba32Float:
       return "float4";
-    case ast::ImageFormat::kRgba8Uint:
-    case ast::ImageFormat::kRgba16Uint:
-    case ast::ImageFormat::kR32Uint:
-    case ast::ImageFormat::kRg32Uint:
-    case ast::ImageFormat::kRgba32Uint:
+    case ast::TexelFormat::kRgba8Uint:
+    case ast::TexelFormat::kRgba16Uint:
+    case ast::TexelFormat::kR32Uint:
+    case ast::TexelFormat::kRg32Uint:
+    case ast::TexelFormat::kRgba32Uint:
       return "uint4";
-    case ast::ImageFormat::kRgba8Sint:
-    case ast::ImageFormat::kRgba16Sint:
-    case ast::ImageFormat::kR32Sint:
-    case ast::ImageFormat::kRg32Sint:
-    case ast::ImageFormat::kRgba32Sint:
+    case ast::TexelFormat::kRgba8Sint:
+    case ast::TexelFormat::kRgba16Sint:
+    case ast::TexelFormat::kR32Sint:
+    case ast::TexelFormat::kRg32Sint:
+    case ast::TexelFormat::kRgba32Sint:
       return "int4";
     default:
       return nullptr;
@@ -3623,11 +3623,11 @@
     }
 
     if (storage) {
-      auto* component = image_format_to_rwtexture_type(storage->image_format());
+      auto* component = image_format_to_rwtexture_type(storage->texel_format());
       if (component == nullptr) {
         TINT_ICE(Writer, diagnostics_)
-            << "Unsupported StorageTexture ImageFormat: "
-            << static_cast<int>(storage->image_format());
+            << "Unsupported StorageTexture TexelFormat: "
+            << static_cast<int>(storage->texel_format());
         return false;
       }
       out << "<" << component << ">";
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index 2ed4d66..5f8f55c 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -532,7 +532,7 @@
 
 struct HlslStorageTextureData {
   ast::TextureDimension dim;
-  ast::ImageFormat imgfmt;
+  ast::TexelFormat imgfmt;
   std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out,
@@ -561,43 +561,43 @@
     HlslStorageTexturesTest,
     testing::Values(
         HlslStorageTextureData{
-            ast::TextureDimension::k1d, ast::ImageFormat::kRgba8Unorm,
+            ast::TextureDimension::k1d, ast::TexelFormat::kRgba8Unorm,
             "RWTexture1D<float4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k2d, ast::ImageFormat::kRgba16Float,
+            ast::TextureDimension::k2d, ast::TexelFormat::kRgba16Float,
             "RWTexture2D<float4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k2dArray, ast::ImageFormat::kR32Float,
+            ast::TextureDimension::k2dArray, ast::TexelFormat::kR32Float,
             "RWTexture2DArray<float4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k3d, ast::ImageFormat::kRg32Float,
+            ast::TextureDimension::k3d, ast::TexelFormat::kRg32Float,
             "RWTexture3D<float4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k1d, ast::ImageFormat::kRgba32Float,
+            ast::TextureDimension::k1d, ast::TexelFormat::kRgba32Float,
             "RWTexture1D<float4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k2d, ast::ImageFormat::kRgba16Uint,
+            ast::TextureDimension::k2d, ast::TexelFormat::kRgba16Uint,
             "RWTexture2D<uint4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k2dArray, ast::ImageFormat::kR32Uint,
+            ast::TextureDimension::k2dArray, ast::TexelFormat::kR32Uint,
             "RWTexture2DArray<uint4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k3d, ast::ImageFormat::kRg32Uint,
+            ast::TextureDimension::k3d, ast::TexelFormat::kRg32Uint,
             "RWTexture3D<uint4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k1d, ast::ImageFormat::kRgba32Uint,
+            ast::TextureDimension::k1d, ast::TexelFormat::kRgba32Uint,
             "RWTexture1D<uint4> tex : register(u1, space2);"},
         HlslStorageTextureData{ast::TextureDimension::k2d,
-                               ast::ImageFormat::kRgba16Sint,
+                               ast::TexelFormat::kRgba16Sint,
                                "RWTexture2D<int4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k2dArray, ast::ImageFormat::kR32Sint,
+            ast::TextureDimension::k2dArray, ast::TexelFormat::kR32Sint,
             "RWTexture2DArray<int4> tex : register(u1, space2);"},
         HlslStorageTextureData{ast::TextureDimension::k3d,
-                               ast::ImageFormat::kRg32Sint,
+                               ast::TexelFormat::kRg32Sint,
                                "RWTexture3D<int4> tex : register(u1, space2);"},
         HlslStorageTextureData{
-            ast::TextureDimension::k1d, ast::ImageFormat::kRgba32Sint,
+            ast::TextureDimension::k1d, ast::TexelFormat::kRgba32Sint,
             "RWTexture1D<int4> tex : register(u1, space2);"}));
 
 }  // namespace
diff --git a/src/writer/msl/generator_impl_type_test.cc b/src/writer/msl/generator_impl_type_test.cc
index f154f64..9815a58 100644
--- a/src/writer/msl/generator_impl_type_test.cc
+++ b/src/writer/msl/generator_impl_type_test.cc
@@ -852,7 +852,7 @@
 TEST_P(MslStorageTexturesTest, Emit) {
   auto params = GetParam();
 
-  auto* s = ty.storage_texture(params.dim, ast::ImageFormat::kR32Float,
+  auto* s = ty.storage_texture(params.dim, ast::TexelFormat::kR32Float,
                                ast::Access::kWrite);
   Global("test_var", s,
          ast::DecorationList{
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index 1a1d883..19cae15 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -3916,17 +3916,17 @@
         // the access type. Doing this ensures we de-dupe.
         type_name_to_id_[builder_
                              .create<sem::StorageTexture>(
-                                 st->dim(), st->image_format(),
+                                 st->dim(), st->texel_format(),
                                  ast::Access::kRead, st->type())
                              ->type_name()] = id;
         type_name_to_id_[builder_
                              .create<sem::StorageTexture>(
-                                 st->dim(), st->image_format(),
+                                 st->dim(), st->texel_format(),
                                  ast::Access::kWrite, st->type())
                              ->type_name()] = id;
         type_name_to_id_[builder_
                              .create<sem::StorageTexture>(
-                                 st->dim(), st->image_format(),
+                                 st->dim(), st->texel_format(),
                                  ast::Access::kReadWrite, st->type())
                              ->type_name()] = id;
       }
@@ -4014,7 +4014,7 @@
 
   uint32_t format_literal = SpvImageFormat_::SpvImageFormatUnknown;
   if (auto* t = texture->As<sem::StorageTexture>()) {
-    format_literal = convert_image_format_to_spv(t->image_format());
+    format_literal = convert_texel_format_to_spv(t->texel_format());
   }
 
   push_type(spv::Op::OpTypeImage,
@@ -4291,99 +4291,99 @@
   }
 }
 
-SpvImageFormat Builder::convert_image_format_to_spv(
-    const ast::ImageFormat format) {
+SpvImageFormat Builder::convert_texel_format_to_spv(
+    const ast::TexelFormat format) {
   switch (format) {
-    case ast::ImageFormat::kR8Unorm:
+    case ast::TexelFormat::kR8Unorm:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatR8;
-    case ast::ImageFormat::kR8Snorm:
+    case ast::TexelFormat::kR8Snorm:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatR8Snorm;
-    case ast::ImageFormat::kR8Uint:
+    case ast::TexelFormat::kR8Uint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatR8ui;
-    case ast::ImageFormat::kR8Sint:
+    case ast::TexelFormat::kR8Sint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatR8i;
-    case ast::ImageFormat::kR16Uint:
+    case ast::TexelFormat::kR16Uint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatR16ui;
-    case ast::ImageFormat::kR16Sint:
+    case ast::TexelFormat::kR16Sint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatR16i;
-    case ast::ImageFormat::kR16Float:
+    case ast::TexelFormat::kR16Float:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatR16f;
-    case ast::ImageFormat::kRg8Unorm:
+    case ast::TexelFormat::kRg8Unorm:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg8;
-    case ast::ImageFormat::kRg8Snorm:
+    case ast::TexelFormat::kRg8Snorm:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg8Snorm;
-    case ast::ImageFormat::kRg8Uint:
+    case ast::TexelFormat::kRg8Uint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg8ui;
-    case ast::ImageFormat::kRg8Sint:
+    case ast::TexelFormat::kRg8Sint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg8i;
-    case ast::ImageFormat::kR32Uint:
+    case ast::TexelFormat::kR32Uint:
       return SpvImageFormatR32ui;
-    case ast::ImageFormat::kR32Sint:
+    case ast::TexelFormat::kR32Sint:
       return SpvImageFormatR32i;
-    case ast::ImageFormat::kR32Float:
+    case ast::TexelFormat::kR32Float:
       return SpvImageFormatR32f;
-    case ast::ImageFormat::kRg16Uint:
+    case ast::TexelFormat::kRg16Uint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg16ui;
-    case ast::ImageFormat::kRg16Sint:
+    case ast::TexelFormat::kRg16Sint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg16i;
-    case ast::ImageFormat::kRg16Float:
+    case ast::TexelFormat::kRg16Float:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg16f;
-    case ast::ImageFormat::kRgba8Unorm:
+    case ast::TexelFormat::kRgba8Unorm:
       return SpvImageFormatRgba8;
-    case ast::ImageFormat::kRgba8UnormSrgb:
+    case ast::TexelFormat::kRgba8UnormSrgb:
       return SpvImageFormatUnknown;
-    case ast::ImageFormat::kRgba8Snorm:
+    case ast::TexelFormat::kRgba8Snorm:
       return SpvImageFormatRgba8Snorm;
-    case ast::ImageFormat::kRgba8Uint:
+    case ast::TexelFormat::kRgba8Uint:
       return SpvImageFormatRgba8ui;
-    case ast::ImageFormat::kRgba8Sint:
+    case ast::TexelFormat::kRgba8Sint:
       return SpvImageFormatRgba8i;
-    case ast::ImageFormat::kBgra8Unorm:
+    case ast::TexelFormat::kBgra8Unorm:
       return SpvImageFormatUnknown;
-    case ast::ImageFormat::kBgra8UnormSrgb:
+    case ast::TexelFormat::kBgra8UnormSrgb:
       return SpvImageFormatUnknown;
-    case ast::ImageFormat::kRgb10A2Unorm:
+    case ast::TexelFormat::kRgb10A2Unorm:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRgb10A2;
-    case ast::ImageFormat::kRg11B10Float:
+    case ast::TexelFormat::kRg11B10Float:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatR11fG11fB10f;
-    case ast::ImageFormat::kRg32Uint:
+    case ast::TexelFormat::kRg32Uint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg32ui;
-    case ast::ImageFormat::kRg32Sint:
+    case ast::TexelFormat::kRg32Sint:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg32i;
-    case ast::ImageFormat::kRg32Float:
+    case ast::TexelFormat::kRg32Float:
       push_capability(SpvCapabilityStorageImageExtendedFormats);
       return SpvImageFormatRg32f;
-    case ast::ImageFormat::kRgba16Uint:
+    case ast::TexelFormat::kRgba16Uint:
       return SpvImageFormatRgba16ui;
-    case ast::ImageFormat::kRgba16Sint:
+    case ast::TexelFormat::kRgba16Sint:
       return SpvImageFormatRgba16i;
-    case ast::ImageFormat::kRgba16Float:
+    case ast::TexelFormat::kRgba16Float:
       return SpvImageFormatRgba16f;
-    case ast::ImageFormat::kRgba32Uint:
+    case ast::TexelFormat::kRgba32Uint:
       return SpvImageFormatRgba32ui;
-    case ast::ImageFormat::kRgba32Sint:
+    case ast::TexelFormat::kRgba32Sint:
       return SpvImageFormatRgba32i;
-    case ast::ImageFormat::kRgba32Float:
+    case ast::TexelFormat::kRgba32Float:
       return SpvImageFormatRgba32f;
-    case ast::ImageFormat::kNone:
+    case ast::TexelFormat::kNone:
       return SpvImageFormatUnknown;
   }
   return SpvImageFormatUnknown;
diff --git a/src/writer/spirv/builder.h b/src/writer/spirv/builder.h
index fdfc3b3..3c08ebe 100644
--- a/src/writer/spirv/builder.h
+++ b/src/writer/spirv/builder.h
@@ -555,10 +555,10 @@
                                   const sem::Matrix* type,
                                   spv::Op op);
 
-  /// Converts AST image format to SPIR-V and pushes an appropriate capability.
+  /// Converts TexelFormat to SPIR-V and pushes an appropriate capability.
   /// @param format AST image format type
   /// @returns SPIR-V image format type
-  SpvImageFormat convert_image_format_to_spv(const ast::ImageFormat format);
+  SpvImageFormat convert_texel_format_to_spv(const ast::TexelFormat format);
 
   /// Determines if the given type constructor is created from constant values
   /// @param expr the expression to check
diff --git a/src/writer/spirv/builder_format_conversion_test.cc b/src/writer/spirv/builder_format_conversion_test.cc
index 8bfbb73..c7ec41f 100644
--- a/src/writer/spirv/builder_format_conversion_test.cc
+++ b/src/writer/spirv/builder_format_conversion_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 struct TestData {
-  ast::ImageFormat ast_format;
+  ast::TexelFormat ast_format;
   SpvImageFormat_ spv_format;
   bool extended_format = false;
 };
@@ -36,7 +36,7 @@
 
   spirv::Builder& b = Build();
 
-  EXPECT_EQ(b.convert_image_format_to_spv(param.ast_format), param.spv_format);
+  EXPECT_EQ(b.convert_texel_format_to_spv(param.ast_format), param.spv_format);
 
   if (param.extended_format) {
     EXPECT_EQ(DumpInstructions(b.capabilities()),
@@ -51,42 +51,42 @@
     BuilderTest,
     ImageFormatConversionTest,
     testing::Values(
-        TestData{ast::ImageFormat::kR8Unorm, SpvImageFormatR8, true},
-        TestData{ast::ImageFormat::kR8Snorm, SpvImageFormatR8Snorm, true},
-        TestData{ast::ImageFormat::kR8Uint, SpvImageFormatR8ui, true},
-        TestData{ast::ImageFormat::kR8Sint, SpvImageFormatR8i, true},
-        TestData{ast::ImageFormat::kR16Uint, SpvImageFormatR16ui, true},
-        TestData{ast::ImageFormat::kR16Sint, SpvImageFormatR16i, true},
-        TestData{ast::ImageFormat::kR16Float, SpvImageFormatR16f, true},
-        TestData{ast::ImageFormat::kRg8Unorm, SpvImageFormatRg8, true},
-        TestData{ast::ImageFormat::kRg8Snorm, SpvImageFormatRg8Snorm, true},
-        TestData{ast::ImageFormat::kRg8Uint, SpvImageFormatRg8ui, true},
-        TestData{ast::ImageFormat::kRg8Sint, SpvImageFormatRg8i, true},
-        TestData{ast::ImageFormat::kR32Uint, SpvImageFormatR32ui},
-        TestData{ast::ImageFormat::kR32Sint, SpvImageFormatR32i},
-        TestData{ast::ImageFormat::kR32Float, SpvImageFormatR32f},
-        TestData{ast::ImageFormat::kRg16Uint, SpvImageFormatRg16ui, true},
-        TestData{ast::ImageFormat::kRg16Sint, SpvImageFormatRg16i, true},
-        TestData{ast::ImageFormat::kRg16Float, SpvImageFormatRg16f, true},
-        TestData{ast::ImageFormat::kRgba8Unorm, SpvImageFormatRgba8},
-        TestData{ast::ImageFormat::kRgba8UnormSrgb, SpvImageFormatUnknown},
-        TestData{ast::ImageFormat::kRgba8Snorm, SpvImageFormatRgba8Snorm},
-        TestData{ast::ImageFormat::kRgba8Uint, SpvImageFormatRgba8ui},
-        TestData{ast::ImageFormat::kRgba8Sint, SpvImageFormatRgba8i},
-        TestData{ast::ImageFormat::kBgra8Unorm, SpvImageFormatUnknown},
-        TestData{ast::ImageFormat::kBgra8UnormSrgb, SpvImageFormatUnknown},
-        TestData{ast::ImageFormat::kRgb10A2Unorm, SpvImageFormatRgb10A2, true},
-        TestData{ast::ImageFormat::kRg11B10Float, SpvImageFormatR11fG11fB10f,
+        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::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::ImageFormat::kRg32Uint, SpvImageFormatRg32ui, true},
-        TestData{ast::ImageFormat::kRg32Sint, SpvImageFormatRg32i, true},
-        TestData{ast::ImageFormat::kRg32Float, SpvImageFormatRg32f, true},
-        TestData{ast::ImageFormat::kRgba16Uint, SpvImageFormatRgba16ui},
-        TestData{ast::ImageFormat::kRgba16Sint, SpvImageFormatRgba16i},
-        TestData{ast::ImageFormat::kRgba16Float, SpvImageFormatRgba16f},
-        TestData{ast::ImageFormat::kRgba32Uint, SpvImageFormatRgba32ui},
-        TestData{ast::ImageFormat::kRgba32Sint, SpvImageFormatRgba32i},
-        TestData{ast::ImageFormat::kRgba32Float, SpvImageFormatRgba32f}));
+        TestData{ast::TexelFormat::kRg32Uint, SpvImageFormatRg32ui, true},
+        TestData{ast::TexelFormat::kRg32Sint, SpvImageFormatRg32i, true},
+        TestData{ast::TexelFormat::kRg32Float, SpvImageFormatRg32f, true},
+        TestData{ast::TexelFormat::kRgba16Uint, SpvImageFormatRgba16ui},
+        TestData{ast::TexelFormat::kRgba16Sint, SpvImageFormatRgba16i},
+        TestData{ast::TexelFormat::kRgba16Float, SpvImageFormatRgba16f},
+        TestData{ast::TexelFormat::kRgba32Uint, SpvImageFormatRgba32ui},
+        TestData{ast::TexelFormat::kRgba32Sint, SpvImageFormatRgba32i},
+        TestData{ast::TexelFormat::kRgba32Float, SpvImageFormatRgba32f}));
 
 }  // namespace
 }  // namespace spirv
diff --git a/src/writer/spirv/builder_global_variable_test.cc b/src/writer/spirv/builder_global_variable_test.cc
index 9e0cfd1..c372603 100644
--- a/src/writer/spirv/builder_global_variable_test.cc
+++ b/src/writer/spirv/builder_global_variable_test.cc
@@ -552,7 +552,7 @@
   // var<uniform_constant> a : texture_storage_2d<r32uint, write>;
 
   auto* type =
-      ty.storage_texture(ast::TextureDimension::k2d, ast::ImageFormat::kR32Uint,
+      ty.storage_texture(ast::TextureDimension::k2d, ast::TexelFormat::kR32Uint,
                          ast::Access::kWrite);
 
   auto* var_a = Global("a", type,
@@ -585,7 +585,7 @@
   // var<uniform_constant> b : texture_storage_2d<r32uint, write>;
 
   auto* type_a =
-      ty.storage_texture(ast::TextureDimension::k2d, ast::ImageFormat::kR32Uint,
+      ty.storage_texture(ast::TextureDimension::k2d, ast::TexelFormat::kR32Uint,
                          ast::Access::kReadWrite);
   auto* var_a = Global("a", type_a, ast::StorageClass::kNone,
                        ast::DecorationList{
@@ -594,7 +594,7 @@
                        });
 
   auto* type_b =
-      ty.storage_texture(ast::TextureDimension::k2d, ast::ImageFormat::kR32Uint,
+      ty.storage_texture(ast::TextureDimension::k2d, ast::TexelFormat::kR32Uint,
                          ast::Access::kWrite);
   auto* var_b = Global("b", type_b, ast::StorageClass::kNone,
                        ast::DecorationList{
diff --git a/src/writer/spirv/builder_type_test.cc b/src/writer/spirv/builder_type_test.cc
index 9988365..9eb0815 100644
--- a/src/writer/spirv/builder_type_test.cc
+++ b/src/writer/spirv/builder_type_test.cc
@@ -791,7 +791,7 @@
 TEST_F(BuilderTest_Type, StorageTexture_Generate_1d) {
   auto* s =
       ty.storage_texture(ast::TextureDimension::k1d,
-                         ast::ImageFormat::kR32Float, ast::Access::kWrite);
+                         ast::TexelFormat::kR32Float, ast::Access::kWrite);
 
   Global("test_var", s,
          ast::DecorationList{
@@ -811,7 +811,7 @@
 TEST_F(BuilderTest_Type, StorageTexture_Generate_2d) {
   auto* s =
       ty.storage_texture(ast::TextureDimension::k2d,
-                         ast::ImageFormat::kR32Float, ast::Access::kWrite);
+                         ast::TexelFormat::kR32Float, ast::Access::kWrite);
 
   Global("test_var", s,
          ast::DecorationList{
@@ -831,7 +831,7 @@
 TEST_F(BuilderTest_Type, StorageTexture_Generate_2dArray) {
   auto* s =
       ty.storage_texture(ast::TextureDimension::k2dArray,
-                         ast::ImageFormat::kR32Float, ast::Access::kWrite);
+                         ast::TexelFormat::kR32Float, ast::Access::kWrite);
 
   Global("test_var", s,
          ast::DecorationList{
@@ -851,7 +851,7 @@
 TEST_F(BuilderTest_Type, StorageTexture_Generate_3d) {
   auto* s =
       ty.storage_texture(ast::TextureDimension::k3d,
-                         ast::ImageFormat::kR32Float, ast::Access::kWrite);
+                         ast::TexelFormat::kR32Float, ast::Access::kWrite);
 
   Global("test_var", s,
          ast::DecorationList{
@@ -872,7 +872,7 @@
        StorageTexture_Generate_SampledTypeFloat_Format_r32float) {
   auto* s =
       ty.storage_texture(ast::TextureDimension::k2d,
-                         ast::ImageFormat::kR32Float, ast::Access::kWrite);
+                         ast::TexelFormat::kR32Float, ast::Access::kWrite);
 
   Global("test_var", s,
          ast::DecorationList{
@@ -892,7 +892,7 @@
 TEST_F(BuilderTest_Type,
        StorageTexture_Generate_SampledTypeSint_Format_r32sint) {
   auto* s = ty.storage_texture(ast::TextureDimension::k2d,
-                               ast::ImageFormat::kR32Sint, ast::Access::kWrite);
+                               ast::TexelFormat::kR32Sint, ast::Access::kWrite);
 
   Global("test_var", s,
          ast::DecorationList{
@@ -912,7 +912,7 @@
 TEST_F(BuilderTest_Type,
        StorageTexture_Generate_SampledTypeUint_Format_r32uint) {
   auto* s = ty.storage_texture(ast::TextureDimension::k2d,
-                               ast::ImageFormat::kR32Uint, ast::Access::kWrite);
+                               ast::TexelFormat::kR32Uint, ast::Access::kWrite);
 
   Global("test_var", s,
          ast::DecorationList{
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc
index eef9aaa..a4c3ed9 100644
--- a/src/writer/wgsl/generator_impl.cc
+++ b/src/writer/wgsl/generator_impl.cc
@@ -336,9 +336,9 @@
 }
 
 bool GeneratorImpl::EmitImageFormat(std::ostream& out,
-                                    const ast::ImageFormat fmt) {
+                                    const ast::TexelFormat fmt) {
   switch (fmt) {
-    case ast::ImageFormat::kNone:
+    case ast::TexelFormat::kNone:
       diagnostics_.add_error(diag::System::Writer, "unknown image format");
       return false;
     default:
diff --git a/src/writer/wgsl/generator_impl.h b/src/writer/wgsl/generator_impl.h
index a88f263..80c8d9f 100644
--- a/src/writer/wgsl/generator_impl.h
+++ b/src/writer/wgsl/generator_impl.h
@@ -176,7 +176,7 @@
   /// @param out the output of the expression stream
   /// @param fmt the format to generate
   /// @returns true if the format is emitted
-  bool EmitImageFormat(std::ostream& out, const ast::ImageFormat fmt);
+  bool EmitImageFormat(std::ostream& out, const ast::TexelFormat fmt);
   /// Handles emitting an access control
   /// @param out the output of the expression stream
   /// @param access the access to generate
diff --git a/src/writer/wgsl/generator_impl_type_test.cc b/src/writer/wgsl/generator_impl_type_test.cc
index 0a075ec..2b84826 100644
--- a/src/writer/wgsl/generator_impl_type_test.cc
+++ b/src/writer/wgsl/generator_impl_type_test.cc
@@ -423,7 +423,7 @@
                              "texture_multisampled_2d"}));
 
 struct StorageTextureData {
-  ast::ImageFormat fmt;
+  ast::TexelFormat fmt;
   ast::TextureDimension dim;
   ast::Access access;
   const char* name;
@@ -453,21 +453,21 @@
     WgslGeneratorImplTest,
     WgslGenerator_StorageTextureTest,
     testing::Values(
-        StorageTextureData{ast::ImageFormat::kRgba8Sint,
+        StorageTextureData{ast::TexelFormat::kRgba8Sint,
                            ast::TextureDimension::k1d, ast::Access::kWrite,
                            "texture_storage_1d<rgba8sint, write>"},
-        StorageTextureData{ast::ImageFormat::kRgba8Sint,
+        StorageTextureData{ast::TexelFormat::kRgba8Sint,
                            ast::TextureDimension::k2d, ast::Access::kWrite,
                            "texture_storage_2d<rgba8sint, write>"},
-        StorageTextureData{ast::ImageFormat::kRgba8Sint,
+        StorageTextureData{ast::TexelFormat::kRgba8Sint,
                            ast::TextureDimension::k2dArray, ast::Access::kWrite,
                            "texture_storage_2d_array<rgba8sint, write>"},
-        StorageTextureData{ast::ImageFormat::kRgba8Sint,
+        StorageTextureData{ast::TexelFormat::kRgba8Sint,
                            ast::TextureDimension::k3d, ast::Access::kWrite,
                            "texture_storage_3d<rgba8sint, write>"}));
 
 struct ImageFormatData {
-  ast::ImageFormat fmt;
+  ast::TexelFormat fmt;
   const char* name;
 };
 inline std::ostream& operator<<(std::ostream& out, ImageFormatData data) {
@@ -489,41 +489,41 @@
     WgslGeneratorImplTest,
     WgslGenerator_ImageFormatTest,
     testing::Values(
-        ImageFormatData{ast::ImageFormat::kR8Unorm, "r8unorm"},
-        ImageFormatData{ast::ImageFormat::kR8Snorm, "r8snorm"},
-        ImageFormatData{ast::ImageFormat::kR8Uint, "r8uint"},
-        ImageFormatData{ast::ImageFormat::kR8Sint, "r8sint"},
-        ImageFormatData{ast::ImageFormat::kR16Uint, "r16uint"},
-        ImageFormatData{ast::ImageFormat::kR16Sint, "r16sint"},
-        ImageFormatData{ast::ImageFormat::kR16Float, "r16float"},
-        ImageFormatData{ast::ImageFormat::kRg8Unorm, "rg8unorm"},
-        ImageFormatData{ast::ImageFormat::kRg8Snorm, "rg8snorm"},
-        ImageFormatData{ast::ImageFormat::kRg8Uint, "rg8uint"},
-        ImageFormatData{ast::ImageFormat::kRg8Sint, "rg8sint"},
-        ImageFormatData{ast::ImageFormat::kR32Uint, "r32uint"},
-        ImageFormatData{ast::ImageFormat::kR32Sint, "r32sint"},
-        ImageFormatData{ast::ImageFormat::kR32Float, "r32float"},
-        ImageFormatData{ast::ImageFormat::kRg16Uint, "rg16uint"},
-        ImageFormatData{ast::ImageFormat::kRg16Sint, "rg16sint"},
-        ImageFormatData{ast::ImageFormat::kRg16Float, "rg16float"},
-        ImageFormatData{ast::ImageFormat::kRgba8Unorm, "rgba8unorm"},
-        ImageFormatData{ast::ImageFormat::kRgba8UnormSrgb, "rgba8unorm_srgb"},
-        ImageFormatData{ast::ImageFormat::kRgba8Snorm, "rgba8snorm"},
-        ImageFormatData{ast::ImageFormat::kRgba8Uint, "rgba8uint"},
-        ImageFormatData{ast::ImageFormat::kRgba8Sint, "rgba8sint"},
-        ImageFormatData{ast::ImageFormat::kBgra8Unorm, "bgra8unorm"},
-        ImageFormatData{ast::ImageFormat::kBgra8UnormSrgb, "bgra8unorm_srgb"},
-        ImageFormatData{ast::ImageFormat::kRgb10A2Unorm, "rgb10a2unorm"},
-        ImageFormatData{ast::ImageFormat::kRg11B10Float, "rg11b10float"},
-        ImageFormatData{ast::ImageFormat::kRg32Uint, "rg32uint"},
-        ImageFormatData{ast::ImageFormat::kRg32Sint, "rg32sint"},
-        ImageFormatData{ast::ImageFormat::kRg32Float, "rg32float"},
-        ImageFormatData{ast::ImageFormat::kRgba16Uint, "rgba16uint"},
-        ImageFormatData{ast::ImageFormat::kRgba16Sint, "rgba16sint"},
-        ImageFormatData{ast::ImageFormat::kRgba16Float, "rgba16float"},
-        ImageFormatData{ast::ImageFormat::kRgba32Uint, "rgba32uint"},
-        ImageFormatData{ast::ImageFormat::kRgba32Sint, "rgba32sint"},
-        ImageFormatData{ast::ImageFormat::kRgba32Float, "rgba32float"}));
+        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"},
+        ImageFormatData{ast::TexelFormat::kRgba16Uint, "rgba16uint"},
+        ImageFormatData{ast::TexelFormat::kRgba16Sint, "rgba16sint"},
+        ImageFormatData{ast::TexelFormat::kRgba16Float, "rgba16float"},
+        ImageFormatData{ast::TexelFormat::kRgba32Uint, "rgba32uint"},
+        ImageFormatData{ast::TexelFormat::kRgba32Sint, "rgba32sint"},
+        ImageFormatData{ast::TexelFormat::kRgba32Float, "rgba32float"}));
 
 TEST_F(WgslGeneratorImplTest, EmitType_Sampler) {
   auto* sampler = ty.sampler(ast::SamplerKind::kSampler);
diff --git a/test/BUILD.gn b/test/BUILD.gn
index e85e787..9b72af6 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -477,7 +477,6 @@
     "../src/reader/wgsl/parser_impl_global_decl_test.cc",
     "../src/reader/wgsl/parser_impl_global_variable_decl_test.cc",
     "../src/reader/wgsl/parser_impl_if_stmt_test.cc",
-    "../src/reader/wgsl/parser_impl_image_storage_type_test.cc",
     "../src/reader/wgsl/parser_impl_inclusive_or_expression_test.cc",
     "../src/reader/wgsl/parser_impl_logical_and_expression_test.cc",
     "../src/reader/wgsl/parser_impl_logical_or_expression_test.cc",
@@ -509,6 +508,7 @@
     "../src/reader/wgsl/parser_impl_test.cc",
     "../src/reader/wgsl/parser_impl_test_helper.cc",
     "../src/reader/wgsl/parser_impl_test_helper.h",
+    "../src/reader/wgsl/parser_impl_texel_format_test.cc",
     "../src/reader/wgsl/parser_impl_texture_sampler_types_test.cc",
     "../src/reader/wgsl/parser_impl_type_alias_test.cc",
     "../src/reader/wgsl/parser_impl_type_decl_test.cc",