Hook up importing semaphores of type PIPE_FD_TYPE_SYNCOBJ
Signed-off-by: Andres Rodriguez <[email protected]>
---
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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev