On Sun, Jul 23, 2017 at 09:16:18PM +0200, Noralf Trønnes wrote:
Almost everyone did end up using GEM as bo, so this adds defaults for the drm_driver.dumb_destroy and drm_driver.dumb_map_offset callbacks.
Signed-off-by: Noralf Trønnes noralf@tronnes.org
With Eric's suggestion:
Reviewed-by: Sean Paul seanpaul@chromium.org
drivers/gpu/drm/drm_dumb_buffers.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/drm_dumb_buffers.c b/drivers/gpu/drm/drm_dumb_buffers.c index 10307cc..cd68ab4 100644 --- a/drivers/gpu/drm/drm_dumb_buffers.c +++ b/drivers/gpu/drm/drm_dumb_buffers.c @@ -24,6 +24,7 @@ */
#include <drm/drmP.h> +#include <drm/drm_gem.h>
#include "drm_crtc_internal.h"
@@ -42,9 +43,10 @@
- create dumb buffers suitable for scanout, which can then be used to create
- KMS frame buffers.
- To support dumb objects drivers must implement the &drm_driver.dumb_create,
- &drm_driver.dumb_destroy and &drm_driver.dumb_map_offset operations. See
- there for further details.
- To support dumb objects drivers must implement the &drm_driver.dumb_create
- operation. &drm_driver.dumb_destroy defaults to drm_gem_dumb_destroy() if
- not set and &drm_driver.dumb_map_offset operations to
- drm_gem_dumb_map_offset(). See the callbacks for further details.
- Note that dumb objects may not be used for gpu acceleration, as has been
- attempted on some ARM embedded platforms. Such drivers really must have
@@ -108,11 +110,16 @@ int drm_mode_mmap_dumb_ioctl(struct drm_device *dev, { struct drm_mode_map_dumb *args = data;
- /* call driver ioctl to get mmap offset */
- if (!dev->driver->dumb_map_offset)
- if (!dev->driver->dumb_create) return -ENOSYS;
- return dev->driver->dumb_map_offset(file_priv, dev, args->handle, &args->offset);
- if (dev->driver->dumb_map_offset)
return dev->driver->dumb_map_offset(file_priv, dev,
args->handle,
&args->offset);
- else
return drm_gem_dumb_map_offset(file_priv, dev, args->handle,
&args->offset);
}
int drm_mode_destroy_dumb_ioctl(struct drm_device *dev, @@ -120,9 +127,12 @@ int drm_mode_destroy_dumb_ioctl(struct drm_device *dev, { struct drm_mode_destroy_dumb *args = data;
- if (!dev->driver->dumb_destroy)
- if (!dev->driver->dumb_create) return -ENOSYS;
- return dev->driver->dumb_destroy(file_priv, dev, args->handle);
- if (dev->driver->dumb_destroy)
return dev->driver->dumb_destroy(file_priv, dev, args->handle);
- else
return drm_gem_dumb_destroy(file_priv, dev, args->handle);
}
-- 2.7.4
dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel