diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0347-drm-amd-display-FreeSync-LFC-MIN-MAX-update-on-curre.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0347-drm-amd-display-FreeSync-LFC-MIN-MAX-update-on-curre.patch | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0347-drm-amd-display-FreeSync-LFC-MIN-MAX-update-on-curre.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0347-drm-amd-display-FreeSync-LFC-MIN-MAX-update-on-curre.patch deleted file mode 100644 index 764ef48a..00000000 --- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0347-drm-amd-display-FreeSync-LFC-MIN-MAX-update-on-curre.patch +++ /dev/null @@ -1,124 +0,0 @@ -From 7b72607acfacbe862c111c87f2a34155c370bced Mon Sep 17 00:00:00 2001 -From: Eric Cook <Eric.Cook@amd.com> -Date: Wed, 12 Apr 2017 11:05:08 -0400 -Subject: [PATCH 0347/4131] drm/amd/display: FreeSync LFC MIN/MAX update on - current frame - -- Update BTR/LFC logic so that V_TOTAL_MIN/MAX will take affect on current frame -- Add in FreeSync update to MPO code path - -Signed-off-by: Eric Cook <Eric.Cook@amd.com> -Acked-by: Harry Wentland <Harry.Wentland@amd.com> -Reviewed-by: Anthony Koo <Anthony.Koo@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - .../drm/amd/display/modules/freesync/freesync.c | 67 +++++++++++++--------- - 1 file changed, 39 insertions(+), 28 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c -index 7a0731e..94566c0 100644 ---- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c -+++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c -@@ -641,7 +641,8 @@ static void set_static_ramp_variables(struct core_freesync *core_freesync, - void mod_freesync_handle_v_update(struct mod_freesync *mod_freesync, - const struct dc_stream **streams, int num_streams) - { -- unsigned int index, v_total = 0; -+ unsigned int index, v_total, inserted_frame_v_total = 0; -+ unsigned int min_frame_duration_in_ns, vmax, vmin = 0; - struct freesync_state *state; - struct core_freesync *core_freesync = NULL; - -@@ -665,19 +666,48 @@ void mod_freesync_handle_v_update(struct mod_freesync *mod_freesync, - - /* Only execute if in fullscreen mode */ - if (state->fullscreen == true && -- core_freesync->map[index].user_enable.enable_for_gaming) { -+ core_freesync->map[index].user_enable.enable_for_gaming && -+ core_freesync->map[index].caps->btr_supported && -+ state->btr.btr_active) { -+ -+ /* TODO: pass in flag for Pre-DCE12 ASIC -+ * in order for frame variable duration to take affect, -+ * it needs to be done one VSYNC early, which is at -+ * frameCounter == 1. -+ * For DCE12 and newer updates to V_TOTAL_MIN/MAX -+ * will take affect on current frame -+ */ -+ if (state->btr.frames_to_insert == state->btr.frame_counter) { -+ -+ min_frame_duration_in_ns = ((unsigned int) (div64_u64( -+ (1000000000ULL * 1000000), -+ state->nominal_refresh_rate_in_micro_hz))); -+ -+ calc_vmin_vmax(core_freesync, *streams, &vmin, &vmax); - -- if (state->btr.btr_active) -- if (state->btr.frame_counter > 0) -+ inserted_frame_v_total = vmin; - -- state->btr.frame_counter--; -+ if (min_frame_duration_in_ns / 1000) -+ inserted_frame_v_total = -+ state->btr.inserted_frame_duration_in_us * -+ vmin / (min_frame_duration_in_ns / 1000); - -- if (state->btr.frame_counter == 1) { -+ /* Set length of inserted frames as v_total_max*/ -+ vmax = inserted_frame_v_total; -+ vmin = inserted_frame_v_total; - -- /* Restore FreeSync */ -- set_freesync_on_streams(core_freesync, streams, -- num_streams); -+ /* Program V_TOTAL */ -+ core_freesync->dc->stream_funcs.adjust_vmin_vmax( -+ core_freesync->dc, streams, -+ num_streams, vmin, vmax); - } -+ -+ if (state->btr.frame_counter > 0) -+ state->btr.frame_counter--; -+ -+ /* Restore FreeSync */ -+ if (state->btr.frame_counter == 0) -+ set_freesync_on_streams(core_freesync, streams, num_streams); - } - - /* If in fullscreen freesync mode or in video, do not program -@@ -1022,8 +1052,6 @@ static void apply_below_the_range(struct core_freesync *core_freesync, - unsigned int delta_from_mid_point_in_us_1 = 0xFFFFFFFF; - unsigned int delta_from_mid_point_in_us_2 = 0xFFFFFFFF; - unsigned int frames_to_insert = 0; -- unsigned int inserted_frame_v_total = 0; -- unsigned int vmin = 0, vmax = 0; - unsigned int min_frame_duration_in_ns = 0; - struct freesync_state *state = &core_freesync->map[map_index].state; - -@@ -1101,23 +1129,6 @@ static void apply_below_the_range(struct core_freesync *core_freesync, - inserted_frame_duration_in_us = - state->time.min_render_time_in_us; - -- /* We need the v_total_min from capability */ -- calc_vmin_vmax(core_freesync, stream, &vmin, &vmax); -- -- inserted_frame_v_total = vmin; -- if (min_frame_duration_in_ns / 1000) -- inserted_frame_v_total = inserted_frame_duration_in_us * -- vmin / (min_frame_duration_in_ns / 1000); -- -- /* Set length of inserted frames as v_total_max*/ -- vmax = inserted_frame_v_total; -- -- /* Program V_TOTAL */ -- core_freesync->dc->stream_funcs.adjust_vmin_vmax( -- core_freesync->dc, &stream, -- 1, vmin, -- vmax); -- - /* Cache the calculated variables */ - state->btr.inserted_frame_duration_in_us = - inserted_frame_duration_in_us; --- -2.7.4 - |