aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2876-drm-amd-display-remove-usage-of-legacy_cursor_update.patch
diff options
context:
space:
mode:
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.patch118
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
+