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 <jonathan@marek.ca> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6719>
This commit is contained in:

committed by
Marge Bot

parent
dcc278c722
commit
2a3f6e0267
@@ -486,21 +486,14 @@ tu_CreateSemaphore(VkDevice _device,
|
|||||||
if (!sem)
|
if (!sem)
|
||||||
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
|
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->temporary.kind = TU_SEMAPHORE_NONE;
|
||||||
|
sem->permanent.kind = TU_SEMAPHORE_SYNCOBJ;
|
||||||
|
|
||||||
if (handleTypes) {
|
if (drmSyncobjCreate(device->fd, 0, &sem->permanent.syncobj) < 0) {
|
||||||
if (drmSyncobjCreate(device->fd, 0, &sem->permanent.syncobj) < 0) {
|
vk_free2(&device->vk.alloc, pAllocator, sem);
|
||||||
vk_free2(&device->vk.alloc, pAllocator, sem);
|
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
sem->permanent.kind = TU_SEMAPHORE_SYNCOBJ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*pSemaphore = tu_semaphore_to_handle(sem);
|
*pSemaphore = tu_semaphore_to_handle(sem);
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user