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. Reviewed-by: Alex Deucher <[email protected]> Ported from radeon commit: c9f8f642fd495937400618a4fc25ecae3f8888fc --- src/drmmode_display.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 9632180..cd401af 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -801,12 +801,28 @@ 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); } -- 1.8.3.1 _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
