diff options
| author | Joshua Ashton <joshua@froggi.es> | 2021-04-11 08:46:28 +0100 |
|---|---|---|
| committer | Joshua Ashton <joshua@froggi.es> | 2021-04-11 09:27:50 +0100 |
| commit | bcf58c82108c32aa3e2118be152bdc728bf4744e (patch) | |
| tree | 0c607a634db7077157101f9f703a6f77c0a48d86 /src/video_core/renderer_vulkan/vk_swapchain.cpp | |
| parent | 4f60818eaecfb7dfae9f89523a7dd4a350979157 (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/vk_swapchain.cpp')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_swapchain.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index 0b63bd6c8..dfd5c65ba 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp @@ -82,11 +82,13 @@ void VKSwapchain::Create(u32 width, u32 height, bool srgb) { resource_ticks.resize(image_count); } -void VKSwapchain::AcquireNextImage() { - device.GetLogical().AcquireNextImageKHR(*swapchain, std::numeric_limits<u64>::max(), - *present_semaphores[frame_index], {}, &image_index); +bool VKSwapchain::AcquireNextImage() { + const VkResult result = + device.GetLogical().AcquireNextImageKHR(*swapchain, std::numeric_limits<u64>::max(), + *present_semaphores[frame_index], {}, &image_index); scheduler.Wait(resource_ticks[image_index]); + return result == VK_SUCCESS || result == VK_SUBOPTIMAL_KHR; } bool VKSwapchain::Present(VkSemaphore render_semaphore) { |
