Commit b8aee294 authored by Michel Dänzer's avatar Michel Dänzer Committed by Dave Airlie

drm/radeon: Update AVIVO cursor coordinate origin before x/yorigin calculation.

Fixes cursor disappearing prematurely when moving off a top/left edge which
is not located at the desktop top/left edge.
Signed-off-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
Cc: stable@kernel.org
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 7d309529
...@@ -208,6 +208,13 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc, ...@@ -208,6 +208,13 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc,
int xorigin = 0, yorigin = 0; int xorigin = 0, yorigin = 0;
int w = radeon_crtc->cursor_width; int w = radeon_crtc->cursor_width;
if (ASIC_IS_AVIVO(rdev)) {
/* avivo cursor are offset into the total surface */
x += crtc->x;
y += crtc->y;
}
DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y);
if (x < 0) if (x < 0)
xorigin = min(-x, CURSOR_WIDTH - 1); xorigin = min(-x, CURSOR_WIDTH - 1);
if (y < 0) if (y < 0)
...@@ -217,11 +224,6 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc, ...@@ -217,11 +224,6 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc,
int i = 0; int i = 0;
struct drm_crtc *crtc_p; struct drm_crtc *crtc_p;
/* avivo cursor are offset into the total surface */
x += crtc->x;
y += crtc->y;
DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y);
/* avivo cursor image can't end on 128 pixel boundary or /* avivo cursor image can't end on 128 pixel boundary or
* go past the end of the frame if both crtcs are enabled * go past the end of the frame if both crtcs are enabled
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment