summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Osipenko <dmitry.osipenko@collabora.com>2023-05-16 20:00:41 +0300
committerMarge Bot <emma+marge@anholt.net>2023-09-11 12:58:18 +0000
commit39d48de21aea89e32edd394dfa9fc8e658b774f3 (patch)
treeb3e6c2b10841f57b3470ad6725f5359195ecad9a
parent725fcc9f520ca10a9aeca820d3109e33cb8af51b (diff)
drm_fence: Support inter-context fence sharing
Use virgl_fence_set_fd() to enable sync file sharing between virgl contexts. Now the sync file is set in global virg_fence table for the armed drm-fence, this sync file is auto-removed from the table by virgl_fence core code once fence is signalled. Reviewed-by: Ryan Neph <ryanneph@google.com> Reviewed-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1138>
-rw-r--r--src/drm/drm_fence.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/drm/drm_fence.c b/src/drm/drm_fence.c
index 90b388c..57635c1 100644
--- a/src/drm/drm_fence.c
+++ b/src/drm/drm_fence.c
@@ -7,6 +7,7 @@
#include <string.h>
#include "virgl_context.h"
+#include "virgl_fence.h"
#include "virgl_util.h"
#include "util/os_file.h"
@@ -152,6 +153,8 @@ drm_timeline_submit_fence(struct drm_timeline *timeline, uint32_t flags,
drm_dbg("fence: %p (%" PRIu64 ")", fence, fence->fence_id);
+ virgl_fence_set_fd(fence_id, fence->fd);
+
mtx_lock(&timeline->fence_mutex);
list_addtail(&fence->node, &timeline->pending_fences);
cnd_signal(&timeline->fence_cond);