On Wed, Apr 10, 2019 at 09:47:12AM +0200, Gerd Hoffmann wrote: > Some drivers (for example qxl) support neither import nor export of > dma-bufs. But you can still use dma-bufs to pass buffer references > from one process to another; drm_gem_prime_import() will figure the > dma-buf came from the same driver and just takes a reference in that > case instead of doing a full export/import. > > Right now there is no way for userspace to figure it can do this. Add > the new prime capability DRM_PRIME_CAP_LOCAL to indicate that. Set the > bit for every driver which has the DRIVER_PRIME feature bit set.
It can just try? Any driver that supports dma-buf (even if only for self-import) should set DRIVER_PRIME. It's perfectly fine to reject any other sharing. -Daniel > > Cc: Dave Airlie <[email protected]> > Signed-off-by: Gerd Hoffmann <[email protected]> > --- > include/uapi/drm/drm.h | 1 + > drivers/gpu/drm/drm_ioctl.c | 2 ++ > 2 files changed, 3 insertions(+) > > diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h > index 236b01a1fabf..b6157d48dc1a 100644 > --- a/include/uapi/drm/drm.h > +++ b/include/uapi/drm/drm.h > @@ -632,6 +632,7 @@ struct drm_gem_open { > #define DRM_CAP_PRIME 0x5 > #define DRM_PRIME_CAP_IMPORT 0x1 > #define DRM_PRIME_CAP_EXPORT 0x2 > +#define DRM_PRIME_CAP_LOCAL 0x4 > #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6 > #define DRM_CAP_ASYNC_PAGE_FLIP 0x7 > /* > diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c > index d337f161909c..00599758783b 100644 > --- a/drivers/gpu/drm/drm_ioctl.c > +++ b/drivers/gpu/drm/drm_ioctl.c > @@ -241,6 +241,8 @@ static int drm_getcap(struct drm_device *dev, void *data, > struct drm_file *file_ > case DRM_CAP_PRIME: > req->value |= dev->driver->prime_fd_to_handle ? > DRM_PRIME_CAP_IMPORT : 0; > req->value |= dev->driver->prime_handle_to_fd ? > DRM_PRIME_CAP_EXPORT : 0; > + req->value |= (dev->driver->driver_features & DRIVER_PRIME) > + ? DRM_PRIME_CAP_LOCAL : 0; > return 0; > case DRM_CAP_SYNCOBJ: > req->value = drm_core_check_feature(dev, DRIVER_SYNCOBJ); > -- > 2.18.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
