From 18644eb64f4e4da583b9f0a43c9f97756cd5aef0 Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Sat, 12 Aug 2023 22:29:30 +0300 Subject: [PATCH] nouveau: add interface to make buffer objects global This is useful for when GEM handles are exported and may be shared between multiple buffer objects without going through other libdrm interfaces. Signed-off-by: Dor Askayo Reviewed-by: Karol Herbst --- nouveau/nouveau-symbols.txt | 1 + nouveau/nouveau.c | 14 +++++++++++--- nouveau/nouveau.h | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/nouveau/nouveau-symbols.txt b/nouveau/nouveau-symbols.txt index 598465f..7e9b103 100644 --- a/nouveau/nouveau-symbols.txt +++ b/nouveau/nouveau-symbols.txt @@ -1,3 +1,4 @@ +nouveau_bo_make_global nouveau_bo_map nouveau_bo_name_get nouveau_bo_name_ref diff --git a/nouveau/nouveau.c b/nouveau/nouveau.c index 7b4efde..62914a3 100644 --- a/nouveau/nouveau.c +++ b/nouveau/nouveau.c @@ -711,7 +711,7 @@ nouveau_bo_wrap_locked(struct nouveau_device *dev, uint32_t handle, } static void -nouveau_bo_make_global(struct nouveau_bo_priv *nvbo) +nouveau_nvbo_make_global(struct nouveau_bo_priv *nvbo) { if (!nvbo->head.next) { struct nouveau_device_priv *nvdev = nouveau_device(nvbo->base.device); @@ -722,6 +722,14 @@ nouveau_bo_make_global(struct nouveau_bo_priv *nvbo) } } +drm_public void +nouveau_bo_make_global(struct nouveau_bo *bo) +{ + struct nouveau_bo_priv *nvbo = nouveau_bo(bo); + + nouveau_nvbo_make_global(nvbo); +} + drm_public int nouveau_bo_wrap(struct nouveau_device *dev, uint32_t handle, struct nouveau_bo **pbo) @@ -780,7 +788,7 @@ nouveau_bo_name_get(struct nouveau_bo *bo, uint32_t *name) } nvbo->name = *name = req.name; - nouveau_bo_make_global(nvbo); + nouveau_nvbo_make_global(nvbo); } return 0; } @@ -830,7 +838,7 @@ nouveau_bo_set_prime(struct nouveau_bo *bo, int *prime_fd) if (ret) return ret; - nouveau_bo_make_global(nvbo); + nouveau_nvbo_make_global(nvbo); return 0; } diff --git a/nouveau/nouveau.h b/nouveau/nouveau.h index 0c632fe..a5119f9 100644 --- a/nouveau/nouveau.h +++ b/nouveau/nouveau.h @@ -137,6 +137,7 @@ struct nouveau_bo { int nouveau_bo_new(struct nouveau_device *, uint32_t flags, uint32_t align, uint64_t size, union nouveau_bo_config *, struct nouveau_bo **); +void nouveau_bo_make_global(struct nouveau_bo *); int nouveau_bo_wrap(struct nouveau_device *, uint32_t handle, struct nouveau_bo **); int nouveau_bo_name_ref(struct nouveau_device *v, uint32_t name, -- 2.7.4