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

Reply via email to