diff mbox series

drm/i915: Fix ILK-IVB primary plane enable delays

Message ID 1545305168-6047-1-git-send-email-juhapekka.heikkila@gmail.com (mailing list archive)
State New, archived
Headers show
Series drm/i915: Fix ILK-IVB primary plane enable delays | expand

Commit Message

Juha-Pekka Heikkila Dec. 20, 2018, 11:26 a.m. UTC
Primary and sprite plane enable on ILK-IVB may take two frames to complete

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103925
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 drivers/gpu/drm/i915/intel_display.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Ville Syrjala Jan. 14, 2019, 7:39 p.m. UTC | #1
On Thu, Dec 20, 2018 at 01:26:08PM +0200, Juha-Pekka Heikkila wrote:
> Primary and sprite plane enable on ILK-IVB may take two frames to complete
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103925
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 3b70948..b46ab48 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -10813,8 +10813,11 @@ int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_crtc_stat
>  	 * Despite the w/a only being listed for IVB we assume that
>  	 * the ILK/SNB note has similar ramifications, hence we apply
>  	 * the w/a on all three platforms.
> +	 *
> +	 * With experimental results seems this is needed also for primary
> +	 * plane, not only sprite plane.

Actually even documented in the spec. I wasn't able to reproduce this
myself for whatever reason while I was coming up with a cleaner way to
handle this. But let's trust the spec and go with it. My cleanup thing
isn't quite ready yet so I've landed your patch in the meantime. Thanks.

>  	 */
> -	if (plane->id == PLANE_SPRITE0 &&
> +	if (plane->id != PLANE_CURSOR &&
>  	    (IS_GEN_RANGE(dev_priv, 5, 6) ||
>  	     IS_IVYBRIDGE(dev_priv)) &&
>  	    (turn_on || (!needs_scaling(old_plane_state) &&
> -- 
> 2.7.4
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 3b70948..b46ab48 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -10813,8 +10813,11 @@  int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_crtc_stat
 	 * Despite the w/a only being listed for IVB we assume that
 	 * the ILK/SNB note has similar ramifications, hence we apply
 	 * the w/a on all three platforms.
+	 *
+	 * With experimental results seems this is needed also for primary
+	 * plane, not only sprite plane.
 	 */
-	if (plane->id == PLANE_SPRITE0 &&
+	if (plane->id != PLANE_CURSOR &&
 	    (IS_GEN_RANGE(dev_priv, 5, 6) ||
 	     IS_IVYBRIDGE(dev_priv)) &&
 	    (turn_on || (!needs_scaling(old_plane_state) &&