From d9152cb949c9b3e6a7e9261a231fbad4f0165912 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 13 Mar 2020 10:38:31 +0100 Subject: [PATCH] v3dv: only export the last job sync object once Instead of exporting the very same object once per signal semaphore Part-of: --- src/broadcom/vulkan/v3dv_queue.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_queue.c b/src/broadcom/vulkan/v3dv_queue.c index f1274bfe136..393eba24930 100644 --- a/src/broadcom/vulkan/v3dv_queue.c +++ b/src/broadcom/vulkan/v3dv_queue.c @@ -83,6 +83,11 @@ process_semaphores_to_signal(struct v3dv_device *device, if (count == 0) return VK_SUCCESS; + int fd; + drmSyncobjExportSyncFile(device->render_fd, device->last_job_sync, &fd); + if (fd == -1) + return VK_ERROR_DEVICE_LOST; + for (uint32_t i = 0; i < count; i++) { struct v3dv_semaphore *sem = v3dv_semaphore_from_handle(sems[i]); @@ -90,11 +95,6 @@ process_semaphores_to_signal(struct v3dv_device *device, close(sem->fd); sem->fd = -1; - int fd; - drmSyncobjExportSyncFile(device->render_fd, device->last_job_sync, &fd); - if (fd == -1) - return VK_ERROR_DEVICE_LOST; - int ret = drmSyncobjImportSyncFile(device->render_fd, sem->sync, fd); if (ret) return VK_ERROR_DEVICE_LOST;