[PATCH xf86-video-amdgpu 1/2] Prefer drmModeSetCursor2 over drmModeSetCursor

Alex Deucher alexdeucher at gmail.com
Tue Nov 17 09:54:29 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.

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

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



More information about the xorg-driver-ati mailing list