diff --git a/src/dawn_native/ProgrammablePassEncoder.cpp b/src/dawn_native/ProgrammablePassEncoder.cpp
index 2076296..ec29c51 100644
--- a/src/dawn_native/ProgrammablePassEncoder.cpp
+++ b/src/dawn_native/ProgrammablePassEncoder.cpp
@@ -63,7 +63,7 @@
                         TextureViewBase* view = group->GetBindingAsTextureView(bindingIndex);
                         switch (bindingInfo.storageTexture.access) {
                             case wgpu::StorageTextureAccess::ReadOnly:
-                                usageTracker->TextureViewUsedAs(view, kReadonlyStorageTexture);
+                                usageTracker->TextureViewUsedAs(view, kReadOnlyStorageTexture);
                                 break;
                             case wgpu::StorageTextureAccess::WriteOnly:
                                 usageTracker->TextureViewUsedAs(view, wgpu::TextureUsage::Storage);
diff --git a/src/dawn_native/Texture.cpp b/src/dawn_native/Texture.cpp
index 310829a..bba6bce 100644
--- a/src/dawn_native/Texture.cpp
+++ b/src/dawn_native/Texture.cpp
@@ -365,7 +365,7 @@
         // Add readonly storage usage if the texture has a storage usage. The validation rules in
         // ValidatePassResourceUsage will make sure we don't use both at the same time.
         if (mUsage & wgpu::TextureUsage::Storage) {
-            mUsage |= kReadonlyStorageTexture;
+            mUsage |= kReadOnlyStorageTexture;
         }
     }
 
diff --git a/src/dawn_native/Texture.h b/src/dawn_native/Texture.h
index 18c3e78..52cfa06 100644
--- a/src/dawn_native/Texture.h
+++ b/src/dawn_native/Texture.h
@@ -39,7 +39,7 @@
     bool IsValidSampleCount(uint32_t sampleCount);
 
     static constexpr wgpu::TextureUsage kReadOnlyTextureUsages =
-        wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::Sampled | kReadonlyStorageTexture;
+        wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::Sampled | kReadOnlyStorageTexture;
 
     static constexpr wgpu::TextureUsage kWritableTextureUsages =
         wgpu::TextureUsage::CopyDst | wgpu::TextureUsage::Storage |
diff --git a/src/dawn_native/d3d12/CommandBufferD3D12.cpp b/src/dawn_native/d3d12/CommandBufferD3D12.cpp
index 623d9fc..2ccf956 100644
--- a/src/dawn_native/d3d12/CommandBufferD3D12.cpp
+++ b/src/dawn_native/d3d12/CommandBufferD3D12.cpp
@@ -280,7 +280,7 @@
                                 wgpu::TextureUsage usage;
                                 switch (bindingInfo.storageTexture.access) {
                                     case wgpu::StorageTextureAccess::ReadOnly:
-                                        usage = kReadonlyStorageTexture;
+                                        usage = kReadOnlyStorageTexture;
                                         break;
                                     case wgpu::StorageTextureAccess::WriteOnly:
                                         usage = wgpu::TextureUsage::Storage;
diff --git a/src/dawn_native/d3d12/TextureD3D12.cpp b/src/dawn_native/d3d12/TextureD3D12.cpp
index 675577d..bf4c87d 100644
--- a/src/dawn_native/d3d12/TextureD3D12.cpp
+++ b/src/dawn_native/d3d12/TextureD3D12.cpp
@@ -49,7 +49,7 @@
             if (usage & wgpu::TextureUsage::CopyDst) {
                 resourceState |= D3D12_RESOURCE_STATE_COPY_DEST;
             }
-            if (usage & (wgpu::TextureUsage::Sampled | kReadonlyStorageTexture)) {
+            if (usage & (wgpu::TextureUsage::Sampled | kReadOnlyStorageTexture)) {
                 resourceState |= (D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE |
                                   D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
             }
diff --git a/src/dawn_native/dawn_platform.h b/src/dawn_native/dawn_platform.h
index 19d47e8..4591c0f 100644
--- a/src/dawn_native/dawn_platform.h
+++ b/src/dawn_native/dawn_platform.h
@@ -27,7 +27,7 @@
     // (readonly storage texture usage) for render pass resource tracking
     static constexpr wgpu::BufferUsage kReadOnlyStorageBuffer =
         static_cast<wgpu::BufferUsage>(0x80000000);
-    static constexpr wgpu::TextureUsage kReadonlyStorageTexture =
+    static constexpr wgpu::TextureUsage kReadOnlyStorageTexture =
         static_cast<wgpu::TextureUsage>(0x80000000);
 
     // Add an extra texture usage for textures that will be presented, for use in backends
diff --git a/src/dawn_native/vulkan/TextureVk.cpp b/src/dawn_native/vulkan/TextureVk.cpp
index 81b3d3b..d71437a 100644
--- a/src/dawn_native/vulkan/TextureVk.cpp
+++ b/src/dawn_native/vulkan/TextureVk.cpp
@@ -71,6 +71,9 @@
             if (usage & wgpu::TextureUsage::Storage) {
                 flags |= VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT;
             }
+            if (usage & kReadOnlyStorageTexture) {
+                flags |= VK_ACCESS_SHADER_READ_BIT;
+            }
             if (usage & wgpu::TextureUsage::RenderAttachment) {
                 if (format.HasDepthOrStencil()) {
                     flags |= VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
@@ -128,7 +131,7 @@
                 // and store operations on storage images can only be done on the images in
                 // VK_IMAGE_LAYOUT_GENERAL layout.
                 case wgpu::TextureUsage::Storage:
-                case kReadonlyStorageTexture:
+                case kReadOnlyStorageTexture:
                     return VK_IMAGE_LAYOUT_GENERAL;
                 case wgpu::TextureUsage::RenderAttachment:
                     if (format.HasDepthOrStencil()) {
@@ -156,7 +159,7 @@
             if (usage & (wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::CopyDst)) {
                 flags |= VK_PIPELINE_STAGE_TRANSFER_BIT;
             }
-            if (usage & (wgpu::TextureUsage::Sampled | kReadonlyStorageTexture)) {
+            if (usage & (wgpu::TextureUsage::Sampled | kReadOnlyStorageTexture)) {
                 // TODO(cwallez@chromium.org): Only transition to the usage we care about to avoid
                 // introducing FS -> VS dependencies that would prevent parallelization on tiler
                 // GPUs
@@ -392,7 +395,7 @@
         if (usage & wgpu::TextureUsage::Sampled) {
             flags |= VK_IMAGE_USAGE_SAMPLED_BIT;
         }
-        if (usage & wgpu::TextureUsage::Storage) {
+        if (usage & (wgpu::TextureUsage::Storage | kReadOnlyStorageTexture)) {
             flags |= VK_IMAGE_USAGE_STORAGE_BIT;
         }
         if (usage & wgpu::TextureUsage::RenderAttachment) {
diff --git a/src/tests/white_box/InternalResourceUsageTests.cpp b/src/tests/white_box/InternalResourceUsageTests.cpp
index 438222f..5dff5ff 100644
--- a/src/tests/white_box/InternalResourceUsageTests.cpp
+++ b/src/tests/white_box/InternalResourceUsageTests.cpp
@@ -38,7 +38,7 @@
     wgpu::TextureDescriptor descriptor;
     descriptor.format = wgpu::TextureFormat::RGBA8Unorm;
     descriptor.size = {1, 1, 1};
-    descriptor.usage = dawn_native::kReadonlyStorageTexture;
+    descriptor.usage = dawn_native::kReadOnlyStorageTexture;
     ASSERT_DEVICE_ERROR(device.CreateTexture(&descriptor));
 }
 
