diff options
author | Dave Airlie <airlied@redhat.com> | 2013-07-02 09:21:06 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-07-02 09:21:39 +0100 |
commit | 2e0ab6237697c9754d92689f77c1792c11be881b (patch) | |
tree | 9d3562d6a16d5e9d46403a63083493cdf443a8f7 | |
parent | 378bb47a784a3808c9b256fe7a52e10a4fcabf92 (diff) |
drm: add hotspot cursor interface support.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | include/drm/drm.h | 1 | ||||
-rw-r--r-- | include/drm/drm_mode.h | 13 | ||||
-rw-r--r-- | xf86drmMode.c | 15 | ||||
-rw-r--r-- | xf86drmMode.h | 1 |
4 files changed, 30 insertions, 0 deletions
diff --git a/include/drm/drm.h b/include/drm/drm.h index a847689f..616824be 100644 --- a/include/drm/drm.h +++ b/include/drm/drm.h @@ -733,6 +733,7 @@ struct drm_prime_handle { #define DRM_IOCTL_MODE_ADDFB2 DRM_IOWR(0xB8, struct drm_mode_fb_cmd2) #define DRM_IOCTL_MODE_OBJ_GETPROPERTIES DRM_IOWR(0xB9, struct drm_mode_obj_get_properties) #define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property) +#define DRM_IOCTL_MODE_CURSOR2 DRM_IOWR(0xBB, struct drm_mode_cursor2) /** * Device specific ioctls should only be in their respective headers diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h index 62ba997f..d41d76bc 100644 --- a/include/drm/drm_mode.h +++ b/include/drm/drm_mode.h @@ -390,6 +390,19 @@ struct drm_mode_cursor { __u32 handle; }; +struct drm_mode_cursor2 { + __u32 flags; + __u32 crtc_id; + __s32 x; + __s32 y; + __u32 width; + __u32 height; + /* driver specific handle */ + __u32 handle; + __s32 hot_x; + __s32 hot_y; +}; + struct drm_mode_crtc_lut { __u32 crtc_id; __u32 gamma_size; diff --git a/xf86drmMode.c b/xf86drmMode.c index f603ceb2..6b60c35e 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c @@ -400,6 +400,21 @@ int drmModeSetCursor(int fd, uint32_t crtcId, uint32_t bo_handle, uint32_t width return DRM_IOCTL(fd, DRM_IOCTL_MODE_CURSOR, &arg); } +int drmModeSetCursor2(int fd, uint32_t crtcId, uint32_t bo_handle, uint32_t width, uint32_t height, int32_t hot_x, int32_t hot_y) +{ + struct drm_mode_cursor2 arg; + + arg.flags = DRM_MODE_CURSOR_BO; + arg.crtc_id = crtcId; + arg.width = width; + arg.height = height; + arg.handle = bo_handle; + arg.hot_x = hot_x; + arg.hot_y = hot_y; + + return DRM_IOCTL(fd, DRM_IOCTL_MODE_CURSOR2, &arg); +} + int drmModeMoveCursor(int fd, uint32_t crtcId, int x, int y) { struct drm_mode_cursor arg; diff --git a/xf86drmMode.h b/xf86drmMode.h index 8e400340..f8a817cd 100644 --- a/xf86drmMode.h +++ b/xf86drmMode.h @@ -378,6 +378,7 @@ int drmModeSetCrtc(int fd, uint32_t crtcId, uint32_t bufferId, */ int drmModeSetCursor(int fd, uint32_t crtcId, uint32_t bo_handle, uint32_t width, uint32_t height); +int drmModeSetCursor2(int fd, uint32_t crtcId, uint32_t bo_handle, uint32_t width, uint32_t height, int32_t hot_x, int32_t hot_y); /** * Move the cursor on crtc */ |