diff options
author | Dor Askayo <dor.askayo@gmail.com> | 2023-08-12 22:29:30 +0300 |
---|---|---|
committer | Karol Herbst <kherbst@redhat.com> | 2023-08-17 21:09:55 +0000 |
commit | 18644eb64f4e4da583b9f0a43c9f97756cd5aef0 (patch) | |
tree | d6943c27103b664463a7a7ff50674158e9b3ead8 | |
parent | 3bc3cca230c5a064b2f554f26fdec27db0f5ead8 (diff) | |
download | libdrm-18644eb64f4e4da583b9f0a43c9f97756cd5aef0.tar.gz libdrm-18644eb64f4e4da583b9f0a43c9f97756cd5aef0.tar.bz2 libdrm-18644eb64f4e4da583b9f0a43c9f97756cd5aef0.zip |
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 <dor.askayo@gmail.com>
Reviewed-by: Karol Herbst <git@karolherbst.de>
-rw-r--r-- | nouveau/nouveau-symbols.txt | 1 | ||||
-rw-r--r-- | nouveau/nouveau.c | 14 | ||||
-rw-r--r-- | nouveau/nouveau.h | 1 |
3 files changed, 13 insertions, 3 deletions
diff --git a/nouveau/nouveau-symbols.txt b/nouveau/nouveau-symbols.txt index 598465f1..7e9b103b 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 7b4efded..62914a3b 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 0c632feb..a5119f98 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, |