|
@@ -61,7 +61,7 @@ static void glfw_error_callback(int error, const char* description)
|
|
|
}
|
|
|
static void check_vk_result(VkResult err)
|
|
|
{
|
|
|
- if (err == 0)
|
|
|
+ if (err == VK_SUCCESS)
|
|
|
return;
|
|
|
fprintf(stderr, "[vulkan] Error: VkResult = %d\n", err);
|
|
|
if (err < 0)
|
|
@@ -263,17 +263,15 @@ static void CleanupVulkanWindow()
|
|
|
|
|
|
static void FrameRender(ImGui_ImplVulkanH_Window* wd, ImDrawData* draw_data)
|
|
|
{
|
|
|
- VkResult err;
|
|
|
-
|
|
|
VkSemaphore image_acquired_semaphore = wd->FrameSemaphores[wd->SemaphoreIndex].ImageAcquiredSemaphore;
|
|
|
VkSemaphore render_complete_semaphore = wd->FrameSemaphores[wd->SemaphoreIndex].RenderCompleteSemaphore;
|
|
|
- err = vkAcquireNextImageKHR(g_Device, wd->Swapchain, UINT64_MAX, image_acquired_semaphore, VK_NULL_HANDLE, &wd->FrameIndex);
|
|
|
+ VkResult err = vkAcquireNextImageKHR(g_Device, wd->Swapchain, UINT64_MAX, image_acquired_semaphore, VK_NULL_HANDLE, &wd->FrameIndex);
|
|
|
if (err == VK_ERROR_OUT_OF_DATE_KHR || err == VK_SUBOPTIMAL_KHR)
|
|
|
- {
|
|
|
g_SwapChainRebuild = true;
|
|
|
+ if (err == VK_ERROR_OUT_OF_DATE_KHR)
|
|
|
return;
|
|
|
- }
|
|
|
- check_vk_result(err);
|
|
|
+ if (err != VK_SUBOPTIMAL_KHR)
|
|
|
+ check_vk_result(err);
|
|
|
|
|
|
ImGui_ImplVulkanH_Frame* fd = &wd->Frames[wd->FrameIndex];
|
|
|
{
|
|
@@ -342,11 +340,11 @@ static void FramePresent(ImGui_ImplVulkanH_Window* wd)
|
|
|
info.pImageIndices = &wd->FrameIndex;
|
|
|
VkResult err = vkQueuePresentKHR(g_Queue, &info);
|
|
|
if (err == VK_ERROR_OUT_OF_DATE_KHR || err == VK_SUBOPTIMAL_KHR)
|
|
|
- {
|
|
|
g_SwapChainRebuild = true;
|
|
|
+ if (err == VK_ERROR_OUT_OF_DATE_KHR)
|
|
|
return;
|
|
|
- }
|
|
|
- check_vk_result(err);
|
|
|
+ if (err != VK_SUBOPTIMAL_KHR)
|
|
|
+ check_vk_result(err);
|
|
|
wd->SemaphoreIndex = (wd->SemaphoreIndex + 1) % wd->SemaphoreCount; // Now we can use the next set of semaphores
|
|
|
}
|
|
|
|