drm/i915: Optimize out redundant M/N updates
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 1 Sep 2023 13:04:34 +0000 (16:04 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 20 Sep 2023 19:29:43 +0000 (22:29 +0300)
Don't perform a seamless M/N update if the values aren't actually
changing. This avoids doing extra shenanigans during vblank evasion
needlessly.

Cc: Manasi Navare <navaremanasi@chromium.org>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230901130440.2085-7-ville.syrjala@linux.intel.com
Reviewed-by: Manasi Navare <navaremanasi@chromium.org>
drivers/gpu/drm/i915/display/intel_display.c

index 22ed72c7d6bf9bfe620e311f0b7f6ea8e7b89566..d3c41bf4926351f7181b3ab0336ff95c5eaa6054 100644 (file)
@@ -5557,7 +5557,9 @@ static void intel_crtc_check_fastset(const struct intel_crtc_state *old_crtc_sta
        else
                new_crtc_state->uapi.mode_changed = false;
 
-       if (intel_crtc_needs_modeset(new_crtc_state))
+       if (intel_crtc_needs_modeset(new_crtc_state) ||
+           intel_compare_link_m_n(&old_crtc_state->dp_m_n,
+                                  &new_crtc_state->dp_m_n))
                new_crtc_state->update_m_n = false;
 
        if (!intel_crtc_needs_modeset(new_crtc_state))