]> www.infradead.org Git - users/jedix/linux-maple.git/commit
drm/i915: Eliminate extra frame from skl-glk sync->async flip change
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 30 Apr 2024 09:56:38 +0000 (12:56 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 3 May 2024 10:14:05 +0000 (13:14 +0300)
commitb24d361420c46c3b1a0594f63f88b52e1afc6792
tree5402268880361525d4136d67b48d94d5ee821c2c
parent7c800d957173298a5c80576db7384ebfe6efc10c
drm/i915: Eliminate extra frame from skl-glk sync->async flip change

On bdw-glk the sync->async flip change takes an extra frame due to
the double buffering behaviour of the async flip plane control bit.

Since on skl+ we are now explicitly converting the first async flip
to a sync flip (in order to allow changing the modifier and/or
ddb/watermarks) we are now taking two extra frames until async flips
are actually active. We can drop that back down to one frame by
setting the async flip bit already during the sync flip.

Note that on bdw we don't currently do the extra sync flip (see
intel_plane_do_async_flip()) so technically we wouldn't have
to deal with this in i9xx_plane_update_arm(). But I added the
relevant snippet of code there as well, just in case we ever
decide to go for the extra sync flip on pre-skl platforms as
well (we might, for example, want to change the fb stride).

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240430095639.26390-5-ville.syrjala@linux.intel.com
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
drivers/gpu/drm/i915/display/i9xx_plane.c
drivers/gpu/drm/i915/display/intel_atomic_plane.c
drivers/gpu/drm/i915/display/skl_universal_plane.c