From 9998714b50ff8cd69e97839944bc2bda7f017a76 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 26 Apr 2023 13:09:30 +0100 Subject: [PATCH] Unwrap vulkan fences in present fence information struct --- .../driver/vulkan/wrappers/vk_wsi_funcs.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp index fad4bea8c..347469a22 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp @@ -819,18 +819,23 @@ VkResult WrappedVulkan::vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR m_LastSwap = ResourceId(); + byte *tempMem = GetTempMemory(GetNextPatchSize(pPresentInfo->pNext)); + if(pPresentInfo->swapchainCount == 1) { - HandlePresent(queue, pPresentInfo, unwrappedWaitSems); + VkPresentInfoKHR mutableInfo = *pPresentInfo; + + byte *mem = tempMem; + UnwrapNextChain(m_State, "VkPresentInfoKHR", mem, (VkBaseInStructure *)&mutableInfo); + + HandlePresent(queue, &mutableInfo, unwrappedWaitSems); } else { VkPresentInfoKHR mutableInfo = *pPresentInfo; - { - byte *tempMem = GetTempMemory(GetNextPatchSize(mutableInfo.pNext)); - CopyNextChainForPatching("VkPresentInfoKHR", tempMem, (VkBaseInStructure *)&mutableInfo); - } + byte *mem = tempMem; + UnwrapNextChain(m_State, "VkPresentInfoKHR", mem, (VkBaseInStructure *)&mutableInfo); mutableInfo.swapchainCount = 1; @@ -889,6 +894,8 @@ VkResult WrappedVulkan::vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR unwrappedInfo.pWaitSemaphores = unwrappedWaitSems.data(); unwrappedInfo.waitSemaphoreCount = (uint32_t)unwrappedWaitSems.size(); + UnwrapNextChain(m_State, "VkPresentInfoKHR", tempMem, (VkBaseInStructure *)&unwrappedInfo); + VkResult vkr; SERIALISE_TIME_CALL(vkr = ObjDisp(queue)->QueuePresentKHR(Unwrap(queue), &unwrappedInfo));