This was causing vkAcquireNextImageKHR to not signal the fences and
semaphores. In the case where the semaphore was brand new, this could
cause an unsignalled syncobj to be passed into execbuffer2 which it will
reject with -EINVAL leading to VK_ERROR_DEVICE_LOST. Thanks to Henrik
RydgÄrd who works on the PPSSPP project for helping me figure this out.
Fixes: ca3cfbf6f1e00 "vk: Add an initial implementation of the actual..."
Fixes: 778b51f491cfe "vulkan/wsi: Add a hooks for signaling semaphores..."
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5672>
VkResult result = swapchain->acquire_next_image(swapchain, pAcquireInfo,
pImageIndex);
- if (result != VK_SUCCESS)
+ if (result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR)
return result;
if (wsi->set_memory_ownership) {
image->memory);
}
- return VK_SUCCESS;
+ return result;
}
VkResult
region = ®ions->pRegions[i];
result = swapchain->queue_present(swapchain, image_index, region);
- if (result != VK_SUCCESS)
+ if (result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR)
goto fail_present;
if (wsi->set_memory_ownership) {