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 <andresx7@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Andres Rodriguez 2017-12-15 00:13:50 -05:00
parent cc9762d74d
commit 5b07b06d6b

View file

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