mbox series

[v2,0/6] ui/gtk: Add a new parameter to assign connectors/monitors (v2)

Message ID 20221118014426.182599-1-vivek.kasireddy@intel.com (mailing list archive)
Headers show
Series ui/gtk: Add a new parameter to assign connectors/monitors (v2) | expand

Message

Kasireddy, Vivek Nov. 18, 2022, 1:44 a.m. UTC
There is a need (expressed by several customers/users) to assign
ownership of one or more physical monitors/connectors to individual
Guests such that there is a clear notion of which Guest's contents
are being displayed on any given monitor. Given that there is always
a Display Server/Compositor running on the Host, monitor ownership
can never truly be transferred to Guests. However, the closest we
can come to realizing this concept is to request the Host compositor
to fullscreen the Guest's windows on individual monitors. This way,
it would become possible to have 4 different Guests' windows be
displayed on 4 different monitors or a single Guest's windows (or
virtual consoles/outputs) be displayed on 4 monitors or any such
combination.

This patch series attempts to accomplish this by introducing a new
parameter named "connector" to assign the monitors to the GFX VCs
associated with a Guest. If the assigned monitor is not connected,
then the Guest's window would not be displayed anywhere similar to
how a Host compositor would behave when the connectors are not
connected. Once the monitor is hotplugged, the Guest's window(s)
would be positioned on the assigned monitor.

The first 3 patches are bug fixes associated with pointer positioning
in relative mode. The 4th patch is also a bug fix to ensure that 
context related objects are destroyed when an associated window is
destroyed. The 5th patch is a minor refactor and the last patch
introduces the new parameter. This patch series is expected to
supersede a similar series from Dongwon Kim here:
https://lists.nongnu.org/archive/html/qemu-devel/2022-07/msg03214.html

Example Usage: -device virtio-gpu-pci,max_outputs=2,blob=true......
               -display gtk,gl=on,connector.0=eDP-1,connector.1=DP-1.....

Cc: Dongwon Kim <dongwon.kim@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>

Vivek Kasireddy (6):
  ui/gtk: Consider the scaling factor when getting the root coordinates
  ui/gtk-gl-area: Don't forget to calculate the scaling factors in draw
  ui/gtk: Handle relative mode events correctly with Wayland compositors
  ui/gtk: Disable the scanout when a detached tab is closed
  ui/gtk: Factor out tab window creation into a separate function
  ui/gtk: Add a new parameter to assign connectors/monitors to GFX VCs
    (v2)

 include/ui/gtk.h |   3 +
 qapi/ui.json     |  10 +-
 qemu-options.hx  |   5 +-
 ui/gtk-egl.c     |   2 +
 ui/gtk-gl-area.c |   7 +
 ui/gtk.c         | 383 +++++++++++++++++++++++++++++++++++++++++++----
 6 files changed, 375 insertions(+), 35 deletions(-)