From: Andres Rodriguez Date: Fri, 15 Dec 2017 05:13:50 +0000 (-0500) Subject: radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5b07b06d6bb1d01d1aec49d6ba458fc6c789fbc9;p=mesa.git radeonsi: add support for importing PIPE_FD_TYPE_SYNCOBJ semaphores Hook up importing semaphores of type PIPE_FD_TYPE_SYNCOBJ Signed-off-by: Andres Rodriguez Reviewed-by: Marek Olšák --- 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;