renderer_vulkan: Use linear filtering when possible
* Fixes blocky artifacts in Samus Returns
This commit is contained in:
@ -408,11 +408,17 @@ bool TextureRuntime::BlitTextures(Surface& source, Surface& dest,
|
|||||||
.baseArrayLayer = blit.dst_layer,
|
.baseArrayLayer = blit.dst_layer,
|
||||||
.layerCount = 1},
|
.layerCount = 1},
|
||||||
.dstOffsets = dest_offsets};
|
.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();
|
vk::CommandBuffer command_buffer = scheduler.GetRenderCommandBuffer();
|
||||||
command_buffer.blitImage(source.alloc.image, vk::ImageLayout::eTransferSrcOptimal,
|
command_buffer.blitImage(source.alloc.image, vk::ImageLayout::eTransferSrcOptimal,
|
||||||
dest.alloc.image, vk::ImageLayout::eTransferDstOptimal, blit_area,
|
dest.alloc.image, vk::ImageLayout::eTransferDstOptimal, blit_area,
|
||||||
vk::Filter::eNearest);
|
filtering);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user