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
commitbcf58c82108c32aa3e2118be152bdc728bf4744e (patch)
tree0c607a634db7077157101f9f703a6f77c0a48d86 /src/video_core/renderer_vulkan/renderer_vulkan.cpp
parent4f60818eaecfb7dfae9f89523a7dd4a350979157 (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 1cc720ddd..14e5f36e2 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);