[Intel-gfx] [PATCH 09/20] drm/i915/fbc: Flatten __intel_fbc_pre_update()

Kahola, Mika mika.kahola at intel.com
Wed Dec 1 10:04:40 UTC 2021


> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Ville
> Syrjala
> Sent: Wednesday, November 24, 2021 1:37 PM
> To: intel-gfx at lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH 09/20] drm/i915/fbc: Flatten
> __intel_fbc_pre_update()
> 
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Use an early return to flatten most of __intel_fbc_pre_update().
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Reviewed-by: Mika Kahola <mika.kahola at intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_fbc.c | 40 ++++++++++++------------
>  1 file changed, 20 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index cf7fc0de6081..0bef3b948670 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -1223,27 +1223,27 @@ static bool __intel_fbc_pre_update(struct
> intel_atomic_state *state,
>  	intel_fbc_update_state_cache(state, crtc, plane);
>  	fbc->flip_pending = true;
> 
> -	if (!intel_fbc_can_flip_nuke(state, crtc, plane)) {
> -		intel_fbc_deactivate(fbc, "update pending");
> +	if (intel_fbc_can_flip_nuke(state, crtc, plane))
> +		return need_vblank_wait;
> 
> -		/*
> -		 * Display WA #1198: glk+
> -		 * Need an extra vblank wait between FBC disable and most
> plane
> -		 * updates. Bspec says this is only needed for plane disable, but
> -		 * that is not true. Touching most plane registers will cause the
> -		 * corruption to appear. Also SKL/derivatives do not seem to be
> -		 * affected.
> -		 *
> -		 * TODO: could optimize this a bit by sampling the frame
> -		 * counter when we disable FBC (if it was already done earlier)
> -		 * and skipping the extra vblank wait before the plane update
> -		 * if at least one frame has already passed.
> -		 */
> -		if (fbc->activated &&
> -		    DISPLAY_VER(i915) >= 10)
> -			need_vblank_wait = true;
> -		fbc->activated = false;
> -	}
> +	intel_fbc_deactivate(fbc, "update pending");
> +
> +	/*
> +	 * Display WA #1198: glk+
> +	 * Need an extra vblank wait between FBC disable and most plane
> +	 * updates. Bspec says this is only needed for plane disable, but
> +	 * that is not true. Touching most plane registers will cause the
> +	 * corruption to appear. Also SKL/derivatives do not seem to be
> +	 * affected.
> +	 *
> +	 * TODO: could optimize this a bit by sampling the frame
> +	 * counter when we disable FBC (if it was already done earlier)
> +	 * and skipping the extra vblank wait before the plane update
> +	 * if at least one frame has already passed.
> +	 */
> +	if (fbc->activated && DISPLAY_VER(i915) >= 10)
> +		need_vblank_wait = true;
> +	fbc->activated = false;
> 
>  	return need_vblank_wait;
>  }
> --
> 2.32.0



More information about the Intel-gfx mailing list