From dbe71918aa55cbff412e5d32e4561d0b4f62bbd3 Mon Sep 17 00:00:00 2001 From: stefan11111 Date: Wed, 17 Dec 2025 02:48:49 +0200 Subject: [PATCH] gbm: Implement dmabuf export for dumb buffers Signed-off-by: stefan11111 --- src/gbm/backends/dri/gbm_dri.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index 6640f16da77..fcb13d4532f 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -32,6 +32,7 @@ #include #include #include +#include /* for O_RDWR, which DRM_RDWR is defined as */ #include #include #include @@ -446,8 +447,19 @@ gbm_dri_bo_get_fd(struct gbm_bo *_bo) struct gbm_dri_bo *bo = gbm_dri_bo(_bo); int fd; - if (bo->image == NULL) + if (bo->image == NULL) { +#ifdef HAVE_LIBDRM + struct gbm_dri_device *dri = gbm_dri_device(_bo->gbm); + if (dri->has_dmabuf_export) { + int ret; + int prime_fd = -1; + ret = drmPrimeHandleToFD(dri->base.v0.fd, bo->handle, DRM_RDWR, &prime_fd); + if (!ret) + return prime_fd; + } +#endif return -1; + } if (!dri2_query_image(bo->image, __DRI_IMAGE_ATTRIB_FD, &fd)) return -1;