drm/i915/vrr: Fix "window2" handling
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 27 Jan 2023 17:30:41 +0000 (19:30 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 1 Mar 2023 15:11:02 +0000 (17:11 +0200)
The "window2" delay is just the difference of vactive
(undelayed vblank) vs. vblank_start (delayed vblank).
Just use vblank_start during the VRR calculations so
that things work correctly regardless of whether delayed
vblank is used or not.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230127173044.24108-2-ville.syrjala@linux.intel.com
Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
drivers/gpu/drm/i915/display/intel_vrr.c

index 5ff6aed9575ed82a0fb974132bc90a20d58d5c57..4228f26b4c11dd002e7eebecc9e9107f997abe96 100644 (file)
@@ -144,17 +144,11 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
         * is deprecated.
         */
        if (DISPLAY_VER(i915) >= 13) {
-               /*
-                * FIXME: Subtract Window2 delay from below value.
-                *
-                * Window2 specifies time required to program DSB (Window2) in
-                * number of scan lines. Assuming 0 for no DSB.
-                */
                crtc_state->vrr.guardband =
-                       crtc_state->vrr.vmin + 1 - adjusted_mode->crtc_vdisplay;
+                       crtc_state->vrr.vmin + 1 - adjusted_mode->crtc_vblank_start;
        } else {
                crtc_state->vrr.pipeline_full =
-                       min(255, crtc_state->vrr.vmin - adjusted_mode->crtc_vdisplay -
+                       min(255, crtc_state->vrr.vmin - adjusted_mode->crtc_vblank_start -
                            crtc_state->framestart_delay - 1);
        }