[PATCH] drm: Use atomic state for FB in legacy ioctls

Ville Syrjälä ville.syrjala at linux.intel.com
Tue Dec 13 18:48:31 UTC 2016


On Tue, Dec 13, 2016 at 06:19:12PM +0000, Daniel Stone wrote:
> If atomic state is available, use this to read the current plane in
> GetCrtc/GetPlane, rather than the legacy points.
> 
> Signed-off-by: Daniel Stone <daniels at collabora.com>
> Cc: Daniel Vetter <daniel.vetter at intel.com>
> ---
>  drivers/gpu/drm/drm_crtc.c  | 5 ++++-
>  drivers/gpu/drm/drm_plane.c | 8 ++++++--
>  2 files changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index e75f62c..14c5807 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -357,7 +357,10 @@ int drm_mode_getcrtc(struct drm_device *dev,
>  
>  	drm_modeset_lock_crtc(crtc, crtc->primary);
>  	crtc_resp->gamma_size = crtc->gamma_size;
> -	if (crtc->primary->fb)
> +
> +	if (crtc->primary->state && crtc->primary->state->fb)
> +		crtc_resp->fb_id = crtc->primary->state->fb->base.id;
> +	else if (!crtc->primary->state && crtc->primary->fb)
>  		crtc_resp->fb_id = crtc->primary->fb->base.id;

I think what we do elsewhere is totally ignore the legacy junk if the
->state pointer exists.

>  	else
>  		crtc_resp->fb_id = 0;
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index 62b98f3..c2dc8e6 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -392,12 +392,16 @@ int drm_mode_getplane(struct drm_device *dev, void *data,
>  		return -ENOENT;
>  
>  	drm_modeset_lock(&plane->mutex, NULL);
> -	if (plane->crtc)
> +	if (plane->state && plane->state->crtc)
> +		plane_resp->crtc_id = plane->state->crtc->base.id;
> +	else if (!plane->state && plane->crtc)
>  		plane_resp->crtc_id = plane->crtc->base.id;
>  	else
>  		plane_resp->crtc_id = 0;
>  
> -	if (plane->fb)
> +	if (plane->state && plane->state->fb)
> +		plane_resp->fb_id = plane->state->fb->base.id;
> +	else if (!plane->state && plane->fb)
>  		plane_resp->fb_id = plane->fb->base.id;
>  	else
>  		plane_resp->fb_id = 0;
> -- 
> 2.10.2
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel OTC


More information about the dri-devel mailing list