diff --git a/src/video_core/renderer_vulkan/vk_compute_pass.cpp b/src/video_core/renderer_vulkan/vk_compute_pass.cpp index ea03620169..cb9132b997 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pass.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pass.cpp @@ -962,6 +962,10 @@ bool BlockLinearUnswizzle2DPass::IsSupported(const Device& device, if (device.GetStorageBufferAlignment() > Tegra::Texture::GOB_SIZE) { return false; } + if (VideoCore::Surface::GetFormatType(info.format) != + VideoCore::Surface::SurfaceType::ColorTexture) { + return false; + } if (VideoCore::Surface::IsPixelFormatASTC(info.format) && !device.IsOptimalAstcSupported()) { return false; } @@ -1222,6 +1226,10 @@ bool BlockLinearUnswizzle3DBufferPass::IsSupported(const Device& device, if (info.size.depth <= 1) { return false; } + if (VideoCore::Surface::GetFormatType(info.format) != + VideoCore::Surface::SurfaceType::ColorTexture) { + return false; + } if (VideoCore::Surface::IsPixelFormatASTC(info.format)) { return false; } diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index fd901db22e..a2a04379cd 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp @@ -3147,7 +3147,7 @@ void TextureCacheRuntime::AccelerateImageUpload( std::span swizzles, u32 z_start, u32 z_count) { - if (IsPixelFormatASTC(image.info.format)) { + if (astc_decoder_pass && WillUseAcceleratedAstcDecode(device, image.info)) { return astc_decoder_pass->Assemble(image, map, swizzles); }