Skip to content

Commit

Permalink
drm/driver: Add defaults for .gem_prime_export/import callbacks
Browse files Browse the repository at this point in the history
The majority of drivers use drm_gem_prime_export() and
drm_gem_prime_import() for these callbacks so let's make them the
default.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181110145647.17580-2-noralf@tronnes.org
  • Loading branch information
Noralf Trønnes committed Nov 20, 2018
1 parent f577f7e commit f001488
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
7 changes: 7 additions & 0 deletions Documentation/gpu/todo.rst
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,13 @@ efficient.

Contact: Daniel Vetter

Defaults for .gem_prime_import and export
-----------------------------------------

Most drivers don't need to set drm_driver->gem_prime_import and
->gem_prime_export now that drm_gem_prime_import() and drm_gem_prime_export()
are the default.

Core refactorings
=================

Expand Down
10 changes: 8 additions & 2 deletions drivers/gpu/drm/drm_prime.c
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,10 @@ static struct dma_buf *export_and_register_object(struct drm_device *dev,
return dmabuf;
}

dmabuf = dev->driver->gem_prime_export(dev, obj, flags);
if (dev->driver->gem_prime_export)
dmabuf = dev->driver->gem_prime_export(dev, obj, flags);
else
dmabuf = drm_gem_prime_export(dev, obj, flags);
if (IS_ERR(dmabuf)) {
/* normally the created dma-buf takes ownership of the ref,
* but if that fails then drop the ref
Expand Down Expand Up @@ -762,7 +765,10 @@ int drm_gem_prime_fd_to_handle(struct drm_device *dev,

/* never seen this one, need to import */
mutex_lock(&dev->object_name_lock);
obj = dev->driver->gem_prime_import(dev, dma_buf);
if (dev->driver->gem_prime_import)
obj = dev->driver->gem_prime_import(dev, dma_buf);
else
obj = drm_gem_prime_import(dev, dma_buf);
if (IS_ERR(obj)) {
ret = PTR_ERR(obj);
goto out_unlock;
Expand Down
4 changes: 4 additions & 0 deletions include/drm/drm_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -471,13 +471,17 @@ struct drm_driver {
* @gem_prime_export:
*
* export GEM -> dmabuf
*
* This defaults to drm_gem_prime_export() if not set.
*/
struct dma_buf * (*gem_prime_export)(struct drm_device *dev,
struct drm_gem_object *obj, int flags);
/**
* @gem_prime_import:
*
* import dmabuf -> GEM
*
* This defaults to drm_gem_prime_import() if not set.
*/
struct drm_gem_object * (*gem_prime_import)(struct drm_device *dev,
struct dma_buf *dma_buf);
Expand Down

0 comments on commit f001488

Please sign in to comment.