aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
diff options
context:
space:
mode:
authorAnthony Koo <Anthony.Koo@amd.com>2018-04-06 12:12:06 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-08-27 12:10:54 -0400
commit9410a3776bbf1e172cfdb9f8b771a5ce64081a51 (patch)
treeaf46c33fef29ae89d124bfe475218538e87af1a5 /drivers/gpu/drm/amd/display/modules/freesync/freesync.c
parentbe922ff750e40b292824959577aa914388ff6c8b (diff)
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> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/modules/freesync/freesync.c')
-rw-r--r--drivers/gpu/drm/amd/display/modules/freesync/freesync.c6
1 files changed, 0 insertions, 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 abd5c9374eb3..daad60ec1ce3 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,
371 inserted_frame_duration_in_us; 371 inserted_frame_duration_in_us;
372 in_out_vrr->btr.frames_to_insert = frames_to_insert; 372 in_out_vrr->btr.frames_to_insert = frames_to_insert;
373 in_out_vrr->btr.frame_counter = frames_to_insert; 373 in_out_vrr->btr.frame_counter = frames_to_insert;
374
375 in_out_vrr->adjust.v_total_min =
376 calc_v_total_from_duration(stream, in_out_vrr,
377 in_out_vrr->btr.inserted_duration_in_us);
378 in_out_vrr->adjust.v_total_max =
379 in_out_vrr->adjust.v_total_min;
380 } 374 }
381} 375}
382 376