Skip to content

Commit

Permalink
Viewports, Backends: Vulkan: handle VK_ERROR_OUT_OF_DATE_KHR when res…
Browse files Browse the repository at this point in the history
…izing secondary viewport (#3766, #3758)

Cannot repro here but appears to a user on Linux. Fix may be not super solid.
  • Loading branch information
ocornut committed Jan 28, 2021
1 parent 376c88a commit cff8162
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion backends/imgui_impl_vulkan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1518,7 +1518,10 @@ static void ImGui_ImplVulkan_SwapBuffers(ImGuiViewport* viewport, void*)
info.pSwapchains = &wd->Swapchain;
info.pImageIndices = &present_index;
err = vkQueuePresentKHR(v->Queue, &info);
check_vk_result(err);
if (err == VK_ERROR_OUT_OF_DATE_KHR)
ImGui_ImplVulkanH_CreateOrResizeWindow(v->Instance, v->PhysicalDevice, v->Device, &data->Window, v->QueueFamily, v->Allocator, (int)viewport->Size.x, (int)viewport->Size.y, v->MinImageCount);
else
check_vk_result(err);

wd->FrameIndex = (wd->FrameIndex + 1) % wd->ImageCount; // This is for the next vkWaitForFences()
wd->SemaphoreIndex = (wd->SemaphoreIndex + 1) % wd->ImageCount; // Now we can use the next set of semaphores
Expand Down

0 comments on commit cff8162

Please sign in to comment.