diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2644-drm-amd-display-Only-add-stream-to-freesync-when-mod.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2644-drm-amd-display-Only-add-stream-to-freesync-when-mod.patch | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2644-drm-amd-display-Only-add-stream-to-freesync-when-mod.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2644-drm-amd-display-Only-add-stream-to-freesync-when-mod.patch new file mode 100644 index 00000000..1045b7e1 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2644-drm-amd-display-Only-add-stream-to-freesync-when-mod.patch @@ -0,0 +1,74 @@ +From b02d7d6ec21c18287096ba7f15bc9f2f36514846 Mon Sep 17 00:00:00 2001 +From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com> +Date: Wed, 18 Oct 2017 14:22:23 -0400 +Subject: [PATCH 2644/4131] drm/amd/display: Only add stream to freesync when + modeset required + +This is a follow-up patch to: + +Leo (Sunpeng) Li Cleanup code that enables freesync + +We should only add a stream to freesync if a modeset was requested, so +we don't fill the core freesync map with pointless streams. + +Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com> +Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 28 +++++++++++++++++------ + 1 file changed, 21 insertions(+), 7 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +index e523fe5..eb961c8 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -4287,12 +4287,28 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) + * are removed from freesync module + */ + if (adev->dm.freesync_module) { +- for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { ++ for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { + struct amdgpu_dm_connector *aconnector = NULL; + struct dm_connector_state *dm_new_con_state = NULL; + struct amdgpu_crtc *acrtc = NULL; ++ bool modeset_needed; + + dm_new_crtc_state = to_dm_crtc_state(new_crtc_state); ++ dm_old_crtc_state = to_dm_crtc_state(old_crtc_state); ++ modeset_needed = modeset_required( ++ new_crtc_state, ++ dm_new_crtc_state->stream, ++ dm_old_crtc_state->stream); ++ /* We add stream to freesync if: ++ * 1. Said stream is not null, and ++ * 2. A modeset is requested. This means that the ++ * stream was removed previously, and needs to be ++ * replaced. ++ */ ++ if (dm_new_crtc_state->stream == NULL || ++ !modeset_needed) ++ continue; ++ + acrtc = to_amdgpu_crtc(crtc); + + aconnector = +@@ -4312,12 +4328,10 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) + state, &aconnector->base); + dm_new_con_state = to_dm_connector_state(new_con_state); + +- if (dm_new_crtc_state->stream) { +- mod_freesync_set_user_enable(adev->dm.freesync_module, +- &dm_new_crtc_state->stream, +- 1, +- &dm_new_con_state->user_enable); +- } ++ mod_freesync_set_user_enable(adev->dm.freesync_module, ++ &dm_new_crtc_state->stream, ++ 1, ++ &dm_new_con_state->user_enable); + } + } + +-- +2.7.4 + |