VMware's New Graphics Architecture Is Shaping Up
VMware's overhauled Linux graphics driver stack is shaping up and coming together nicely in time for Ubuntu 12.04 LTS, which will allow for 2D/3D guest acceleration within virtualized guest machines.
VMware's graphics stack for use on their virtualization platform has been a long time coming. Back in 2009 they introduced their Gallium3D driver and the adjoining Linux kernel DRM, but up until now both have been considered experimental / staging and not built by default. With Mesa 8.0 and the Linux 3.2 kernel that has changed with both being considered stable and good enough for default use by its customers. Their mainline DRM driver also does kernel mode-setting for its virtual "SVGA II" graphics adapter.
Best of all is that this virtual graphics driver stack is open-source and VMware continues paying the Tungsten Graphics developers it acquired to continue working heavily on upstream Mesa / Gallium3D. VMware has also merged their DDX driver improvements to master back in December.
In the process of maturing their VMware Gallium3D support, they also introduced the XA state tracker in 2011 as a new means of 2D acceleration on the Gallium3D architecture (similar to the Xorg state tracker), among other upstream Mesa advancements.
For those wishing to take advantage of this advanced 3D support, a development snapshot of xf86-video-vmware 12.0 DDX is needed (currently at 11.9.x development releases), the Linux 3.2 kernel or newer, and Mesa 8.0 or later. These Linux guest requirements should be met by Ubuntu 12.04 LTS, Fedora 17, and other upcoming Linux distribution releases. In terms of the VMware virtualization platform, VMware Workstation 8.0.2 or VMware Fusion 4.1.2 is required (it doesn't look like there will be 3D support for the free VMware Player).
Some limitations of this VMware 3D stack is that X Render won't be acelerated unless it's using previously-rendered 3D or video surfaces (i.e. X Render compositing window managers may produce poor results), and glxSwapBuffers on multi-monitor setups is slow (to be addressed in future VMware virtualization platform releases).
Another benefit of the landed VMware Linux driver improvements is that the DDX now supports RandR 1.2. Except if using any of the newer Resize and Rotate functionality, the VMware mouse may misbehave.
The 2D acceleration architecture in use for this new stack is SAA, which is short for the Shadow Acceleration Architecture. VMware's Shadow Acceleration Architecture merges EXA and Intel UXA. This architecture is meant to be very simple and for drivers where not all operations are backed by hardware acceleration. What SAA can do that the other architectures can't do as well is tracking what contents are accelerated. "The idea behind this is that it's often more costly to set up the accelerator state than to perform the render operation in software on cached memory. The drawback is that large copies or render operations are slower. EXA and UXA aren't tracking rendered areas carefully enough, and modifying EXA to do that would have required invasive changes in internal- and driver EXA apis."
In terms of how the Shadow Acceleration Architecture relates to the XA Gallium3D state tracker, VMware says, "XA is a freestanding acceleration API that is intended to be useful for X acceleration architectures. The VMware driver is using it to handle acceleration requests from SAA, but it could also theoretically be interfaced with EXA or UXA. The XA version used by xf86-video-vmware is naturally using Gallium3D to accelerate, but it should also be possible to implement XA on top of EGL, for example. XA has support for XRender-like operations and YUV conversions. It's used by xf86-video-vmware to accelerate XRender when needed, for accelerated copies when needed (glxSwapBuffers or compositing of previously accelerated contents), and for the textured XVideo adaptor."
These details about the driver enhancements are mentioned on the new X.Org VMware3D page.
This is just some cursory information about VMware's 2D/3D acceleration enhancements as my investigation is just beginning now that the stack is finally reaching a stable state. Expect graphics benchmarks of this platform in the coming weeks. There will also be comparison benchmarks to Oracle's VM VirtualBox and its 3D acceleration support.
There's also some early discussion about the "vmwgfx stuff" in the Phoronix Forums.
VMware's graphics stack for use on their virtualization platform has been a long time coming. Back in 2009 they introduced their Gallium3D driver and the adjoining Linux kernel DRM, but up until now both have been considered experimental / staging and not built by default. With Mesa 8.0 and the Linux 3.2 kernel that has changed with both being considered stable and good enough for default use by its customers. Their mainline DRM driver also does kernel mode-setting for its virtual "SVGA II" graphics adapter.
Best of all is that this virtual graphics driver stack is open-source and VMware continues paying the Tungsten Graphics developers it acquired to continue working heavily on upstream Mesa / Gallium3D. VMware has also merged their DDX driver improvements to master back in December.
In the process of maturing their VMware Gallium3D support, they also introduced the XA state tracker in 2011 as a new means of 2D acceleration on the Gallium3D architecture (similar to the Xorg state tracker), among other upstream Mesa advancements.
For those wishing to take advantage of this advanced 3D support, a development snapshot of xf86-video-vmware 12.0 DDX is needed (currently at 11.9.x development releases), the Linux 3.2 kernel or newer, and Mesa 8.0 or later. These Linux guest requirements should be met by Ubuntu 12.04 LTS, Fedora 17, and other upcoming Linux distribution releases. In terms of the VMware virtualization platform, VMware Workstation 8.0.2 or VMware Fusion 4.1.2 is required (it doesn't look like there will be 3D support for the free VMware Player).
Some limitations of this VMware 3D stack is that X Render won't be acelerated unless it's using previously-rendered 3D or video surfaces (i.e. X Render compositing window managers may produce poor results), and glxSwapBuffers on multi-monitor setups is slow (to be addressed in future VMware virtualization platform releases).
Another benefit of the landed VMware Linux driver improvements is that the DDX now supports RandR 1.2. Except if using any of the newer Resize and Rotate functionality, the VMware mouse may misbehave.
The 2D acceleration architecture in use for this new stack is SAA, which is short for the Shadow Acceleration Architecture. VMware's Shadow Acceleration Architecture merges EXA and Intel UXA. This architecture is meant to be very simple and for drivers where not all operations are backed by hardware acceleration. What SAA can do that the other architectures can't do as well is tracking what contents are accelerated. "The idea behind this is that it's often more costly to set up the accelerator state than to perform the render operation in software on cached memory. The drawback is that large copies or render operations are slower. EXA and UXA aren't tracking rendered areas carefully enough, and modifying EXA to do that would have required invasive changes in internal- and driver EXA apis."
In terms of how the Shadow Acceleration Architecture relates to the XA Gallium3D state tracker, VMware says, "XA is a freestanding acceleration API that is intended to be useful for X acceleration architectures. The VMware driver is using it to handle acceleration requests from SAA, but it could also theoretically be interfaced with EXA or UXA. The XA version used by xf86-video-vmware is naturally using Gallium3D to accelerate, but it should also be possible to implement XA on top of EGL, for example. XA has support for XRender-like operations and YUV conversions. It's used by xf86-video-vmware to accelerate XRender when needed, for accelerated copies when needed (glxSwapBuffers or compositing of previously accelerated contents), and for the textured XVideo adaptor."
These details about the driver enhancements are mentioned on the new X.Org VMware3D page.
This is just some cursory information about VMware's 2D/3D acceleration enhancements as my investigation is just beginning now that the stack is finally reaching a stable state. Expect graphics benchmarks of this platform in the coming weeks. There will also be comparison benchmarks to Oracle's VM VirtualBox and its 3D acceleration support.
There's also some early discussion about the "vmwgfx stuff" in the Phoronix Forums.
4 Comments