summaryrefslogtreecommitdiffstats
path: root/src/gbm/backends/dri
diff options
context:
space:
mode:
authorKristian Høgsberg <[email protected]>2014-03-28 00:33:54 -0700
committerKristian Høgsberg <[email protected]>2014-04-01 12:27:13 -0700
commitf54f5891be24eea2af2d1c9864a3f74c1e7648fc (patch)
treece4d2e4b2f463f51a6f96265f6018c15a34b2234 /src/gbm/backends/dri
parent7c379ebe173b43e6ee76bc37a122aa4642bdf43e (diff)
gbm: Add gbm_bo_get_fd()
Add gbm function to get a DMA-BUF file descriptor for a gbm bo. Signed-off-by: Kristian Høgsberg <[email protected]>
Diffstat (limited to 'src/gbm/backends/dri')
-rw-r--r--src/gbm/backends/dri/gbm_dri.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index acf6b246af0..a674036bf6f 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -361,6 +361,21 @@ gbm_dri_bo_write(struct gbm_bo *_bo, const void *buf, size_t count)
return 0;
}
+static int
+gbm_dri_bo_get_fd(struct gbm_bo *_bo)
+{
+ struct gbm_dri_device *dri = gbm_dri_device(_bo->gbm);
+ struct gbm_dri_bo *bo = gbm_dri_bo(_bo);
+ int fd;
+
+ if (bo->image == NULL)
+ return -1;
+
+ dri->image->queryImage(bo->image, __DRI_IMAGE_ATTRIB_FD, &fd);
+
+ return fd;
+}
+
static void
gbm_dri_bo_destroy(struct gbm_bo *_bo)
{
@@ -696,6 +711,7 @@ dri_device_create(int fd)
dri->base.base.bo_import = gbm_dri_bo_import;
dri->base.base.is_format_supported = gbm_dri_is_format_supported;
dri->base.base.bo_write = gbm_dri_bo_write;
+ dri->base.base.bo_get_fd = gbm_dri_bo_get_fd;
dri->base.base.bo_destroy = gbm_dri_bo_destroy;
dri->base.base.destroy = dri_destroy;
dri->base.base.surface_create = gbm_dri_surface_create;