mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 16:41:39 +00:00
drm/qxl: Use the hotspot properties from cursor planes
Atomic modesetting got support for mouse hotspots via the hotspot properties. Port the legacy kms hotspot handling to the new properties on cursor planes. Signed-off-by: Zack Rusin <zackr@vmware.com> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com> Cc: Dave Airlie <airlied@redhat.com> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: virtualization@lists.linux-foundation.org Cc: spice-devel@lists.freedesktop.org Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20231023074613.41327-5-aesteve@redhat.com
This commit is contained in:
parent
cd54994292
commit
305b391d8f
@ -485,7 +485,6 @@ static int qxl_primary_atomic_check(struct drm_plane *plane,
|
||||
static int qxl_primary_apply_cursor(struct qxl_device *qdev,
|
||||
struct drm_plane_state *plane_state)
|
||||
{
|
||||
struct drm_framebuffer *fb = plane_state->fb;
|
||||
struct qxl_crtc *qcrtc = to_qxl_crtc(plane_state->crtc);
|
||||
struct qxl_cursor_cmd *cmd;
|
||||
struct qxl_release *release;
|
||||
@ -510,8 +509,8 @@ static int qxl_primary_apply_cursor(struct qxl_device *qdev,
|
||||
|
||||
cmd = (struct qxl_cursor_cmd *)qxl_release_map(qdev, release);
|
||||
cmd->type = QXL_CURSOR_SET;
|
||||
cmd->u.set.position.x = plane_state->crtc_x + fb->hot_x;
|
||||
cmd->u.set.position.y = plane_state->crtc_y + fb->hot_y;
|
||||
cmd->u.set.position.x = plane_state->crtc_x + plane_state->hotspot_x;
|
||||
cmd->u.set.position.y = plane_state->crtc_y + plane_state->hotspot_y;
|
||||
|
||||
cmd->u.set.shape = qxl_bo_physical_address(qdev, qcrtc->cursor_bo, 0);
|
||||
|
||||
@ -531,7 +530,6 @@ out_free_release:
|
||||
static int qxl_primary_move_cursor(struct qxl_device *qdev,
|
||||
struct drm_plane_state *plane_state)
|
||||
{
|
||||
struct drm_framebuffer *fb = plane_state->fb;
|
||||
struct qxl_crtc *qcrtc = to_qxl_crtc(plane_state->crtc);
|
||||
struct qxl_cursor_cmd *cmd;
|
||||
struct qxl_release *release;
|
||||
@ -554,8 +552,8 @@ static int qxl_primary_move_cursor(struct qxl_device *qdev,
|
||||
|
||||
cmd = (struct qxl_cursor_cmd *)qxl_release_map(qdev, release);
|
||||
cmd->type = QXL_CURSOR_MOVE;
|
||||
cmd->u.position.x = plane_state->crtc_x + fb->hot_x;
|
||||
cmd->u.position.y = plane_state->crtc_y + fb->hot_y;
|
||||
cmd->u.position.x = plane_state->crtc_x + plane_state->hotspot_x;
|
||||
cmd->u.position.y = plane_state->crtc_y + plane_state->hotspot_y;
|
||||
qxl_release_unmap(qdev, release, &cmd->release_info);
|
||||
|
||||
qxl_release_fence_buffer_objects(release);
|
||||
@ -851,8 +849,8 @@ static int qxl_plane_prepare_fb(struct drm_plane *plane,
|
||||
struct qxl_bo *old_cursor_bo = qcrtc->cursor_bo;
|
||||
|
||||
qcrtc->cursor_bo = qxl_create_cursor(qdev, user_bo,
|
||||
new_state->fb->hot_x,
|
||||
new_state->fb->hot_y);
|
||||
new_state->hotspot_x,
|
||||
new_state->hotspot_y);
|
||||
qxl_free_cursor(old_cursor_bo);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user