diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2876-drm-amd-display-remove-usage-of-legacy_cursor_update.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2876-drm-amd-display-remove-usage-of-legacy_cursor_update.patch | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2876-drm-amd-display-remove-usage-of-legacy_cursor_update.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2876-drm-amd-display-remove-usage-of-legacy_cursor_update.patch new file mode 100644 index 00000000..6469198f --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2876-drm-amd-display-remove-usage-of-legacy_cursor_update.patch @@ -0,0 +1,118 @@ +From 4253f22f9273c7001175b63777a2843bd7f739f0 Mon Sep 17 00:00:00 2001 +From: Shirish S <shirish.s@amd.com> +Date: Fri, 1 Dec 2017 01:27:04 -0500 +Subject: [PATCH 2876/4131] drm/amd/display: remove usage of + legacy_cursor_update + +Currently the atomic check code uses legacy_cursor_update +to differnetiate if the cursor plane is being requested by +the user, which is not required as we shall be updating +plane only if modeset is requested/required. + +Have tested cursor plane and underlay get updated seamlessly, +without any lag or frame drops. + +Signed-off-by: Shirish S <shirish.s@amd.com> +Reviewed-by: Harry Wentland <harry.wentland@amd.com> +Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> + + Conflicts: + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c + +Change-Id: Ic029b61cd2f9efdcf593b6683e258daea339a09f +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 53 +++++++---------------- + 1 file changed, 15 insertions(+), 38 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 56def60..40154fa 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -5254,8 +5254,6 @@ static int dm_update_planes_state(struct dc *dc, + static int amdgpu_dm_atomic_check(struct drm_device *dev, + struct drm_atomic_state *state) + { +- int i; +- int ret; + struct amdgpu_device *adev = dev->dev_private; + struct dc *dc = adev->dm.dc; + struct dm_atomic_state *dm_state = to_dm_atomic_state(state); +@@ -5263,6 +5261,7 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, + struct drm_connector_state *old_con_state, *new_con_state; + struct drm_crtc *crtc; + struct drm_crtc_state *old_crtc_state, *new_crtc_state; ++ int ret, i; + + /* + * This bool will be set for true for any modeset/reset +@@ -5276,52 +5275,30 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, + return ret; + } + +- /* +- * legacy_cursor_update should be made false for SoC's having +- * a dedicated hardware plane for cursor in amdgpu_dm_atomic_commit(), +- * otherwise for software cursor plane, +- * we should not add it to list of affected planes. +- */ +- if (state->legacy_cursor_update) { + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) +- for_each_crtc_in_state(state, crtc, new_crtc_state, i) { +-#else +- for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { +-#endif +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) || defined(OS_NAME_RHEL_7_3) || defined(OS_NAME_RHEL_7_4) +- if (new_crtc_state->color_mgmt_changed) { +- ret = drm_atomic_add_affected_planes(state, crtc); +- if (ret) +- goto fail; +- } +-#endif +- } +- } else { +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) +- for_each_crtc_in_state(state, crtc, new_crtc_state, i) { +- old_crtc_state = crtc->state; ++ for_each_crtc_in_state(state, crtc, new_crtc_state, i) { ++ old_crtc_state = crtc->state; + #else +- for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { ++ for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { + #endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) || defined(OS_NAME_RHEL_7_3) || defined(OS_NAME_RHEL_7_4) +- if (!drm_atomic_crtc_needs_modeset(new_crtc_state) && +- !new_crtc_state->color_mgmt_changed) ++ if (!drm_atomic_crtc_needs_modeset(new_crtc_state) && ++ !new_crtc_state->color_mgmt_changed) + #else + if (!drm_atomic_crtc_needs_modeset(new_crtc_state)) + #endif +- continue; ++ continue; + +- if (!new_crtc_state->enable) +- continue; ++ if (!new_crtc_state->enable) ++ continue; + +- ret = drm_atomic_add_affected_connectors(state, crtc); +- if (ret) +- return ret; ++ ret = drm_atomic_add_affected_connectors(state, crtc); ++ if (ret) ++ return ret; + +- ret = drm_atomic_add_affected_planes(state, crtc); +- if (ret) +- goto fail; +- } ++ ret = drm_atomic_add_affected_planes(state, crtc); ++ if (ret) ++ goto fail; + } + + dm_state->context = dc_create_state(); +-- +2.7.4 + |