aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4213-drm-amd-display-fix-LFC-tearing-at-top-of-screen.patch
blob: 522a6aaaf32984f24349433f0aba94d91cce6e72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
From e788d2f033853a30166a123440ba2e161138f60f Mon Sep 17 00:00:00 2001
From: Anthony Koo <Anthony.Koo@amd.com>
Date: Fri, 6 Apr 2018 12:12:06 -0400
Subject: [PATCH 4213/5725] drm/amd/display: fix LFC tearing at top of screen

Tearing occurred because new VTOTAL MIN/MAX was being programmed
too early.
The flip can happen within the VUPDATE high region, and the new min/max
would take effect immediately. But this means that frame is not variable
anymore, and tearing would occur when the flip actually happens.

The fixed insert duration should be programmed on the first VUPDATE
interrupt instead.

Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
---
 drivers/gpu/drm/amd/display/modules/freesync/freesync.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
index abd5c93..daad60e 100644
--- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
@@ -371,12 +371,6 @@ static void apply_below_the_range(struct core_freesync *core_freesync,
 			inserted_frame_duration_in_us;
 		in_out_vrr->btr.frames_to_insert = frames_to_insert;
 		in_out_vrr->btr.frame_counter = frames_to_insert;
-
-		in_out_vrr->adjust.v_total_min =
-			calc_v_total_from_duration(stream, in_out_vrr,
-				in_out_vrr->btr.inserted_duration_in_us);
-		in_out_vrr->adjust.v_total_max =
-				in_out_vrr->adjust.v_total_min;
 	}
 }
 
-- 
2.7.4