drm: add hotspot cursor interface support.

Signed-off-by: Dave Airlie <airlied@redhat.com>
main
Dave Airlie 2013-07-02 09:21:06 +01:00
parent 378bb47a78
commit 2e0ab62376
4 changed files with 30 additions and 0 deletions

View File

@ -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_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_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_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 * Device specific ioctls should only be in their respective headers

View File

@ -390,6 +390,19 @@ struct drm_mode_cursor {
__u32 handle; __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 { struct drm_mode_crtc_lut {
__u32 crtc_id; __u32 crtc_id;
__u32 gamma_size; __u32 gamma_size;

View File

@ -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); 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) int drmModeMoveCursor(int fd, uint32_t crtcId, int x, int y)
{ {
struct drm_mode_cursor arg; struct drm_mode_cursor arg;

View File

@ -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 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 * Move the cursor on crtc
*/ */