[PATCHv3 06/30] drm/omap: Add support for render nodes
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Mar 29 08:22:14 UTC 2017
Hi Tomi,
Thank you for the patch.
On Tuesday 28 Mar 2017 16:07:52 Tomi Valkeinen wrote:
> From: Hemant Hariyani <hemanthariyani at ti.com>
>
> Add support for render nodes in omap driver and allow required
> ioctls to be accessible via render nodes.
But the OMAP DSS doesn't perform rendering... This seems an abuse of render
nodes, I think the API should instead be implemented by the GPU driver.
> This enables unprivileged clients to allocate resources like GEM buffers
> for rendering their content into. Mode setting (KMS ioctls) is not
> allowed using render nodes. These buffers are then shared with
> a previleged process (e.g compositor) that has mode setting access.
>
> An example of this use case is Android where the hardware composer is
> the only master and has mode setting access. Every other client then
> uses render node(e.g /dev/dri/renderD128 to allocate and use its buffers.
>
> Signed-off-by: Hemant Hariyani <hemanthariyani at ti.com>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
> ---
> drivers/gpu/drm/omapdrm/omap_drv.c | 20 +++++++++++++-------
> 1 file changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c
> b/drivers/gpu/drm/omapdrm/omap_drv.c index fe83efbbf127..ce0a1c04403d
> 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -629,12 +629,18 @@ static int ioctl_gem_info(struct drm_device *dev, void
> *data, }
>
> static const struct drm_ioctl_desc ioctls[DRM_COMMAND_END -
> DRM_COMMAND_BASE] = { - DRM_IOCTL_DEF_DRV(OMAP_GET_PARAM,
ioctl_get_param,
> DRM_AUTH),
> - DRM_IOCTL_DEF_DRV(OMAP_SET_PARAM, ioctl_set_param,
> DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), - DRM_IOCTL_DEF_DRV(OMAP_GEM_NEW,
> ioctl_gem_new, DRM_AUTH),
> - DRM_IOCTL_DEF_DRV(OMAP_GEM_CPU_PREP, ioctl_gem_cpu_prep, DRM_AUTH),
> - DRM_IOCTL_DEF_DRV(OMAP_GEM_CPU_FINI, ioctl_gem_cpu_fini, DRM_AUTH),
> - DRM_IOCTL_DEF_DRV(OMAP_GEM_INFO, ioctl_gem_info, DRM_AUTH),
> + DRM_IOCTL_DEF_DRV(OMAP_GET_PARAM, ioctl_get_param,
> + DRM_AUTH | DRM_RENDER_ALLOW),
> + DRM_IOCTL_DEF_DRV(OMAP_SET_PARAM, ioctl_set_param,
> + DRM_AUTH | DRM_MASTER | DRM_ROOT_ONLY),
> + DRM_IOCTL_DEF_DRV(OMAP_GEM_NEW, ioctl_gem_new,
> + DRM_AUTH | DRM_RENDER_ALLOW),
> + DRM_IOCTL_DEF_DRV(OMAP_GEM_CPU_PREP, ioctl_gem_cpu_prep,
> + DRM_AUTH | DRM_RENDER_ALLOW),
> + DRM_IOCTL_DEF_DRV(OMAP_GEM_CPU_FINI, ioctl_gem_cpu_fini,
> + DRM_AUTH | DRM_RENDER_ALLOW),
> + DRM_IOCTL_DEF_DRV(OMAP_GEM_INFO, ioctl_gem_info,
> + DRM_AUTH | DRM_RENDER_ALLOW),
> };
>
> /*
> @@ -724,7 +730,7 @@ static const struct file_operations omapdriver_fops = {
>
> static struct drm_driver omap_drm_driver = {
> .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME |
> - DRIVER_ATOMIC,
> + DRIVER_ATOMIC | DRIVER_RENDER,
> .open = dev_open,
> .lastclose = dev_lastclose,
> #ifdef CONFIG_DEBUG_FS
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list