diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index 283043e..917cbdc 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -2696,12 +2696,7 @@
   } else if (auto* ms = texture->As<ast::type::MultisampledTexture>()) {
     type_id = GenerateTypeIfNeeded(ms->type());
   } else if (auto* st = texture->As<ast::type::StorageTexture>()) {
-    if (st->access() == ast::AccessControl::kWriteOnly) {
-      ast::type::Void void_type;
-      type_id = GenerateTypeIfNeeded(&void_type);
-    } else {
-      type_id = GenerateTypeIfNeeded(st->type());
-    }
+    type_id = GenerateTypeIfNeeded(st->type());
   }
   if (type_id == 0u) {
     return false;
diff --git a/src/writer/spirv/builder_global_variable_test.cc b/src/writer/spirv/builder_global_variable_test.cc
index cd5537c..f8b3fed 100644
--- a/src/writer/spirv/builder_global_variable_test.cc
+++ b/src/writer/spirv/builder_global_variable_test.cc
@@ -693,7 +693,7 @@
 
   EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %1 NonReadable
 )");
-  EXPECT_EQ(DumpInstructions(b.types()), R"(%4 = OpTypeVoid
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%4 = OpTypeInt 32 0
 %3 = OpTypeImage %4 2D 0 0 0 2 R32ui
 %2 = OpTypePointer UniformConstant %3
 %1 = OpVariable %2 UniformConstant
diff --git a/src/writer/spirv/builder_intrinsic_texture_test.cc b/src/writer/spirv/builder_intrinsic_texture_test.cc
index 88b9cb8..f73ff56 100644
--- a/src/writer/spirv/builder_intrinsic_texture_test.cc
+++ b/src/writer/spirv/builder_intrinsic_texture_test.cc
@@ -2567,132 +2567,132 @@
 )"};
     case ValidTextureOverload::kStoreWO1dRgba32float:
       return {R"(
-%4 = OpTypeVoid
+%4 = OpTypeFloat 32
 %3 = OpTypeImage %4 1D 0 0 0 2 Rgba32f
 %2 = OpTypePointer Private %3
 %1 = OpVariable %2 Private
 %7 = OpTypeSampler
 %6 = OpTypePointer Private %7
 %5 = OpVariable %6 Private
-%10 = OpTypeInt 32 1
-%11 = OpConstant %10 1
-%13 = OpTypeFloat 32
-%12 = OpTypeVector %13 4
-%14 = OpConstant %13 2
-%15 = OpConstant %13 3
-%16 = OpConstant %13 4
-%17 = OpConstant %13 5
-%18 = OpConstantComposite %12 %14 %15 %16 %17
+%9 = OpTypeVoid
+%11 = OpTypeInt 32 1
+%12 = OpConstant %11 1
+%13 = OpTypeVector %4 4
+%14 = OpConstant %4 2
+%15 = OpConstant %4 3
+%16 = OpConstant %4 4
+%17 = OpConstant %4 5
+%18 = OpConstantComposite %13 %14 %15 %16 %17
 )",
               R"(
-%9 = OpLoad %3 %1
-OpImageWrite %9 %11 %18
+%10 = OpLoad %3 %1
+OpImageWrite %10 %12 %18
 )"};
     case ValidTextureOverload::kStoreWO1dArrayRgba32float:
       return {R"(
-%4 = OpTypeVoid
+%4 = OpTypeFloat 32
 %3 = OpTypeImage %4 1D 0 1 0 2 Rgba32f
 %2 = OpTypePointer Private %3
 %1 = OpVariable %2 Private
 %7 = OpTypeSampler
 %6 = OpTypePointer Private %7
 %5 = OpVariable %6 Private
-%11 = OpTypeInt 32 1
-%10 = OpTypeVector %11 2
-%12 = OpConstant %11 1
-%13 = OpConstant %11 2
-%14 = OpConstantComposite %10 %12 %13
-%16 = OpTypeFloat 32
-%15 = OpTypeVector %16 4
-%17 = OpConstant %16 3
-%18 = OpConstant %16 4
-%19 = OpConstant %16 5
-%20 = OpConstant %16 6
-%21 = OpConstantComposite %15 %17 %18 %19 %20
+%9 = OpTypeVoid
+%12 = OpTypeInt 32 1
+%11 = OpTypeVector %12 2
+%13 = OpConstant %12 1
+%14 = OpConstant %12 2
+%15 = OpConstantComposite %11 %13 %14
+%16 = OpTypeVector %4 4
+%17 = OpConstant %4 3
+%18 = OpConstant %4 4
+%19 = OpConstant %4 5
+%20 = OpConstant %4 6
+%21 = OpConstantComposite %16 %17 %18 %19 %20
 )",
               R"(
-%9 = OpLoad %3 %1
-OpImageWrite %9 %14 %21
+%10 = OpLoad %3 %1
+OpImageWrite %10 %15 %21
 )"};
     case ValidTextureOverload::kStoreWO2dRgba32float:
       return {R"(
-%4 = OpTypeVoid
+%4 = OpTypeFloat 32
 %3 = OpTypeImage %4 2D 0 0 0 2 Rgba32f
 %2 = OpTypePointer Private %3
 %1 = OpVariable %2 Private
 %7 = OpTypeSampler
 %6 = OpTypePointer Private %7
 %5 = OpVariable %6 Private
-%11 = OpTypeInt 32 1
-%10 = OpTypeVector %11 2
-%12 = OpConstant %11 1
-%13 = OpConstant %11 2
-%14 = OpConstantComposite %10 %12 %13
-%16 = OpTypeFloat 32
-%15 = OpTypeVector %16 4
-%17 = OpConstant %16 3
-%18 = OpConstant %16 4
-%19 = OpConstant %16 5
-%20 = OpConstant %16 6
-%21 = OpConstantComposite %15 %17 %18 %19 %20
+%9 = OpTypeVoid
+%12 = OpTypeInt 32 1
+%11 = OpTypeVector %12 2
+%13 = OpConstant %12 1
+%14 = OpConstant %12 2
+%15 = OpConstantComposite %11 %13 %14
+%16 = OpTypeVector %4 4
+%17 = OpConstant %4 3
+%18 = OpConstant %4 4
+%19 = OpConstant %4 5
+%20 = OpConstant %4 6
+%21 = OpConstantComposite %16 %17 %18 %19 %20
 )",
               R"(
-%9 = OpLoad %3 %1
-OpImageWrite %9 %14 %21
+%10 = OpLoad %3 %1
+OpImageWrite %10 %15 %21
 )"};
     case ValidTextureOverload::kStoreWO2dArrayRgba32float:
       return {R"(
-%4 = OpTypeVoid
+%4 = OpTypeFloat 32
 %3 = OpTypeImage %4 2D 0 1 0 2 Rgba32f
 %2 = OpTypePointer Private %3
 %1 = OpVariable %2 Private
 %7 = OpTypeSampler
 %6 = OpTypePointer Private %7
 %5 = OpVariable %6 Private
-%11 = OpTypeInt 32 1
-%10 = OpTypeVector %11 3
-%12 = OpConstant %11 1
-%13 = OpConstant %11 2
-%14 = OpConstant %11 3
-%15 = OpConstantComposite %10 %12 %13 %14
-%17 = OpTypeFloat 32
-%16 = OpTypeVector %17 4
-%18 = OpConstant %17 4
-%19 = OpConstant %17 5
-%20 = OpConstant %17 6
-%21 = OpConstant %17 7
-%22 = OpConstantComposite %16 %18 %19 %20 %21
+%9 = OpTypeVoid
+%12 = OpTypeInt 32 1
+%11 = OpTypeVector %12 3
+%13 = OpConstant %12 1
+%14 = OpConstant %12 2
+%15 = OpConstant %12 3
+%16 = OpConstantComposite %11 %13 %14 %15
+%17 = OpTypeVector %4 4
+%18 = OpConstant %4 4
+%19 = OpConstant %4 5
+%20 = OpConstant %4 6
+%21 = OpConstant %4 7
+%22 = OpConstantComposite %17 %18 %19 %20 %21
 )",
               R"(
-%9 = OpLoad %3 %1
-OpImageWrite %9 %15 %22
+%10 = OpLoad %3 %1
+OpImageWrite %10 %16 %22
 )"};
     case ValidTextureOverload::kStoreWO3dRgba32float:
       return {R"(
-%4 = OpTypeVoid
+%4 = OpTypeFloat 32
 %3 = OpTypeImage %4 3D 0 0 0 2 Rgba32f
 %2 = OpTypePointer Private %3
 %1 = OpVariable %2 Private
 %7 = OpTypeSampler
 %6 = OpTypePointer Private %7
 %5 = OpVariable %6 Private
-%11 = OpTypeInt 32 1
-%10 = OpTypeVector %11 3
-%12 = OpConstant %11 1
-%13 = OpConstant %11 2
-%14 = OpConstant %11 3
-%15 = OpConstantComposite %10 %12 %13 %14
-%17 = OpTypeFloat 32
-%16 = OpTypeVector %17 4
-%18 = OpConstant %17 4
-%19 = OpConstant %17 5
-%20 = OpConstant %17 6
-%21 = OpConstant %17 7
-%22 = OpConstantComposite %16 %18 %19 %20 %21
+%9 = OpTypeVoid
+%12 = OpTypeInt 32 1
+%11 = OpTypeVector %12 3
+%13 = OpConstant %12 1
+%14 = OpConstant %12 2
+%15 = OpConstant %12 3
+%16 = OpConstantComposite %11 %13 %14 %15
+%17 = OpTypeVector %4 4
+%18 = OpConstant %4 4
+%19 = OpConstant %4 5
+%20 = OpConstant %4 6
+%21 = OpConstant %4 7
+%22 = OpConstantComposite %17 %18 %19 %20 %21
 )",
               R"(
-%9 = OpLoad %3 %1
-OpImageWrite %9 %15 %22
+%10 = OpLoad %3 %1
+OpImageWrite %10 %16 %22
 )"};
   }
 
diff --git a/src/writer/spirv/builder_type_test.cc b/src/writer/spirv/builder_type_test.cc
index 34d185c..76b1da4 100644
--- a/src/writer/spirv/builder_type_test.cc
+++ b/src/writer/spirv/builder_type_test.cc
@@ -944,7 +944,7 @@
   ASSERT_TRUE(td.DetermineStorageTextureSubtype(&s)) << td.error();
   EXPECT_EQ(b.GenerateTypeIfNeeded(&s), 1u);
   ASSERT_FALSE(b.has_error()) << b.error();
-  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
 %1 = OpTypeImage %2 1D 0 0 0 2 R16f
 )");
 
@@ -962,7 +962,7 @@
   ASSERT_TRUE(td.DetermineStorageTextureSubtype(&s)) << td.error();
   EXPECT_EQ(b.GenerateTypeIfNeeded(&s), 1u);
   ASSERT_FALSE(b.has_error()) << b.error();
-  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
 %1 = OpTypeImage %2 1D 0 1 0 2 R16f
 )");
 
@@ -980,7 +980,7 @@
   ASSERT_TRUE(td.DetermineStorageTextureSubtype(&s)) << td.error();
   EXPECT_EQ(b.GenerateTypeIfNeeded(&s), 1u);
   ASSERT_FALSE(b.has_error()) << b.error();
-  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
 %1 = OpTypeImage %2 2D 0 0 0 2 R16f
 )");
 }
@@ -993,7 +993,7 @@
   ASSERT_TRUE(td.DetermineStorageTextureSubtype(&s)) << td.error();
   EXPECT_EQ(b.GenerateTypeIfNeeded(&s), 1u);
   ASSERT_FALSE(b.has_error()) << b.error();
-  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
 %1 = OpTypeImage %2 2D 0 1 0 2 R16f
 )");
 }
@@ -1006,11 +1006,53 @@
   ASSERT_TRUE(td.DetermineStorageTextureSubtype(&s)) << td.error();
   EXPECT_EQ(b.GenerateTypeIfNeeded(&s), 1u);
   ASSERT_FALSE(b.has_error()) << b.error();
-  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
 %1 = OpTypeImage %2 3D 0 0 0 2 R16f
 )");
 }
 
+TEST_F(BuilderTest_Type,
+       StorageTexture_GenerateWriteonly_SampledTypeFloat_Format_r32float) {
+  ast::type::StorageTexture s(ast::type::TextureDimension::k2d,
+                              ast::AccessControl::kWriteOnly,
+                              ast::type::ImageFormat::kR32Float);
+
+  ASSERT_TRUE(td.DetermineStorageTextureSubtype(&s)) << td.error();
+  EXPECT_EQ(b.GenerateTypeIfNeeded(&s), 1u);
+  ASSERT_FALSE(b.has_error()) << b.error();
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
+%1 = OpTypeImage %2 2D 0 0 0 2 R32f
+)");
+}
+
+TEST_F(BuilderTest_Type,
+       StorageTexture_GenerateWriteonly_SampledTypeSint_Format_r32sint) {
+  ast::type::StorageTexture s(ast::type::TextureDimension::k2d,
+                              ast::AccessControl::kWriteOnly,
+                              ast::type::ImageFormat::kR32Sint);
+
+  ASSERT_TRUE(td.DetermineStorageTextureSubtype(&s)) << td.error();
+  EXPECT_EQ(b.GenerateTypeIfNeeded(&s), 1u);
+  ASSERT_FALSE(b.has_error()) << b.error();
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeInt 32 1
+%1 = OpTypeImage %2 2D 0 0 0 2 R32i
+)");
+}
+
+TEST_F(BuilderTest_Type,
+       StorageTexture_GenerateWriteonly_SampledTypeUint_Format_r32uint) {
+  ast::type::StorageTexture s(ast::type::TextureDimension::k2d,
+                              ast::AccessControl::kWriteOnly,
+                              ast::type::ImageFormat::kR32Uint);
+
+  ASSERT_TRUE(td.DetermineStorageTextureSubtype(&s)) << td.error();
+  EXPECT_EQ(b.GenerateTypeIfNeeded(&s), 1u);
+  ASSERT_FALSE(b.has_error()) << b.error();
+  EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeInt 32 0
+%1 = OpTypeImage %2 2D 0 0 0 2 R32ui
+)");
+}
+
 TEST_F(BuilderTest_Type, Sampler) {
   ast::type::Sampler sampler(ast::type::SamplerKind::kSampler);
   EXPECT_EQ(b.GenerateTypeIfNeeded(&sampler), 1u);
