On Wed, Jul 12, 2017 at 01:29:22AM -0400, Felix Kuehling wrote:
> Signed-off-by: Felix Kuehling <[email protected]>
> ---
>  drivers/gpu/drm/drm_prime.c | 25 +++++++++++++++++++++++++
>  include/drm/drmP.h          |  2 ++
>  2 files changed, 27 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
> index 25aa455..b1f8445 100644
> --- a/drivers/gpu/drm/drm_prime.c
> +++ b/drivers/gpu/drm/drm_prime.c
> @@ -594,6 +594,31 @@ int drm_gem_prime_handle_to_fd(struct drm_device *dev,
>  EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
>  
>  /**
> + * drm_gem_prime_dmabuf_to_object - try to cast dmabuf to GEM object
> + * @dma_buf: dma-buf object to cast
> + * @driver: driver that is the expected exporter of the dma-buf
> + *
> + * If @dma_buf represents a GEM object, this function return a pointer
> + * to it. Optionally, if @driver is not NULL, it also checks that the
> + * object was exported by @driver. Otherwise it returns NULL.
> + */
> +struct drm_gem_object *drm_gem_prime_dmabuf_to_object(struct dma_buf 
> *dma_buf,
> +                                                   struct drm_driver *driver)
> +{
> +     struct drm_gem_object *obj;
> +
> +     if (dma_buf->ops != &drm_gem_prime_dmabuf_ops)
> +             return NULL;
> +
> +     obj = dma_buf->priv;
> +     if (driver && obj->dev->driver != driver)
> +             return NULL;
> +
> +     return obj;
> +}
> +EXPORT_SYMBOL(drm_gem_prime_dmabuf_to_object);

Reviewed-by: Daniel Vetter <[email protected]>

Bonus points bikeshed: Would be sweet to use that helper in drm_prime.c
itself, and iirc some drivers could use it too.
-Daniel

> +
> +/**
>   * 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..79c2b23 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 struct drm_gem_object *drm_gem_prime_dmabuf_to_object(
> +             struct dma_buf *dma_buf, 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,
> -- 
> 1.9.1
> 
> _______________________________________________
> dri-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to