drm/radeon: Always store CRTC relative radeon_crtc->cursor_x/y values
We were storing viewport relative coordinates for AVIVO/DCE display engines. However, radeon_crtc_cursor_set2 and radeon_cursor_reset pass radeon_crtc->cursor_x/y as the x/y parameters of radeon_cursor_move_locked, which would break if the CRTC isn't located at (0, 0). Cc: stable@vger.kernel.org Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:

committed by
Alex Deucher

parent
dcab0fa64e
commit
4349bd775c
@@ -143,6 +143,9 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
|
|||||||
int xorigin = 0, yorigin = 0;
|
int xorigin = 0, yorigin = 0;
|
||||||
int w = radeon_crtc->cursor_width;
|
int w = radeon_crtc->cursor_width;
|
||||||
|
|
||||||
|
radeon_crtc->cursor_x = x;
|
||||||
|
radeon_crtc->cursor_y = y;
|
||||||
|
|
||||||
if (ASIC_IS_AVIVO(rdev)) {
|
if (ASIC_IS_AVIVO(rdev)) {
|
||||||
/* avivo cursor are offset into the total surface */
|
/* avivo cursor are offset into the total surface */
|
||||||
x += crtc->x;
|
x += crtc->x;
|
||||||
@@ -229,9 +232,6 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
|
|||||||
yorigin * 256);
|
yorigin * 256);
|
||||||
}
|
}
|
||||||
|
|
||||||
radeon_crtc->cursor_x = x;
|
|
||||||
radeon_crtc->cursor_y = y;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user