]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/display: Skip state checker for AS SDP infoframe enable
authorMitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Thu, 6 Feb 2025 04:50:00 +0000 (10:20 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Fri, 7 Feb 2025 05:29:13 +0000 (10:59 +0530)
Avoid full modeset by skipping infoframe.enable check when toggling
AS SDP while enabling VRR, preventing full modeset while pipe
config changes.

--v2:
- Add check for exclude_infoframe. (Ankit)
- Update commit message. (Ankit)

--v3:
- Optimise PIPE_CONF_CHECK for infoframes.enable. [Ankit]

Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250206045001.2919360-2-mitulkumar.ajitkumar.golani@intel.com
drivers/gpu/drm/i915/display/intel_display.c

index 60867b5b03ec4693ee3234f73558a54da26f32cd..b68ccf12c439c664a0b1d7817edd80e326841de8 100644 (file)
@@ -5388,6 +5388,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
        struct drm_i915_private *dev_priv = to_i915(current_config->uapi.crtc->dev);
        struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc);
        struct drm_printer p;
+       u32 exclude_infoframes = 0;
        bool ret = true;
 
        if (fastset)
@@ -5743,11 +5744,12 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
        PIPE_CONF_CHECK_I(min_voltage_level);
 
        if (current_config->has_psr || pipe_config->has_psr)
-               PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable,
-                                           ~intel_hdmi_infoframe_enable(DP_SDP_VSC));
-       else
-               PIPE_CONF_CHECK_X(infoframes.enable);
+               exclude_infoframes |= intel_hdmi_infoframe_enable(DP_SDP_VSC);
+
+       if (current_config->vrr.enable || pipe_config->vrr.enable)
+               exclude_infoframes |= intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC);
 
+       PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable, ~exclude_infoframes);
        PIPE_CONF_CHECK_X(infoframes.gcp);
        PIPE_CONF_CHECK_INFOFRAME(avi);
        PIPE_CONF_CHECK_INFOFRAME(spd);