Otherwise the wait only happens at flip time, which messes with
keeping idle buffers around if the GPU work makes the image miss
the next flip.
I decided not to use the wait fences as those are still xshm fences,
so that means we'd still have to wait in the application. Just doing
it before presenting makes things simpler.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
+ if (chain->base.present_mode == VK_PRESENT_MODE_MAILBOX_KHR) {
+ result = chain->base.wsi->WaitForFences(chain->base.device, 1,
+ &chain->base.fences[image_index],
+ true, UINT64_MAX);
+ if (result != VK_SUCCESS) {
+ result = VK_ERROR_OUT_OF_DATE_KHR;
+ goto fail;
+ }
+ }
+
uint64_t target_msc = 0;
if (chain->has_acquire_queue)
target_msc = chain->last_present_msc + 1;
uint64_t target_msc = 0;
if (chain->has_acquire_queue)
target_msc = chain->last_present_msc + 1;
- if (chain->base.present_mode == VK_PRESENT_MODE_FIFO_KHR) {
+ if (chain->base.present_mode == VK_PRESENT_MODE_FIFO_KHR ||
+ chain->base.present_mode == VK_PRESENT_MODE_MAILBOX_KHR) {
chain->has_present_queue = true;
/* Initialize our queues. We make them base.image_count + 1 because we will
chain->has_present_queue = true;
/* Initialize our queues. We make them base.image_count + 1 because we will