]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Wed, 27 May 2026 04:10:49 +0000 (09:40 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Thu, 28 May 2026 11:18:10 +0000 (16:48 +0530)
Currently AS SDP is only configured when VRR is enabled.
With optimized guardband, we also need to account for wakeup time and other
relevant details that depend on the AS SDP position whenever AS SDP is
enabled. If a feature enabling AS SDP gets turned on later (after modeset),
the guardband might not be sufficient and may need to increase, triggering
a full modeset.

Additionally, for Panel Replay with Aux-less ALPM where the sink does
not support asynchronous video timing in PR active, the source must
keep transmitting Adaptive-Sync SDPs while PR is active.

So, always send AS SDP whenever there is a possibility to use it for VRR
OR for Panel Replay for synchronization.

v2: Check if AS SDP can be used for synchronization for VRR or PR. (Ville)
v3: Use intel_psr_needs_alpm_aux_less() instead of
    intel_alpm_is_alpm_aux_less() to avoid including the LOBF case. (Ville)
    Modify the commit message and subject.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20260527041050.601735-12-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_dp.c

index e13130bb9e9eaefacea728088967252e679e83e4..03c2ec56ee81b1b622b06f6e9ea9de1a9e5d1e05 100644 (file)
@@ -3219,7 +3219,11 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
        if (drm_dp_is_branch(intel_dp->dpcd))
                return false;
 
-       return crtc_state->vrr.enable;
+       if (intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
+           !intel_psr_pr_async_video_timing_supported(intel_dp))
+               return true;
+
+       return intel_vrr_possible(crtc_state);
 }
 
 static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,