]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/i915: Fix vblank evasion with vrr
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 22 Jan 2021 23:26:47 +0000 (15:26 -0800)
committerManasi Navare <manasi.d.navare@intel.com>
Mon, 25 Jan 2021 23:23:44 +0000 (15:23 -0800)
With vrr enabled the hardware no longer latches the registers
automagically at vblank start. The point at which it will do the
latching even when no push has been sent is the vmax decision
boundary. That is the thing we need to evade to avoid our
register latching to get split between two frames.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210122232647.22688-18-manasi.d.navare@intel.com
drivers/gpu/drm/i915/display/intel_sprite.c

index 7b7b57622b45b32a79386cab675cbf97d66c7a8f..9639d8fe32d72c9d4dda9036ff9feece3ea79899 100644 (file)
@@ -101,7 +101,10 @@ void intel_pipe_update_start(const struct intel_crtc_state *new_crtc_state)
        if (new_crtc_state->uapi.async_flip)
                return;
 
-       vblank_start = intel_mode_vblank_start(adjusted_mode);
+       if (new_crtc_state->vrr.enable)
+               vblank_start = intel_vrr_vmax_vblank_start(new_crtc_state);
+       else
+               vblank_start = intel_mode_vblank_start(adjusted_mode);
 
        /* FIXME needs to be calibrated sensibly */
        min = vblank_start - intel_usecs_to_scanlines(adjusted_mode,