From 309b25d201eeb28a19d2a8c13691aa52e7abfbbf Mon Sep 17 00:00:00 2001 From: emufan4568 Date: Mon, 17 Oct 2022 19:44:27 +0300 Subject: [PATCH] renderer_vulkan: Use linear filtering when possible * Fixes blocky artifacts in Samus Returns --- src/video_core/renderer_vulkan/vk_texture_runtime.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp index 6713bc7ed..2b7a8e7e7 100644 --- a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp @@ -408,11 +408,17 @@ bool TextureRuntime::BlitTextures(Surface& source, Surface& dest, .baseArrayLayer = blit.dst_layer, .layerCount = 1}, .dstOffsets = dest_offsets}; + // Don't use linear filtering on depth attachments + const vk::Filter filtering = + blit_area.srcSubresource.aspectMask & vk::ImageAspectFlagBits::eDepth || + blit_area.dstSubresource.aspectMask & vk::ImageAspectFlagBits::eDepth + ? vk::Filter::eNearest + : vk::Filter::eLinear; vk::CommandBuffer command_buffer = scheduler.GetRenderCommandBuffer(); command_buffer.blitImage(source.alloc.image, vk::ImageLayout::eTransferSrcOptimal, dest.alloc.image, vk::ImageLayout::eTransferDstOptimal, blit_area, - vk::Filter::eNearest); + filtering); return true; }