Mesa (main): panvk: Make panvk_queue_transfer_sync more generic

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jul 5 14:13:29 UTC 2021


Module: Mesa
Branch: main
Commit: 5997f18d8a316fb87db36a51d08bab844db9b5ea
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5997f18d8a316fb87db36a51d08bab844db9b5ea

Author: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Date:   Mon Jul  5 11:57:35 2021 +0200

panvk: Make panvk_queue_transfer_sync more generic

Have it accept a syncobj so it can be used in a future commit.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11709>

---

 src/panfrost/vulkan/panvk_device.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/panfrost/vulkan/panvk_device.c b/src/panfrost/vulkan/panvk_device.c
index 68f518ae32e..ddd146cb244 100644
--- a/src/panfrost/vulkan/panvk_device.c
+++ b/src/panfrost/vulkan/panvk_device.c
@@ -1164,8 +1164,7 @@ panvk_queue_submit_batch(struct panvk_queue *queue,
 }
 
 static void
-panvk_queue_transfer_sync(struct panvk_queue *queue,
-                          struct panvk_syncobj *dst)
+panvk_queue_transfer_sync(struct panvk_queue *queue, uint32_t syncobj)
 {
    const struct panfrost_device *pdev = &queue->device->physical_device->pdev;
    int ret;
@@ -1180,7 +1179,7 @@ panvk_queue_transfer_sync(struct panvk_queue *queue,
    assert(!ret);
    assert(handle.fd >= 0);
 
-   handle.handle = dst->temporary ? : dst->permanent;
+   handle.handle = syncobj;
    ret = drmIoctl(pdev->fd, DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE, &handle);
    assert(!ret);
 
@@ -1258,13 +1257,13 @@ panvk_QueueSubmit(VkQueue _queue,
       /* Transfer the out fence to signal semaphores */
       for (unsigned i = 0; i < submit->signalSemaphoreCount; i++) {
          VK_FROM_HANDLE(panvk_semaphore, sem, submit->pSignalSemaphores[i]);
-         panvk_queue_transfer_sync(queue, &sem->syncobj);
+         panvk_queue_transfer_sync(queue, sem->syncobj.temporary ? : sem->syncobj.permanent);
       }
    }
 
    if (fence) {
       /* Transfer the last out fence to the fence object */
-      panvk_queue_transfer_sync(queue, &fence->syncobj);
+      panvk_queue_transfer_sync(queue, fence->syncobj.temporary ? : fence->syncobj.permanent);
    }
 
    return VK_SUCCESS;



More information about the mesa-commit mailing list