From 5b07b06d6bb1d01d1aec49d6ba458fc6c789fbc9 Mon Sep 17 00:00:00 2001 From: Andres Rodriguez Date: Fri, 15 Dec 2017 00:13:50 -0500 Subject: [PATCH] radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Hook up importing semaphores of type PIPE_FD_TYPE_SYNCOBJ Signed-off-by: Andres Rodriguez Reviewed-by: Marek Olšák --- 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 d3a68e50e1c..ef80b38aa67 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_fence_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_fence_to_handle) - 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_fence_to_handle) + 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 fence fd type when importing"); + } + +finish: if (!rfence->gfx) { FREE(rfence); return; -- 2.30.2