From cbb02f9447e31f12235506011e0882ab8f50d60f Mon Sep 17 00:00:00 2001 From: Megamouse Date: Wed, 5 Mar 2025 00:02:41 +0100 Subject: [PATCH] VK: add memory barriers to copy_image --- rpcs3/Emu/RSX/VK/VKPresent.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rpcs3/Emu/RSX/VK/VKPresent.cpp b/rpcs3/Emu/RSX/VK/VKPresent.cpp index 0a79637862..d0ad054f71 100644 --- a/rpcs3/Emu/RSX/VK/VKPresent.cpp +++ b/rpcs3/Emu/RSX/VK/VKPresent.cpp @@ -773,9 +773,15 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info) VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, 0, VMM_ALLOCATION_POOL_UNDEFINED); + tmp_tex->change_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); + image_to_flip->push_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); + const areai rect = areai(0, 0, buffer_width, buffer_height); vk::copy_image(*m_current_command_buffer, image_to_flip, tmp_tex.get(), rect, rect, 1); + image_to_flip->pop_layout(*m_current_command_buffer); + tmp_tex->change_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); + vk::framebuffer_holder* sshot_fbo = vk::get_framebuffer(*m_device, buffer_width, buffer_height, VK_FALSE, single_target_pass, { tmp_tex.get() }); sshot_fbo->add_ref(); render_overlays(sshot_fbo, areau(rect));