summaryrefslogtreecommitdiffstats
path: root/src/gbm/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/gbm/main')
-rw-r--r--src/gbm/main/gbm.c17
-rw-r--r--src/gbm/main/gbm.h3
-rw-r--r--src/gbm/main/gbmint.h1
3 files changed, 21 insertions, 0 deletions
diff --git a/src/gbm/main/gbm.c b/src/gbm/main/gbm.c
index 30785a66a4d..ad5208ca136 100644
--- a/src/gbm/main/gbm.c
+++ b/src/gbm/main/gbm.c
@@ -230,6 +230,23 @@ gbm_bo_get_handle(struct gbm_bo *bo)
return bo->handle;
}
+/** Get a DMA-BUF file descriptor for the buffer object
+ *
+ * This function creates a DMA-BUF (also known as PRIME) file descriptor
+ * handle for the buffer object. Eeach call to gbm_bo_get_fd() returns a new
+ * file descriptor and the caller is responsible for closing the file
+ * descriptor.
+
+ * \param bo The buffer object
+ * \return Returns a file descriptor referring to the underlying buffer
+ */
+GBM_EXPORT int
+gbm_bo_get_fd(struct gbm_bo *bo)
+{
+ return bo->gbm->bo_get_fd(bo);
+}
+
+
/** Write data into the buffer object
*
* If the buffer object was created with the GBM_BO_USE_WRITE flag,
diff --git a/src/gbm/main/gbm.h b/src/gbm/main/gbm.h
index 9d2a0308766..9e0c7705ea8 100644
--- a/src/gbm/main/gbm.h
+++ b/src/gbm/main/gbm.h
@@ -256,6 +256,9 @@ union gbm_bo_handle
gbm_bo_get_handle(struct gbm_bo *bo);
int
+gbm_bo_get_fd(struct gbm_bo *bo);
+
+int
gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count);
void
diff --git a/src/gbm/main/gbmint.h b/src/gbm/main/gbmint.h
index 4baf8e3d3d1..31345e6f6de 100644
--- a/src/gbm/main/gbmint.h
+++ b/src/gbm/main/gbmint.h
@@ -69,6 +69,7 @@ struct gbm_device {
struct gbm_bo *(*bo_import)(struct gbm_device *gbm, uint32_t type,
void *buffer, uint32_t usage);
int (*bo_write)(struct gbm_bo *bo, const void *buf, size_t data);
+ int (*bo_get_fd)(struct gbm_bo *bo);
void (*bo_destroy)(struct gbm_bo *bo);
struct gbm_surface *(*surface_create)(struct gbm_device *gbm,