Commit 02f94c33 authored by Lionel Landwerlin's avatar Lionel Landwerlin Committed by Marge Bot
Browse files

anv: don't wait for completion of work on vkQueuePresent()



Another mistake which is that we don't use the right wait API.
Signed-off-by: Lionel Landwerlin's avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 829699ba ("anv: implement shareable timeline semaphores")
Closes: #4276

Reviewed-by: Jason Ekstrand's avatarJason Ekstrand <jason@jlekstrand.net>
Part-of: <!9188>
parent cb74cd81
Pipeline #274615 waiting for manual action with stages
......@@ -306,11 +306,16 @@ VkResult anv_QueuePresentKHR(
/* Make sure all of the dependency semaphores have materialized when
* using a threaded submission.
*/
uint32_t *syncobjs = vk_alloc(&device->vk.alloc,
sizeof(*syncobjs) * pPresentInfo->waitSemaphoreCount, 8,
VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
ANV_MULTIALLOC(ma);
if (!syncobjs)
uint64_t *values;
uint32_t *syncobjs;
anv_multialloc_add(&ma, &values, pPresentInfo->waitSemaphoreCount);
anv_multialloc_add(&ma, &syncobjs, pPresentInfo->waitSemaphoreCount);
if (!anv_multialloc_alloc(&ma, &device->vk.alloc,
VK_SYSTEM_ALLOCATION_SCOPE_COMMAND))
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
uint32_t wait_count = 0;
......@@ -323,18 +328,21 @@ VkResult anv_QueuePresentKHR(
if (impl->type == ANV_SEMAPHORE_TYPE_DUMMY)
continue;
assert(impl->type == ANV_SEMAPHORE_TYPE_DRM_SYNCOBJ);
syncobjs[wait_count++] = impl->syncobj;
syncobjs[wait_count] = impl->syncobj;
values[wait_count] = 0;
}
int ret = 0;
if (wait_count > 0) {
ret =
anv_gem_syncobj_wait(device, syncobjs, wait_count,
anv_get_absolute_timeout(INT64_MAX),
true /* wait_all */);
anv_gem_syncobj_timeline_wait(device,
syncobjs, values, wait_count,
anv_get_absolute_timeout(INT64_MAX),
true /* wait_all */,
true /* wait_materialize */);
}
vk_free(&device->vk.alloc, syncobjs);
vk_free(&device->vk.alloc, values);
if (ret)
return vk_error(VK_ERROR_DEVICE_LOST);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment