Am 06.07.2017 um 22:16 schrieb Felix Kuehling:
This allows drivers to check if a DMA-buf contains a GEM object and
whether it comes from the same driver. It may be from the same or a
different device.

Signed-off-by: Felix Kuehling <felix.kuehl...@amd.com>

I think Daniel/Dave hadmore a function which returns the casted GEM object or NULL in mind, but that should o it as well.

Patch is Reviewed-by: Christian König <christian.koe...@amd.com>

Regards,
Christian.

---
  drivers/gpu/drm/drm_prime.c | 24 ++++++++++++++++++++++++
  include/drm/drmP.h          |  2 ++
  2 files changed, 26 insertions(+)

diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index 25aa455..a50baec 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -594,6 +594,30 @@ int drm_gem_prime_handle_to_fd(struct drm_device *dev,
  EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
/**
+ * drm_gem_prime_dmabuf_is_from_driver - check exporting driver of a dma-buf
+ * @dma_buf: dma-buf object to check
+ * @driver: driver that is the expected exporter of the dma-buf
+ *
+ * Returns true if @driver exported @dma_buf. Returns false if
+ * @dma_buf was exported by a different driver.
+ */
+bool drm_gem_prime_dmabuf_is_from_driver(const struct dma_buf *dma_buf,
+                                        const struct drm_driver *driver)
+{
+       struct drm_gem_object *obj;
+
+       if (dma_buf->ops != &drm_gem_prime_dmabuf_ops)
+               return false;
+
+       obj = dma_buf->priv;
+       if (obj->dev->driver != driver)
+               return false;
+
+       return true;
+}
+EXPORT_SYMBOL(drm_gem_prime_dmabuf_is_from_driver);
+
+/**
   * drm_gem_prime_import - helper library implementation of the import callback
   * @dev: drm_device to import into
   * @dma_buf: dma-buf object to import
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 6105c05..052f747 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -767,6 +767,8 @@ extern struct dma_buf *drm_gem_prime_export(struct 
drm_device *dev,
  extern int drm_gem_prime_handle_to_fd(struct drm_device *dev,
                struct drm_file *file_priv, uint32_t handle, uint32_t flags,
                int *prime_fd);
+extern bool drm_gem_prime_dmabuf_is_from_driver(const struct dma_buf *dma_buf,
+               const struct drm_driver *driver);
  extern struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
                struct dma_buf *dma_buf);
  extern int drm_gem_prime_fd_to_handle(struct drm_device *dev,


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to