From ff9f624b9bba7a61005745f4274bdcdb16fefee5 Mon Sep 17 00:00:00 2001 From: kingscallop <54776947+kingscallop@users.noreply.github.com> Date: Sat, 18 Jul 2020 21:41:35 +0100 Subject: [PATCH] Improves handling of window resizes on vulkan (avoids crashes) (#2123) * Improves handling of window resizes on vulkan (avoids crashes) * Change to previous commit as requested. Rebased and added refresh swapchain check inside updateResolution(), similar to renderer_d3d12.cpp. --- src/renderer_vk.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 37554b179..7737fd476 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -2898,7 +2898,7 @@ VK_IMPORT_DEVICE return idx; } - void updateResolution(const Resolution& _resolution) + bool updateResolution(const Resolution& _resolution) { if (!!(_resolution.reset & BGFX_RESET_MAXANISOTROPY) ) { @@ -2982,7 +2982,7 @@ VK_IMPORT_DEVICE { m_resolution.width = 0; m_resolution.height = 0; - return; + return true; } VK_CHECK(createSwapchain() ); @@ -3009,6 +3009,13 @@ VK_IMPORT_DEVICE ); } } + + if (m_needToRefreshSwapchain) + { + return true; + } + + return false; } void setShaderUniform(uint8_t _flags, uint32_t _regIndex, const void* _val, uint32_t _numRegs) @@ -5870,7 +5877,10 @@ VK_DESTROY submitCommandAndWait(m_commandBuffer); m_commandBuffer = VK_NULL_HANDLE; - updateResolution(_render->m_resolution); + if (updateResolution(_render->m_resolution) ) + { + return; + } if (m_swapchain == VK_NULL_HANDLE) return;