[PATCH 2/2] drm: Check in setcrtc if the primary plane supports the fb pixel format

Daniel Vetter daniel at ffwll.ch
Thu Mar 5 01:35:34 PST 2015


On Thu, Mar 05, 2015 at 02:25:44AM +0200, Laurent Pinchart wrote:
> Drivers implementing the universal planes API report the list of
> supported pixel formats for the primary plane. Make sure the fb passed
> to the setcrtc ioctl is compatible.
> 
> Drivers not implementing the universal planes API will have no format
> reported for the primary plane, skip the check in that case.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  drivers/gpu/drm/drm_crtc.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index d794bcf..09ac312 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -2807,6 +2807,22 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
>  
>  		drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
>  
> +		/*
> +		 * Check whether the primary plane supports the fb pixel format.
> +		 * Drivers not implementing the universal planes API will have
> +		 * no format reported for the primary plane, skip the check in
> +		 * that case.
> +		 */
> +		if (crtc->primary->format_count) {

The compat helpers create a primary plane for you, and they fill out the
format list with 2 hopefully save ones. I think we need to add some
boolean to drm_plane which drm_primary_helper_create_plane sets when no
explicit format list is passed in.

And I guess we should make drm_primary_helper_create_plane static while at
it.

I've pulled in your first patch into drm-misc, with a slightly extended
docbook text.

Thanks, Daniel

> +			ret = drm_plane_check_pixel_format(crtc->primary,
> +							   fb->pixel_format);
> +			if (ret) {
> +				DRM_DEBUG_KMS("Invalid pixel format %s\n",
> +					drm_get_format_name(fb->pixel_format));
> +				goto out;
> +			}
> +		}
> +
>  		ret = drm_crtc_check_viewport(crtc, crtc_req->x, crtc_req->y,
>  					      mode, fb);
>  		if (ret)
> -- 
> 2.0.5
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


More information about the dri-devel mailing list