diff options
author | Bas Nieuwenhuizen <[email protected]> | 2018-01-25 16:48:17 +0100 |
---|---|---|
committer | Bas Nieuwenhuizen <[email protected]> | 2018-01-26 01:26:53 +0100 |
commit | 5a3404d443e0c6e8e9a44d7f8dccf96c5ac18f0f (patch) | |
tree | c6eb9b8d8e9d0c2dd76f0b4e1e0b7b685b4fdffb /src/gallium/drivers | |
parent | db682b8f0eafd3b9d58e736e9e2f520943a89942 (diff) |
radeonsi: Export signalled sync file instead of -1.
-1 is considered an error for EGL_ANDROID_native_fence_sync, so
we need to actually create a sync file.
Fixes: f536f45250 "radeonsi: implement sync_file import/export"
Reviewed-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/radeon/radeon_winsys.h | 5 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_fence.c | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/radeon_winsys.h b/src/gallium/drivers/radeon/radeon_winsys.h index d1c761f4eea..307f8efaec0 100644 --- a/src/gallium/drivers/radeon/radeon_winsys.h +++ b/src/gallium/drivers/radeon/radeon_winsys.h @@ -611,6 +611,11 @@ struct radeon_winsys { struct pipe_fence_handle *fence); /** + * Return a sync file FD that is already signalled. + */ + int (*export_signalled_sync_file)(struct radeon_winsys *ws); + + /** * Initialize surface * * \param ws The winsys this function is called from. diff --git a/src/gallium/drivers/radeonsi/si_fence.c b/src/gallium/drivers/radeonsi/si_fence.c index 5f320803aae..47d68dbc337 100644 --- a/src/gallium/drivers/radeonsi/si_fence.c +++ b/src/gallium/drivers/radeonsi/si_fence.c @@ -356,6 +356,8 @@ static int si_fence_get_fd(struct pipe_screen *screen, /* If we don't have FDs at this point, it means we don't have fences * either. */ + if (sdma_fd == -1 && gfx_fd == -1) + return ws->export_signalled_sync_file(ws); if (sdma_fd == -1) return gfx_fd; if (gfx_fd == -1) |