[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