Hook up importing semaphores of type PIPE_FD_TYPE_SYNCOBJ

Signed-off-by: Andres Rodriguez <andre...@gmail.com>
---
 src/gallium/drivers/radeonsi/si_fence.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_fence.c 
b/src/gallium/drivers/radeonsi/si_fence.c
index 3b30eb0..086d45c 100644
--- a/src/gallium/drivers/radeonsi/si_fence.c
+++ b/src/gallium/drivers/radeonsi/si_fence.c
@@ -305,18 +305,32 @@ static void si_create_semaphore_fd(struct pipe_context 
*ctx,
        struct radeon_winsys *ws = sscreen->ws;
        struct si_multi_fence *rfence;
 
-       assert(type == PIPE_FD_TYPE_NATIVE_SYNC);
-
        *pfence = NULL;
 
-       if (!sscreen->info.has_sync_file)
-               return;
-
        rfence = si_create_multi_fence();
        if (!rfence)
                return;
 
-       rfence->gfx = ws->fence_import_sync_file(ws, fd);
+       switch (type) {
+       case PIPE_FD_TYPE_NATIVE_SYNC:
+               if (!sscreen->info.has_sync_file)
+                       goto finish;
+
+               rfence->gfx = ws->fence_import_sync_file(ws, fd);
+               break;
+
+       case PIPE_FD_TYPE_SYNCOBJ:
+               if (!sscreen->info.has_syncobj)
+                       goto finish;
+
+               rfence->gfx = ws->fence_import_syncobj(ws, fd);
+               break;
+
+       default:
+               unreachable("bad semaphore type when importing");
+       }
+
+finish:
        if (!rfence->gfx) {
                FREE(rfence);
                return;
-- 
2.9.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to