[PATCH 0/6] drm: Add mouse cursor hotspot support to atomic KMS
Zack Rusin
zack at kde.org
Thu Jun 2 15:42:37 UTC 2022
From: Zack Rusin <zackr at vmware.com>
Support for setting mouse cursor hotspot never made the transition from
the legacy kms to atomic. This left virtualized drivers, all which
are atomic, in a weird spot because all userspace compositors put
those drivers on deny-lists for atomic kms due to the fact that mouse
clicks were incorrectly routed, e.g:
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/backends/native/meta-kms-impl-device-atomic.c#L1188
https://invent.kde.org/plasma/kwin/-/blob/master/src/backends/drm/drm_gpu.cpp#L156
So even though all the virtualized drm drivers are atomic, none of them
could be used with atomic kms because of the missing mouse cursor hotspot
support.
The first change adds support for mouse cursor hotspots to drm core atomic
via the HOTSPOT_X and HOTSPOT_Y properties and implements it in the
legacy paths. The next few changes add support for the mouse hotspot
properties to all the drivers which required hotspots. And the final
change removes the legacy hotspot code because it's unused.
A sample mutter patch which makes gnome-shell work with all the
virtualized drivers with atomic kms is here:
https://gitlab.gnome.org/zackr/mutter/-/commit/2aa61b50507a24f34d514fa65b7bcf07e910f459
I'll have a similar patch for kwin.
This gets virtualized drivers working correctly with atomic kms, but the
hotspot codepaths aren't fool proof, e.g.:
- there's no way of currently validating that the drm drivers actually
did anything with the information and no way of testing it via igt,
- all userspace code needs to hardcore a list of drivers which require
hotspots because there's no way to query from drm "does this driver
require hotspot"
Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Cc: Maxime Ripard <mripard at kernel.org>
Cc: Thomas Zimmermann <tzimmermann at suse.de>
Cc: David Airlie <airlied at linux.ie>
Cc: Daniel Vetter <daniel at ffwll.ch>
Cc: Gerd Hoffmann <kraxel at redhat.com>
Cc: Gurchetan Singh <gurchetansingh at chromium.org>
Cc: Chia-I Wu <olvaffe at gmail.com>
Cc: Hans de Goede <hdegoede at redhat.com>
Zack Rusin (6):
drm/atomic: Add support for mouse hotspots
drm/vmwgfx: Create mouse hotspot properties on cursor planes
drm/qxl: Create mouse hotspot properties on cursor planes
drm/vboxvideo: Create mouse hotspot properties on cursor planes
drm/virtio: Create mouse hotspot properties on cursor planes
drm: Remove legacy cursor hotspot code
drivers/gpu/drm/drm_atomic_state_helper.c | 14 ++++++++
drivers/gpu/drm/drm_atomic_uapi.c | 20 +++++++++++
drivers/gpu/drm/drm_plane.c | 44 +++++++++++++++++++++--
drivers/gpu/drm/qxl/qxl_display.c | 13 +++----
drivers/gpu/drm/vboxvideo/vbox_mode.c | 5 +--
drivers/gpu/drm/virtio/virtgpu_display.c | 1 +
drivers/gpu/drm/virtio/virtgpu_plane.c | 8 ++---
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 11 ++----
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 2 ++
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 1 +
drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 2 ++
include/drm/drm_framebuffer.h | 12 -------
include/drm/drm_plane.h | 15 ++++++++
13 files changed, 113 insertions(+), 35 deletions(-)
--
2.34.1
More information about the dri-devel
mailing list