From 2d4df57d87d430ed9e3b43d2d66544ef53e78c5f Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sat, 17 Jul 2021 00:22:25 +0300 Subject: [PATCH] vk: Fix nul deref in spill code - Restores code lost in a rebase --- rpcs3/Emu/RSX/VK/VKRenderTargets.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/RSX/VK/VKRenderTargets.cpp b/rpcs3/Emu/RSX/VK/VKRenderTargets.cpp index 587dfa90c5..b2688d855c 100644 --- a/rpcs3/Emu/RSX/VK/VKRenderTargets.cpp +++ b/rpcs3/Emu/RSX/VK/VKRenderTargets.cpp @@ -540,7 +540,7 @@ namespace vk break; } - vk::image* src = nullptr; + vk::viewable_image* src = nullptr; if (samples() == 1) [[likely]] { src = this; @@ -588,7 +588,24 @@ namespace vk if (msaa_flags & rsx::surface_state_flags::require_resolve) { ensure(samples() > 1); + const bool borrowed = [&]() + { + if (src != resolve_surface.get()) + { + ensure(!resolve_surface); + resolve_surface.reset(src); + return true; + } + + return false; + }(); + resolve(cmd); + + if (borrowed) + { + resolve_surface.release(); + } } const auto pdev = vk::get_current_renderer();