summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-07-11 00:27:36 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-07-11 00:27:36 +0200
commitf5bb5db8ae3753526f42a1b0a78a4ed4de5244f5 (patch)
treed61e2aa9f6eb7b329f3b3f2f774837dfd6fa2f56
parent34d4c9197dfc56555ef7da0f3420cf736680c92d (diff)
parentcf2d2e2dd84e52ba4f7d687932e8195e08264b1d (diff)
downloadredot-engine-f5bb5db8ae3753526f42a1b0a78a4ed4de5244f5.tar.gz
Merge pull request #94135 from Calinou/vulkan-swapchain-resize-error-fail-silently
Silence Vulkan "Unable to acquire framebuffer." swapchain error
-rw-r--r--servers/rendering/rendering_device.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp
index 801ad1b825..c65d3bec95 100644
--- a/servers/rendering/rendering_device.cpp
+++ b/servers/rendering/rendering_device.cpp
@@ -3500,7 +3500,12 @@ Error RenderingDevice::screen_prepare_for_drawing(DisplayServer::WindowID p_scre
framebuffer = driver->swap_chain_acquire_framebuffer(main_queue, it->value, resize_required);
}
- ERR_FAIL_COND_V_MSG(framebuffer.id == 0, FAILED, "Unable to acquire framebuffer.");
+ if (framebuffer.id == 0) {
+ // Some drivers like NVIDIA are fast enough to invalidate the swap chain between resizing and acquisition (GH-94104).
+ // This typically occurs during continuous window resizing operations, especially if done quickly.
+ // Allow this to fail silently since it has no visual consequences.
+ return ERR_CANT_CREATE;
+ }
// Store the framebuffer that will be used next to draw to this screen.
screen_framebuffers[p_screen] = framebuffer;