v3dv: only export the last job sync object once

Instead of exporting the very same object once per signal semaphore

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
This commit is contained in:
Iago Toral Quiroga 2020-03-13 10:38:31 +01:00 committed by Marge Bot
parent 5cfc3b5cc9
commit d9152cb949

View file

@ -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;