[PATCH xf86-video-amdgpu 5/9] Prefer drmModeSetCursor2 over drmModeSetCursor
Michel Dänzer
michel at daenzer.net
Wed Nov 11 01:30:51 PST 2015
From: Michel Dänzer <michel.daenzer at amd.com>
The former includes information about the position of the hotspot within
the cursor image.
Copied from xf86-video-modesetting.
(ported from radeon commit c9f8f642fd495937400618a4fc25ecae3f8888fc)
Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
src/drmmode_display.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 9632180..4d5a3a3 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -801,12 +801,29 @@ static void drmmode_show_cursor(xf86CrtcPtr crtc)
AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(pScrn);
drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
uint32_t bo_handle;
+ static Bool use_set_cursor2 = TRUE;
if (!amdgpu_bo_get_handle(drmmode_crtc->cursor_buffer, &bo_handle)) {
ErrorF("failed to get BO handle for cursor\n");
return;
}
+ if (use_set_cursor2) {
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
+ CursorPtr cursor = xf86_config->cursor;
+ int ret;
+
+ ret = drmModeSetCursor2(pAMDGPUEnt->fd,
+ drmmode_crtc->mode_crtc->crtc_id,
+ bo_handle,
+ info->cursor_w, info->cursor_h,
+ cursor->bits->xhot, cursor->bits->yhot);
+ if (ret == -EINVAL)
+ use_set_cursor2 = FALSE;
+ else
+ return;
+ }
+
drmModeSetCursor(pAMDGPUEnt->fd, drmmode_crtc->mode_crtc->crtc_id, bo_handle,
info->cursor_w, info->cursor_h);
}
--
2.6.2
More information about the xorg-driver-ati
mailing list