On 11/05/2013 08:46 PM, Dave Airlie wrote:
On Wed, Nov 6, 2013 at 6:42 AM, John Baboval <john.babo...@citrix.com> wrote:
Hello,
I am currently the device model maintainer for XenClient Enterprise. As you
may or may not know, we maintain a patch queue on top of QEMU (currently
1.3) that adds functionality needed to support XCE features.
One of the major things we add is robust multi-head support. This includes
DDC emulation for EDID data, variable VRAM size, monitor hot-plug support,
simulated VSYNC, and guest controlled display orientation. This includes
both the necessary interfaces between the hw and ui, and a new emulated
adapter (with drivers) that exercises the interfaces.
I don't think we'd want to lump all these things together though,
I agree. In my current patch set they are all separated out into
individual bits.
I've started looking at doing multi-head support for a new virtio-gpu,
and I've gotten basic multi-head working with SDL2.0 with cursor
support.
It currently just adds multiple DisplaySurfaces to the QemuConsole,
now Gerd said he thought I should be using multiple QemuConsoles but I
really didn't think this was a good idea, and I still think multiple
surfaces makes more sense wrt how best to interact with this.
Why do you need to emulate DDC btw? is this just to fool the guest
vesa code etc?
Basically, yes. It's convenient if you don't want to install a driver in
the guest, but you want it to boot to a reasonable resolution. There are
two parts to the change. The big part is in the vga BIOS, to add an
INT10(0x4F) handler that reads the EDID from an IO port. The QEMU side
is simply the IO port handler, and a place in VGACommonState to squirrel
away the EDID.
For multi-head, we install a driver anyway (The X.org driver is GPL. The
windows one, we can only distribute the binary for now because it's got
closed-source code from Microsoft in it), and then it doesn't even use
the DDC. There's a shared memory channel for passing EDID.
Dave.