Atomic KMS API lacks the ability to set cursor hot-spot coordinates

Hans de Goede hdegoede at redhat.com
Wed Mar 18 15:04:07 UTC 2020


Hi,

On 3/18/20 3:38 PM, Simon Ser wrote:
> Hi,
> 
>> 1) Letting the VM-viewer window-system draw the cursor as it normally
>> would draw it.
> 
> Why is this important? Can't the VM viewer hide the cursor and use a
> sub-surface to manually draw the cursor plane configured by the guest?

Because then moving the cursor as seen by the user requires a round trip
through the VM and that adds latency, esp. when the VM viewer is viewing
a VM which is running somewhere else over the network.

Also note that a subsurface is a Wayland specific solution, where as
the VM-viewer may be running on X11, Windows, Mac OS, etc.

> This would also allow the compositor running inside the VM to correctly
> have control over the cursor position, which is necessary for pointer
> constraints.

Vms basically have 2 mouse modes:

1) Seamless, this works well for all apps which don't do weird things
with the cursor. This is what 99% of users want

2) Grab/confine the mouse on the first click inside the VM-viewer window
and constantly warp it to the center so that it can move "endlessly"
combined with drawing the VM's mouse cursor as a software sprite.

Combined with a special key combo to release the cursor and allow it
to leave the VM window in case the user wants to interact with anything
else on their desktop. AKA the "this user experience sucks" mode which
sometimes is necessary for guests which don't support absolute input
coordinates, or for special use cases.

Mode 2. can be used in case of apps inside the guest which want need
to constrain the pointer to stay inside a part-of the vm-viewer window,
note that the most prominent example of such apps are VM-viewer's
themselves and the whole purpose of seamless mode is to not need this
less then ideal user experience mode.

Anyways as I mentioned in the p.s. to my original mail already, this
is exactly NOT the kind of feedback I'm looking for. Seamless mode
exists, it has done so for at least a decade, probably a lot longer.

It works everywhere, across multiple platforms and hypervisors,
except with the KMS atomic API. The need to set hotspot coordinates
is not something which is up to discussion from my pov. What is up
for discussion is how to extend the KMS atomic API to allow this.

Regards,

Hans



More information about the dri-devel mailing list