util: add util_sync_provider::clone

Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34470>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2025-04-10 13:47:54 +02:00 committed by Marge Bot
parent 989162e67a
commit bb12eebe2a
3 changed files with 16 additions and 0 deletions

View file

@ -109,6 +109,12 @@ drm_syncobj_finalize(struct util_sync_provider *p)
free(p);
}
static struct util_sync_provider *
drm_sync_provider_clone(struct util_sync_provider *p)
{
return util_sync_provider_drm(drm_fd(p));
}
struct util_sync_provider *
util_sync_provider_drm(int drm_fd)
@ -129,6 +135,7 @@ util_sync_provider_drm(int drm_fd)
.query = drm_syncobj_query,
.transfer = drm_syncobj_transfer,
.finalize = drm_syncobj_finalize,
.clone = drm_sync_provider_clone,
};
uint64_t cap;

View file

@ -34,6 +34,7 @@ struct util_sync_provider {
uint32_t src_handle, uint64_t src_point, uint32_t flags);
void (*finalize)(struct util_sync_provider *p);
struct util_sync_provider * (*clone)(struct util_sync_provider *p);
};
#if HAVE_LIBDRM

View file

@ -1300,6 +1300,13 @@ vpipe_sync_finalize(struct util_sync_provider *p)
free(p);
}
static struct util_sync_provider *
vpipe_sync_clone(struct util_sync_provider *p)
{
struct vpipe_sync_provider *vp = to_vpipe_sync_provider(p);
return vdrm_vpipe_get_sync(&vp->vtdev->base);
}
struct util_sync_provider *
vdrm_vpipe_get_sync(struct vdrm_device *vdrm)
{
@ -1322,6 +1329,7 @@ vdrm_vpipe_get_sync(struct vdrm_device *vdrm)
.query = vpipe_drm_sync_query,
.transfer = vpipe_drm_sync_transfer,
.finalize = vpipe_sync_finalize,
.clone = vpipe_sync_clone,
};
if (vtdev->has_timeline_syncobj) {