From 769694ff9b2fede919e5b9325fc8a21893eafd5b Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 10 Sep 2026 13:34:26 +0200 Subject: [PATCH 1/2] Fix flickering on multi-windows on macOS regression from #4141 --- .../GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp index b259ed688..3bc38a765 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp @@ -135,6 +135,7 @@ GPUTextureView* GPUSwapChainVulkan::GetBackBufferView() PROFILE_CPU(); auto context = _device->MainContext; auto cmdBufferManager = context->GetCmdBufferManager(); + // Keep commands recorded before acquire independent from the image-acquired semaphore wait below. if (cmdBufferManager->HasPendingActiveCmdBuffer()) context->Flush(); @@ -152,7 +153,6 @@ GPUTextureView* GPUSwapChainVulkan::GetBackBufferView() acquiredBackBuffer.WaitForSubmit(); const auto backBuffer = &_backBuffers[_acquiredImageIndex].Handle; - auto cmdBuffer = cmdBufferManager->GetCmdBuffer(); // Transition to render target (typical usage in most cases when calling backbuffer getter) @@ -171,6 +171,17 @@ GPUTextureView* GPUSwapChainVulkan::GetBackBufferView() void GPUSwapChainVulkan::Begin(RenderTask* task) { GPUSwapChain::Begin(task); + + // Wait for the backbuffer to be available + if (_currentImageIndex != -1) + { + auto& backBuffer = _backBuffers[_currentImageIndex]; + if (backBuffer.SubmitCmdBuffer) + { + backBuffer.SubmitCmdBuffer->Wait(); + backBuffer.SubmitCmdBuffer = nullptr; + } + } } bool GPUSwapChainVulkan::Resize(int32 width, int32 height) From 796bdae4eaea6fb25edadde0e20da05e7ee8fb8b Mon Sep 17 00:00:00 2001 From: killerdevildog Date: Sun, 13 Sep 2026 13:48:01 -0600 Subject: [PATCH 2/2] Fix ParseFloat rejecting a '+' sign in the exponent --- Source/Engine/Platform/Base/StringUtilsBase.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/Engine/Platform/Base/StringUtilsBase.cpp b/Source/Engine/Platform/Base/StringUtilsBase.cpp index 750758b33..fbf77a1f9 100644 --- a/Source/Engine/Platform/Base/StringUtilsBase.cpp +++ b/Source/Engine/Platform/Base/StringUtilsBase.cpp @@ -458,7 +458,16 @@ bool ParseFloat(const C* str, T* ret) if (*str == 'e' || *str == 'E') { str++; - T powerer = *str == '-' ? str++, (T)0.1 : (T)10; + T powerer = (T)10; + if (*str == '-') + { + powerer = (T)0.1; + str++; + } + else if (*str == '+') + { + str++; + } T power = 0; while (*str >= '0' && *str <= '9') {