qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] approaches to 3D virtualisation


From: Dave Airlie
Subject: [Qemu-devel] approaches to 3D virtualisation
Date: Sat, 12 Dec 2009 11:58:02 +1000

So I've been musing on the addition of some sort of 3D passthrough for
qemu (as I'm sure have lots of ppl)

But I think the goals of such an addition need to be discussed prior
to anyone writing a line of code.

Current existing solutions in the area:
a) VMware virtual graphics adapter - based on DX9, has an open
KMS/Gallium3D driver stack recently released by vmware, has certified
Windows drivers and has a documented vGPU interface (it could be
documented a lot better)

b) VirtualBox - seems to be GL based passthrough based on a Chromium
backend. DX9 support, looks to be done via Wine DX->GL converter built
into a Windows driver (not confirmed code base is crazy) I'm assuming
chromium is being used to stream GL through the passthru but this
definitely requires more investigation.

Now both of these seem to be local only rendering solutions, though I
might be underselling the vbox/chromium fun.

Now to add a remoting 3D rendering protocol is where things get ugly
fast, and very different from current 2D rendering with offscreen
pixmaps. The major difference is most server farms will not contain
any 3D hardware and will not want to contain any 3D hw due to power
considerations. Now if you have a remote protocol, and the client
disconnects, you have to keep some sort of transaction log, and either
replay the transactions when a client reconnects, or have some sort of
sw rendering kick in on the server as a fallback. Now 3D sw rendering
solutions are insanely slow and quite CPU intensive. VMware are
working on an llvm based 3D renderer for something like this situation
but I'm not convinced of how useable it will be.

Also with remoting you need to come up with a minimum acceptable level
of 3D you want to expose to guests OSes depending on what the
capabilities of the client side hw, or refuse connections unless the
client can run all the features that you've exposed in side the guest.
This ranges from DX7->DX11, and GL1.5 to GL3.0 situations.

I'm not sure how ppl who work with VNC see VNC fitting in with this
sort of protocol, I expect SPICE is better placed with proper design
to address this. Though it would firstly be nice to design a vGPU
interface for the guest OS to work against, I lean towards the VMware
because of the availability of guest drivers, however the Virtualbox
one is probably also acceptable if anyone can find where it is
documented.

This is just a sort of a brain dump from me, but I'd like to get ppl
talking about this, since 3D is not to be considered some simple
extension of 2D functionality,
its a whole different world, modern GPUs are 98% of silicon dedicated
to 3D processing, most of the current 2D type accel such as QXL
interface provides are done using 3D engines on most GPUs, and the
inability to render 3D on the server side of a link with any useful
speed in current server hw.

So I suppose the main questions to answer up front are:
1) Rendering done on same hw as VM is running?
just use VNC to dump the final answer over the network.
2) Rendering done on the client viewing end of the link where




reply via email to

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