From: Michel Dänzer <[email protected]> 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 <[email protected]> --- 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 _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
