qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/9] ui: guest displays multiple connectors suppport and hotplug in
@ 2023-06-21  0:43 Dongwon Kim
  2023-06-21  0:43 ` [RFC PATCH 1/9] ui/gtk: skip drawing guest scanout when associated VC is invisible Dongwon Kim
                   ` (8 more replies)
  0 siblings, 9 replies; 21+ messages in thread
From: Dongwon Kim @ 2023-06-21  0:43 UTC (permalink / raw)
  To: qemu-devel
  Cc: kraxel, berrange, armbru, philmd, marcandre.lureau,
	vivek.kasireddy, Dongwon Kim

(This series replace two patch series,
[PATCH v2 0/6] ui/gtk: Add a new parameter to assign connectors/monitors (v2)
https://lists.gnu.org/archive/html/qemu-devel/2022-11/msg03098.html and
[RFC PATCH 0/3] ui/gtk: no render event when vc is invisible
https://lists.gnu.org/archive/html/qemu-devel/2022-10/msg04926.html) 

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 4 patches (0000~0004) are for some prep work that adds a flag
called 'visible' for VC that indicates the visibility of the associated
GTK window and making drawing operation skipped for invisible VCs.

0005 and 0006 are actual implementation of monitors/connectors mapping
to the guests. 0007 through 0009 are additional code changes for preventing
deadlock situation due to asynchronous display hot plug in event when guest
scanout is shared as blobs (zero copy display sharing)

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

Dongwon Kim (6):
  ui/gtk: skip drawing guest scanout when associated VC is invisible
  ui/gtk: set the ui size to 0 when invisible
  ui/gtk: reset visible flag when window is minimized
  ui/gtk: unblock gl if draw submitted already or fence is not yet
    signaled
  ui/gtk: skip drawing if any of ctx/surface/image don't exist
  ui/gtk: skip refresh/rendering if VC is invisible

Vivek Kasireddy (3):
  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

 include/ui/gtk.h |   2 +
 qapi/ui.json     |  11 +-
 qemu-options.hx  |   5 +-
 ui/gtk-egl.c     |  20 +++
 ui/gtk-gl-area.c |  14 ++
 ui/gtk.c         | 362 +++++++++++++++++++++++++++++++++++++++++++----
 6 files changed, 384 insertions(+), 30 deletions(-)

-- 
2.34.1



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2023-07-13  4:54 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-21  0:43 [RFC PATCH 0/9] ui: guest displays multiple connectors suppport and hotplug in Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 1/9] ui/gtk: skip drawing guest scanout when associated VC is invisible Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 2/9] ui/gtk: set the ui size to 0 when invisible Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 3/9] ui/gtk: reset visible flag when window is minimized Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 4/9] ui/gtk: Disable the scanout when a detached tab is closed Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 5/9] ui/gtk: Factor out tab window creation into a separate function Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 6/9] ui/gtk: Add a new parameter to assign connectors/monitors to GFX VCs Dongwon Kim
2023-06-21  5:51   ` Markus Armbruster
2023-06-27 18:22     ` Kim, Dongwon
2023-07-07 14:07       ` Markus Armbruster
2023-07-07 17:16         ` Kim, Dongwon
2023-07-10  6:05           ` Markus Armbruster
2023-07-10 20:31             ` Kim, Dongwon
2023-07-11  6:36               ` Markus Armbruster
2023-07-11 17:19                 ` Kim, Dongwon
2023-07-12  5:52                   ` Markus Armbruster
2023-07-13  4:53                     ` Kim, Dongwon
2023-07-11  0:32   ` [RFC PATCH v2 " Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 7/9] ui/gtk: unblock gl if draw submitted already or fence is not yet signaled Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 8/9] ui/gtk: skip drawing if any of ctx/surface/image don't exist Dongwon Kim
2023-06-21  0:43 ` [RFC PATCH 9/9] ui/gtk: skip refresh/rendering if VC is invisible Dongwon Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).