From 7c7a4ae5ea3c3b2b1319bdae1c2f4e47d31c8d8c Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 15 Feb 2018 17:48:15 +0000 Subject: [PATCH] Fix a crash if framebuffer size changes before overlay is set. Refs #863 --- renderdoc/driver/vulkan/vk_overlay.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_overlay.cpp b/renderdoc/driver/vulkan/vk_overlay.cpp index 3a73284a9..94aca9180 100644 --- a/renderdoc/driver/vulkan/vk_overlay.cpp +++ b/renderdoc/driver/vulkan/vk_overlay.cpp @@ -397,6 +397,17 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, CompType typeHint, Debu VulkanCreationInfo::Image &iminfo = m_pDriver->m_CreationInfo.m_Image[texid]; + // bail out if the framebuffer dimensions don't match the current framebuffer, or draws will fail. + // This is an order-of-operations problem, if the overlay is set when the event is changed it is + // refreshed before the UI layer can update the current texture. + { + const VulkanCreationInfo::Framebuffer &fb = + m_pDriver->m_CreationInfo.m_Framebuffer[m_pDriver->m_RenderState.framebuffer]; + + if(fb.width != iminfo.extent.width || fb.height != iminfo.extent.height) + return GetResID(m_Overlay.Image); + } + VkCommandBuffer cmd = m_pDriver->GetNextCmd(); VkCommandBufferBeginInfo beginInfo = {VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, NULL,