diff options
author | Andres Rodriguez <[email protected]> | 2017-12-15 00:13:50 -0500 |
---|---|---|
committer | Andres Rodriguez <[email protected]> | 2018-01-30 15:13:49 -0500 |
commit | 5b07b06d6bb1d01d1aec49d6ba458fc6c789fbc9 (patch) | |
tree | 27d52c63a544a2d4c316917d558b91e231fd60ca /src/gallium | |
parent | cc9762d74d33898f56cfcbd9ab386364a19df6dc (diff) |
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 <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_fence.c | 26 |
1 files 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; |