OSDN Git Service

drm/i915/fbc: Flatten __intel_fbc_pre_update()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 24 Nov 2021 11:36:41 +0000 (13:36 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 3 Dec 2021 11:12:19 +0000 (13:12 +0200)
Use an early return to flatten most of __intel_fbc_pre_update().

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211124113652.22090-10-ville.syrjala@linux.intel.com
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
drivers/gpu/drm/i915/display/intel_fbc.c

index cf7fc0d..0bef3b9 100644 (file)
@@ -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");
-
-               /*
-                * 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;
-       }
+       if (intel_fbc_can_flip_nuke(state, crtc, plane))
+               return need_vblank_wait;
+
+       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;
 }