summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDor Askayo <dor.askayo@gmail.com>2023-08-12 22:29:30 +0300
committerKarol Herbst <kherbst@redhat.com>2023-08-17 21:09:55 +0000
commit18644eb64f4e4da583b9f0a43c9f97756cd5aef0 (patch)
treed6943c27103b664463a7a7ff50674158e9b3ead8
parent3bc3cca230c5a064b2f554f26fdec27db0f5ead8 (diff)
downloadlibdrm-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.txt1
-rw-r--r--nouveau/nouveau.c14
-rw-r--r--nouveau/nouveau.h1
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,