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

Re: [Xen-devel] [RFC] Xen Virtual Framebuffer


  • To: Jacob Gorm Hansen <jacobg@xxxxxxx>
  • From: Jon Smirl <jonsmirl@xxxxxxxxx>
  • Date: Fri, 16 Dec 2005 10:48:24 -0500
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxx, Tracy R Reed <treed@xxxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Fri, 16 Dec 2005 15:50:29 +0000
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=DgLqu1e/8pp8VyZpSyJ86Fr4yTgWCnIztsZ70U/K8eK60EBsmQTjLAfDQ0Zvb6Z1YRU7EvNL2xEGwFOeeGiJ4Yx5H3M6w7F/QWhpqrmYM3Fw4b89s0tcIyGZoSCCXjjoYMaiBS3FtKpTuiiqyEdeLlPZlqrPjpjFQaXkoyulr28=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

On 12/16/05, Jacob Gorm Hansen <jacobg@xxxxxxx> wrote:
> On 12/11/05, Jon Smirl <jonsmirl@xxxxxxxxx> wrote:
>
> > You don't have to run the X server in dom0. You can run it in any
> > domain that has sole control of the graphics hardware.  The core
> > problem is that only one domain can have control of the video
> > hardware, there is no realistic way to virtualize a 3D engine.
>
> Even if it is impossible, I am currently attempting to do just that.
> At http://www.diku.dk/~jacobg/gfx you can see a screen shot of 3 Xen
> VM's displaying hardware-accelerated OpenGL to a shared server in
> dom0.

You can virtualize a single vendor's card. You can't really virtualize
3D in general because the cards are so different, there is no common
3D interface to virtualize. If you are going to design a common
virtual 3D interface you might as well use the exiting OpenGL/GLX
protocol rather than design something new. You'll find that GLX is
more communications efficient than virtualizing at the low level.

For example on Linux all of the 3D drivers use the DRM interface. But
the commands sent to the DRM interface are completely different for
each vendor's hardware. dom0 would be forced into decoding vendor
specific commands to stop a user DOM from moving the scanout buffer or
changing the mode. The Linux DRM code does contain a command verifier
which would help in decoding the packets. Another big, complex problem
is that the 3D hardware uses AGP space and DMA. These will have to be
virtualized too.

Another approach would be to use the concepts from Linux direct
rendering and to apply them to the set of VMs. With direct rendering
all of the domains are allowed direct access to the video hardware and
a sharing protocol is provided. In this scheme there is shared memory
between all of the VMs. The shared memory holds the DRM lock and video
memory management data. Each of the VMs would direct render into a
non-visible framebuffer. A master domain would then run composite and
build the screen. You still have to virtualize DMA and AGP. This isn't
really a virtual device, it is a shared device. With virtual devices a
misbehaving domain can't take down the device, in this model a
misbehaving domain can crash the device for all other domains.

> best regards,
> Jacob
>

--
Jon Smirl
jonsmirl@xxxxxxxxx

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.