[PATCH] drm: Fix page flip ioctl format check

Kadiyala, Kishore kishore.kadiyala at intel.com
Fri Apr 17 15:08:55 UTC 2020



> -----Original Message-----
> From: dri-devel <dri-devel-bounces at lists.freedesktop.org> On Behalf Of Ville
> Syrjala
> Sent: Thursday, April 16, 2020 10:34 PM
> To: dri-devel at lists.freedesktop.org
> Cc: intel-gfx at lists.freedesktop.org; Laurent Pinchart
> <laurent.pinchart at ideasonboard.com>; stable at vger.kernel.org
> Subject: [PATCH] drm: Fix page flip ioctl format check
> 
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Revert back to comparing fb->format->format instead fb->format for the
> page flip ioctl. This check was originally only here to disallow pixel format
> changes, but when we changed it to do the pointer comparison we
> potentially started to reject some (but definitely not all) modifier changes as
> well. In fact the current behaviour depends on whether the driver overrides
> the format info for a specific format+modifier combo.
> Eg. on i915 this now rejects compression vs. no compression changes but
> does not reject any other tiling changes. That's just inconsistent nonsense.
> 
> The main reason we have to go back to the old behaviour is to fix page
> flipping with Xorg. At some point Xorg got its atomic rights taken away and
> since then we can't page flip between compressed and non-compressed fbs
> on i915. Currently we get no page flipping for any games pretty much since
> Mesa likes to use compressed buffers. Not sure how compositors are
> working around this (don't use one myself). I guess they must be doing
> something to get non-compressed buffers instead. Either that or somehow
> no one noticed the tearing from the blit fallback.
> 
> Looking back at the original discussion on this change we pretty much just
> did it in the name of skipping a few extra pointer dereferences.
> However, I've decided not to revert the whole thing in case someone has
> since started to depend on these changes. None of the other checks are
> relevant for i915 anyways.
> 
> Cc: stable at vger.kernel.org
> Cc: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Fixes: dbd4d5761e1f ("drm: Replace 'format->format' comparisons to just
> 'format' comparisons")
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

I've validated this patch on Ubuntu1910 (having X Server v1.20.5 ) with compression enabled .
Feel free to add my Acked-by/ Tested-by: Kishore Kadiyala <kishore.kadiyala at intel.com>

Regards,
Kishore
 
> ---
>  drivers/gpu/drm/drm_plane.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index d6ad60ab0d38..f2ca5315f23b 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -1153,7 +1153,7 @@ int drm_mode_page_flip_ioctl(struct drm_device
> *dev,
>  	if (ret)
>  		goto out;
> 
> -	if (old_fb->format != fb->format) {
> +	if (old_fb->format->format != fb->format->format) {
>  		DRM_DEBUG_KMS("Page flip is not allowed to change frame
> buffer format.\n");
>  		ret = -EINVAL;
>  		goto out;
> --
> 2.24.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list