From 2a3f6e0267f1be7c0290eb0c14e5ca6f1c387cab Mon Sep 17 00:00:00 2001 From: Jonathan Marek Date: Mon, 28 Sep 2020 22:38:24 -0400 Subject: [PATCH] turnip: always create permanent syncobj for semaphore This allows non-exported semaphores to behave correctly instead of being ignored in QueueSubmit(). Signed-off-by: Jonathan Marek Part-of: --- src/freedreno/vulkan/tu_drm.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/freedreno/vulkan/tu_drm.c b/src/freedreno/vulkan/tu_drm.c index 4d50ecf3410..7ec10d9e552 100644 --- a/src/freedreno/vulkan/tu_drm.c +++ b/src/freedreno/vulkan/tu_drm.c @@ -486,21 +486,14 @@ tu_CreateSemaphore(VkDevice _device, if (!sem) return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); - const VkExportSemaphoreCreateInfo *export = - vk_find_struct_const(pCreateInfo->pNext, EXPORT_SEMAPHORE_CREATE_INFO); - VkExternalSemaphoreHandleTypeFlags handleTypes = - export ? export->handleTypes : 0; - - sem->permanent.kind = TU_SEMAPHORE_NONE; sem->temporary.kind = TU_SEMAPHORE_NONE; + sem->permanent.kind = TU_SEMAPHORE_SYNCOBJ; - if (handleTypes) { - if (drmSyncobjCreate(device->fd, 0, &sem->permanent.syncobj) < 0) { - vk_free2(&device->vk.alloc, pAllocator, sem); - return VK_ERROR_OUT_OF_HOST_MEMORY; - } - sem->permanent.kind = TU_SEMAPHORE_SYNCOBJ; + if (drmSyncobjCreate(device->fd, 0, &sem->permanent.syncobj) < 0) { + vk_free2(&device->vk.alloc, pAllocator, sem); + return VK_ERROR_OUT_OF_HOST_MEMORY; } + *pSemaphore = tu_semaphore_to_handle(sem); return VK_SUCCESS; }