diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 79d4bc3a66..0cbd246865 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp @@ -2169,11 +2169,18 @@ VkImageView ImageView::StorageView(Shader::TextureType texture_type, storage_views = std::make_unique(); } if (image_format == Shader::ImageFormat::Typeless) { + auto& unsigned_view = storage_views->unsigneds[static_cast(texture_type)]; + if (unsigned_view) { + return *unsigned_view; + } auto& view = storage_views->typeless_views[static_cast(texture_type)]; if (view) { return *view; } - view = MakeView(format, VK_IMAGE_ASPECT_COLOR_BIT); + const auto fmt_info = + MaxwellToVK::SurfaceFormat(*device, FormatType::Optimal, /*is_image=*/true, format); + const VkFormat vk_format = fmt_info.format; + view = MakeView(vk_format, VK_IMAGE_ASPECT_COLOR_BIT); return *view; } const bool is_signed{image_format == Shader::ImageFormat::R8_SINT ||