From 115518ec3531ba2329384e275d631dbbc1e3ba64 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Sun, 6 Feb 2022 09:22:59 -0800 Subject: [PATCH] freedreno/drm: Add FD_BO_SHARED hint With the virtio backend we will need to pass an extra flag when allocating buffers that will be shared cross-device (such as with virtio-wl for passing between host and guest) Signed-off-by: Rob Clark Part-of: --- src/freedreno/drm/freedreno_drmif.h | 2 ++ src/gallium/drivers/freedreno/freedreno_resource.c | 1 + 2 files changed, 3 insertions(+) diff --git a/src/freedreno/drm/freedreno_drmif.h b/src/freedreno/drm/freedreno_drmif.h index 73c7b5ed84d..e0e2b5b819a 100644 --- a/src/freedreno/drm/freedreno_drmif.h +++ b/src/freedreno/drm/freedreno_drmif.h @@ -104,6 +104,8 @@ struct fd_fence { #define FD_BO_CACHED_COHERENT BITSET_BIT(3) /* Hint that the bo will not be mmap'd: */ #define FD_BO_NOMAP BITSET_BIT(4) +/* Hint that the bo will be exported/shared: */ +#define FD_BO_SHARED BITSET_BIT(5) /* bo access flags: (keep aligned to MSM_PREP_x) */ #define FD_BO_PREP_READ BITSET_BIT(0) diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index 094e0643cc3..327bc367451 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -198,6 +198,7 @@ realloc_bo(struct fd_resource *rsc, uint32_t size) uint32_t flags = COND(rsc->layout.tile_mode, FD_BO_NOMAP) | COND(prsc->usage & PIPE_USAGE_STAGING, FD_BO_CACHED_COHERENT) | + COND(prsc->bind & PIPE_BIND_SHARED, FD_BO_SHARED) | COND(prsc->bind & PIPE_BIND_SCANOUT, FD_BO_SCANOUT); /* TODO other flags? */