From: Aric Cyr Date: Wed, 23 Sep 2020 01:37:06 +0000 (-0400) Subject: drm/amd/display: FreeSync not active near lower bound of non-LFC monitor range X-Git-Tag: microblaze-v5.12~209^2~12^2~380 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=5dff371a7351a7e9cbb06bca9e532db16594c053;p=linux-2.6-microblaze.git drm/amd/display: FreeSync not active near lower bound of non-LFC monitor range [Why] On narrow range monitors without LFC, a margin prevents good utilization of the available range. [How] Decrease the margin for exiting fixed mode and fix the frame counter to reset if a non-consecutive render is found. Signed-off-by: Aric Cyr Reviewed-by: Anthony Koo Acked-by: Eryk Brol Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c index f76d31451dcb..52c3cb6b439a 100644 --- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c +++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c @@ -42,10 +42,10 @@ /* Threshold to change BTR multiplier (to avoid frequent changes) */ #define BTR_DRIFT_MARGIN 2000 /* Threshold to exit fixed refresh rate */ -#define FIXED_REFRESH_EXIT_MARGIN_IN_HZ 4 +#define FIXED_REFRESH_EXIT_MARGIN_IN_HZ 1 /* Number of consecutive frames to check before entering/exiting fixed refresh */ #define FIXED_REFRESH_ENTER_FRAME_COUNT 5 -#define FIXED_REFRESH_EXIT_FRAME_COUNT 5 +#define FIXED_REFRESH_EXIT_FRAME_COUNT 10 struct core_freesync { struct mod_freesync public; @@ -420,7 +420,8 @@ static void apply_fixed_refresh(struct core_freesync *core_freesync, in_out_vrr->fixed.target_refresh_in_uhz = 0; update = true; } - } + } else + in_out_vrr->fixed.frame_counter = 0; } else if (last_render_time_in_us > max_render_time_in_us) { /* Enter Fixed Refresh mode */ if (!in_out_vrr->fixed.fixed_active) { @@ -434,7 +435,8 @@ static void apply_fixed_refresh(struct core_freesync *core_freesync, in_out_vrr->max_refresh_in_uhz; update = true; } - } + } else + in_out_vrr->fixed.frame_counter = 0; } if (update) {