qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 0/7] Multi-head support infrastructure


From: John Baboval
Subject: [Qemu-devel] [PATCH 0/7] Multi-head support infrastructure
Date: Thu, 19 Dec 2013 13:40:10 -0500

From: "John V. Baboval" <address@hidden>

This is mostly just RFC at this point, since I'm not quite ready to submit the
associated multi-head video adapter, drivers and UI that consume this stuff.
(I still have to remove some Xen/XenClient specific stuff from it).

These are the infrastructure hooks I needed to add in order to support XenClient
Enterprise style multi-head with the current QEMU tip.

The general architecture is as follows:

Other than the initial display (which works as it always has), displays are
dynamically added by the UI. This can be the result of command line parameters,
hotplug notifications from UDEV, the user clicking an "Add Display" button in a
menu, or whatever. The UI adds the display by calling graphic_hw_add_display(),
which returns the QemuConsole for the new display.

The video adapter can either allocate all supported displays up-front, or spoof
up a new one when its add_display handler is called, either way, it's 
responsible
for providing the new QemuConsole to the UI. If the display hardware doesn't 
support multi-head (add_display handler == NULL), or if the maximum number of
displays are already connected, graphic_hw_add_display returns NULL.

Once the UI has the new QemuConsole, it needs to do basic configuration. A new
opaque pointer has been added to the DisplayChangeListener. The UI should set 
this
to something which will allow it to determine which QemuConsole its handlers 
have
been called for. It should then register its DisplayChangeListener with the
QemuConsole. It should then provide a sane EDID with graphic_hw_store_edid(),
and notify the adapter of the relative positions of the display windows with
graphic_hw_set_orientation().

(Per earlier discussions with Gerd, the orientation should eventually live on
the QemuConsole itself, in which case graphic_hw_set_orientation would need
to be replaced with something like qemu_console_set_orientation(). I'll take 
care of that before the next version; I wanted to get something out for people
to see before leaving for holiday travel though.)

Once configuration is complete, and anytime the UI has completed configuration
changes (plugs/unplugs, re-orientation, change in "supported resolution" due to 
window resizing), the UI should call graphic_hw_notify().

If the display adapter needs to re-initialize, it can call dpy_reset(). The UI
should then reconfigure the EDID and orientation.

The last hook added here is not really multi-head related, but is an 
optimization
for showing/hiding the cursor.

Things I'd still like to do:

Submit the emulated multi-head graphics adapter along with the GPL Xorg and
binary Windows drivers.

Clean up the "active_console" stuff, which doesn't make a lot of sense anymore.

Modify one of the stock UIs to consume this stuff.



John V. Baboval (7):
  console: Add graphic_hw_store_edid()
  console: Add graphic_hw_set_orientation()
  console: Add graphic_hw_add_display()
  console: Add graphic_hw_notify()
  ui: Add dpy_reset()
  ui: Add dpy_cursor_enable()
  ui: Add an opaque pointer to the DisplayChangeListener

 include/ui/console.h |   22 ++++++++++++++++++++
 ui/console.c         |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+)

-- 
1.7.9.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]