[spirv-reader][ir] Support R8 TexelFormat.

Convert the SPIR-V `R8` texel format to the `r8unorm` format in IR.

Bug: 429625756
Change-Id: I24970e28446464cd67f70b63135a8003b157f237
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/250875
Reviewed-by: James Price <jrprice@google.com>
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/spirv/reader/parser/image_sampler_test.cc b/src/tint/lang/spirv/reader/parser/image_sampler_test.cc
index 67f7dda..9b241f7 100644
--- a/src/tint/lang/spirv/reader/parser/image_sampler_test.cc
+++ b/src/tint/lang/spirv/reader/parser/image_sampler_test.cc
@@ -392,6 +392,40 @@
 )");
 }
 
+TEST_F(SpirvParserTest, Type_Image_TexelFormat_R8) {
+    EXPECT_IR(R"(
+               OpCapability Shader
+               OpCapability Sampled1D
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpDecorate %6 DescriptorSet 1
+               OpDecorate %6 Binding 2
+       %void = OpTypeVoid
+        %f32 = OpTypeFloat 32
+        %img = OpTypeImage %f32 1D 0 0 0 1 R8
+%_ptr_Uniform = OpTypePointer UniformConstant %img
+          %6 = OpVariable %_ptr_Uniform UniformConstant
+    %ep_type = OpTypeFunction %void
+       %main = OpFunction %void None %ep_type
+ %main_start = OpLabel
+               OpReturn
+               OpFunctionEnd
+)",
+              R"(
+$B1: {  # root
+  %1:ptr<handle, spirv.image<f32, 1d, not_depth, non_arrayed, single_sampled, sampling_compatible, r8unorm, read_write>, read> = var undef @binding_point(1, 2)
+}
+
+%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
+  $B2: {
+    ret
+  }
+}
+)");
+}
+
 TEST_F(SpirvParserTest, Type_SampledImage) {
     options.sampler_mappings.insert({BindingPoint{1, 2}, BindingPoint{5, 6}});
 
diff --git a/src/tint/lang/spirv/reader/parser/parser.cc b/src/tint/lang/spirv/reader/parser/parser.cc
index cf00c78..1e2e580 100644
--- a/src/tint/lang/spirv/reader/parser/parser.cc
+++ b/src/tint/lang/spirv/reader/parser/parser.cc
@@ -800,6 +800,8 @@
                 return core::TexelFormat::kRgba8Uint;
             case spv::ImageFormat::Rgba8i:
                 return core::TexelFormat::kRgba8Sint;
+            case spv::ImageFormat::R8:
+                return core::TexelFormat::kR8Unorm;
 
             // 16 bit channels
             case spv::ImageFormat::Rgba16ui: