From: John Baboval <john.baboval@citrix.com>
To: qemu-devel@nongnu.org
Cc: "John V. Baboval" <john.baboval@citrix.com>
Subject: [Qemu-devel] [PATCH 0/7] Multi-head support infrastructure
Date: Thu, 19 Dec 2013 13:40:10 -0500 [thread overview]
Message-ID: <cover.1387475144.git.john.baboval@citrix.com> (raw)
From: "John V. Baboval" <john.baboval@citrix.com>
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
next reply other threads:[~2013-12-19 18:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-19 18:40 John Baboval [this message]
2013-12-19 18:40 ` [Qemu-devel] [PATCH 1/7] console: Add graphic_hw_store_edid() John Baboval
2013-12-19 18:40 ` [Qemu-devel] [PATCH 2/7] console: Add graphic_hw_set_orientation() John Baboval
2013-12-19 18:40 ` [Qemu-devel] [PATCH 3/7] console: Add graphic_hw_add_display() John Baboval
2013-12-19 18:40 ` [Qemu-devel] [PATCH 4/7] console: Add graphic_hw_notify() John Baboval
2013-12-19 18:40 ` [Qemu-devel] [PATCH 5/7] ui: Add dpy_reset() John Baboval
2013-12-19 18:40 ` [Qemu-devel] [PATCH 6/7] ui: Add dpy_cursor_enable() John Baboval
2013-12-19 18:40 ` [Qemu-devel] [PATCH 7/7] ui: Add an opaque pointer to the DisplayChangeListener John Baboval
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1387475144.git.john.baboval@citrix.com \
--to=john.baboval@citrix.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).