On 2/4/2025 6:36 PM, Mitul Golani wrote:
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)

Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.gol...@intel.com>
---
  drivers/gpu/drm/i915/display/intel_display.c | 10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index a6383ddde871..b35fb6d37640 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -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,8 +5744,13 @@ 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));
+               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);
+
+       if (exclude_infoframes)
+               PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable, 
~exclude_infoframes);
        else
                PIPE_CONF_CHECK_X(infoframes.enable);

This can simply be:

PIPE_CONF_CHECK_X_WITH_MASK(infoframes.enable, ~exclude_infoframes);

Reviewed-by: Ankit Nautiyal <ankit.k.nauti...@intel.com>

Regards,
Ankit

Reply via email to