VirtualBox 4.1 OpenGL 3D Guest Performance
While KVM may be very fast for Linux virtualization, one of the areas where VMware and VirtualBox are superior is when it comes to the ability to provide hardware-accelerated 2D/3D support to guest virtual machines that ultimately is passed onto the host and its graphics card / driver. In this benchmark is a look at the gaming performance of Oracle's VM VirtualBox 4.1 when using their "Chromium" driver to enable guest Linux OpenGL acceleration.
Back in March I published some VirtualBox 4.0 3D benchmarks, which were rather unpleasant and left a lot to be desired, but the benchmarks today are coming from new hardware and using the latest VirtualBox release (v4.1.2) available on Ubuntu 11.10 in the Oneiric repository. The guest drivers were also installed, which is needed for enabling the VirtualBox guest driver dubbed Chromium (not to be confused with Google's Chromium).
The OpenGL Windows guest acceleration in VirtualBox came in late 2008 and in early 2009 there was Direct3D acceleration for Windows guests. The OpenGL Linux support came to VirtualBox a few months later. This support was originally introduced in the VirtualBox 2 series. VirtualBox 3.0 came with OpenGL 2.0 support along with SMP support and other improvements.
Unlike VMware's implementation that uses the Gallium3D architecture in passing graphics calls from the guest to host, the Innotek/Sun/Oracle developers working on VirtualBox haven't been convinced about this model and use their own model. Since then we have seen the release of VirtualBox 4.0 and VirtualBox 4.1, so we are seeing today where the guest 3D support is standing. This support is available on all supported platforms: Windows, Linux, Mac OS X, and Solaris.
For those wondering about the technical implementation of this 3D support, the documentation describes it as, "Technically, VirtualBox implements this by installing an additional hardware 3D driver inside your guest when the Guest Additions are installed. This driver acts as a hardware 3D driver and reports to the guest operating system that the (virtual) hardware is capable of 3D hardware acceleration. When an application in the guest then requests hardware acceleration through the OpenGL or Direct3D programming interfaces, these are sent to the host through a special communication tunnel implemented by VirtualBox, and then the host performs the requested 3D operation via the host's programming interfaces."
The 2D hardware accelerated description is along similar lines. "With this feature, if an application (e.g. a video player) inside your Windows VM uses 2D video overlays to play a movie clip, then VirtualBox will attempt to use your host's video acceleration hardware instead of performing overlay stretching and color conversion in software (which would be slow). This currently works for Windows, Linux and Mac host platforms, provided that your host operating system can make use of 2D video acceleration in the first place...Technically, VirtualBox implements this by exposing video overlay DirectDraw capabilities in the Guest Additions video driver. The driver sends all overlay commands to the host through a special communication tunnel implemented by VirtualBox. On the host side, OpenGL is then used to implement color space transformation and scaling."
On a ZaReason notebook with an Intel Core i7 "Sandy Bridge" processor and NVIDIA graphics, the OpenGL performance was compared within VirtualBox and when running on bare metal. Several open-source games were tested at a variety of resolutions under both system. The official NVIDIA binary Linux driver was used the entire time during testing.