aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/renderer_vulkan.cpp
diff options
context:
space:
mode:
authorJoshua Ashton <joshua@froggi.es>2021-04-11 08:46:28 +0100
committerJoshua Ashton <joshua@froggi.es>2021-04-11 09:27:50 +0100
commit1a50da639d80ceca8a71f4f1db588e5df258b2b0 (patch)
tree0c607a634db7077157101f9f703a6f77c0a48d86 /src/video_core/renderer_vulkan/renderer_vulkan.cpp
parentee383f72c80387f030178eb1aa05ee7c8ec6369b (diff)
renderer_vulkan: Check return value of AcquireNextImage
We can get into a really bad state by ignoring this leading to device loss and using incorrect resources.
Diffstat (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.cpp')
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
index 1cc720ddd9..14e5f36e27 100644
--- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
@@ -143,7 +143,10 @@ void RendererVulkan::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) {
scheduler.WaitWorker();
- swapchain.AcquireNextImage();
+ while (!swapchain.AcquireNextImage()) {
+ swapchain.Create(layout.width, layout.height, is_srgb);
+ blit_screen.Recreate();
+ }
const VkSemaphore render_semaphore = blit_screen.Draw(*framebuffer, use_accelerated);
scheduler.Flush(render_semaphore);