aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1892-drm-amd-display-Disable-cursor-when-offscreen-in-neg.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1892-drm-amd-display-Disable-cursor-when-offscreen-in-neg.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1892-drm-amd-display-Disable-cursor-when-offscreen-in-neg.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1892-drm-amd-display-Disable-cursor-when-offscreen-in-neg.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1892-drm-amd-display-Disable-cursor-when-offscreen-in-neg.patch
new file mode 100644
index 00000000..8759637e
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1892-drm-amd-display-Disable-cursor-when-offscreen-in-neg.patch
@@ -0,0 +1,78 @@
+From 61195f9073cffa2464b88806db99ef3e3f9c89b5 Mon Sep 17 00:00:00 2001
+From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Date: Thu, 18 Apr 2019 12:42:32 -0400
+Subject: [PATCH 1892/2940] drm/amd/display: Disable cursor when offscreen in
+ negative direction
+
+[Why]
+When x or y is negative we set the x and y values to 0 and compensate
+with a positive cursor hotspot in DM since DC expects positive cursor
+values.
+
+When x or y is less than or equal to the maximum cursor width or height
+the cursor hotspot is clamped so the hotspot doesn't exceed the
+cursor size:
+
+if (x < 0) {
+ xorigin = min(-x, amdgpu_crtc->max_cursor_width - 1);
+ x = 0;
+}
+
+if (y < 0) {
+ yorigin = min(-y, amdgpu_crtc->max_cursor_height - 1);
+ y = 0;
+}
+
+This incorrectly forces the cursor to be at least 1 pixel on the screen
+in either direction when x or y is sufficiently negative.
+
+[How]
+Just disable the cursor when it goes far enough off the screen in one
+of these directions.
+
+This fixes kms_cursor_crc@cursor-256x256-offscreen.
+
+Change-Id: Ib6e965d254d129154e1398140cdbeaec6cb005e5
+Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Reviewed-by: Sun peng Li <Sunpeng.Li@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet Lakha@amd.com>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 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 50d642bd304c..b1197f55a35d 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -5065,12 +5065,12 @@ static int get_cursor_position(struct drm_plane *plane, struct drm_crtc *crtc,
+ int x, y;
+ int xorigin = 0, yorigin = 0;
+
+- if (!crtc || !plane->state->fb) {
+- position->enable = false;
+- position->x = 0;
+- position->y = 0;
++ position->enable = false;
++ position->x = 0;
++ position->y = 0;
++
++ if (!crtc || !plane->state->fb)
+ return 0;
+- }
+
+ if ((plane->state->crtc_w > amdgpu_crtc->max_cursor_width) ||
+ (plane->state->crtc_h > amdgpu_crtc->max_cursor_height)) {
+@@ -5084,6 +5084,10 @@ static int get_cursor_position(struct drm_plane *plane, struct drm_crtc *crtc,
+ x = plane->state->crtc_x;
+ y = plane->state->crtc_y;
+
++ if (x <= -amdgpu_crtc->max_cursor_width ||
++ y <= -amdgpu_crtc->max_cursor_height)
++ return 0;
++
+ if (crtc->primary->state) {
+ /* avivo cursor are offset into the total surface */
+ x += crtc->primary->state->src_x >> 16;
+--
+2.17.1
+