Clear frame before blitting

This commit is contained in:
Lander Gallastegi 2024-09-23 21:20:51 +02:00
commit d33b0847c0

View file

@ -252,18 +252,24 @@ Frame* RendererVulkan::PrepareFrameInternal(VideoCore::Image& image, bool is_eop
vk::PipelineStageFlagBits::eTransfer, vk::DependencyFlagBits::eByRegion, vk::PipelineStageFlagBits::eTransfer, vk::DependencyFlagBits::eByRegion,
{}, {}, pre_barrier); {}, {}, pre_barrier);
// Clear the frame image before blitting to avoid artifacts.
const vk::ClearColorValue clear_color{std::array{0.0f, 0.0f, 0.0f, 1.0f}};
const vk::ImageSubresourceRange clear_range{
.aspectMask = vk::ImageAspectFlagBits::eColor,
.baseMipLevel = 0,
.levelCount = 1,
.baseArrayLayer = 0,
.layerCount = VK_REMAINING_ARRAY_LAYERS,
};
cmdbuf.clearColorImage(frame->image, vk::ImageLayout::eTransferDstOptimal, clear_color,
clear_range);
// Post-processing (Anti-aliasing, FSR etc) goes here. For now just blit to the frame image. // Post-processing (Anti-aliasing, FSR etc) goes here. For now just blit to the frame image.
<<<<<<< HEAD cmdbuf.blitImage(image.image, image.last_state.layout, frame->image,
cmdbuf.blitImage( vk::ImageLayout::eTransferDstOptimal,
image.image, image.last_state.layout, frame->image, vk::ImageLayout::eTransferDstOptimal,
MakeImageBlitFit(image.info.size.width, image.info.size.height, frame->width, frame->height),
vk::Filter::eLinear);
=======
cmdbuf.blitImage(image.image, image.layout, frame->image, vk::ImageLayout::eTransferDstOptimal,
MakeImageBlitFit(image.info.size.width, image.info.size.height, frame->width, MakeImageBlitFit(image.info.size.width, image.info.size.height, frame->width,
frame->height), frame->height),
vk::Filter::eLinear); vk::Filter::eLinear);
>>>>>>> 228571f9 (clang-format)
const vk::ImageMemoryBarrier post_barrier{ const vk::ImageMemoryBarrier post_barrier{
.srcAccessMask = vk::AccessFlagBits::eTransferWrite, .srcAccessMask = vk::AccessFlagBits::eTransferWrite,