NOTE: This page is only applicable to VirtualBox 3.1.6 - 3.2.0. 3D acceleration support for 64-bit Windows guest applications has been included in VirtualBox 3.2.2.
This article explains how to build and install the VirtualBox 3D Acceleration DLL's for Win64, which will allow you to run OpenGL applications in Windows 64-bit guests using 3D hardware acceleration. When combined with the 64-bit versions of VirtualBox and VirtualGL for Linux, this provides a full solution for remotely displaying Windows 64-bit OpenGL applications to thin clients.
Build Environment
This will install a build environment sufficient to build the VirtualBox 3D Acceleration DLL's but not sufficient to build a fully operational version of VirtualBox.
- Install VirtualBox 3.1.6 on your host machine
- Create a new virtual machine and install Windows XP 64-bit as a guest operating system (this may work with later versions of Windows as well but has not been tested)
- Enable 3D Acceleration in the new VM's preferences
- The remaining steps should be performed within the new VM
- Install v3.1.6 of the VirtualBox Guest Additions
- Install the Windows Vista Update & .NET 3.0 SDK from http://msdn.microsoft.com/en-us/windows/dd146047.aspx
- Add
C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\bin\x64
and C:\Program Files\Microsoft SDKs\Windows\v6.0\bin\x64
to the system PATH
environment variable
- Add
C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\lib\x64
and C:\Program Files\Microsoft SDKs\Windows\v6.0\lib\x64
to the system LIB
environment variable
- Add
C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\include
and C:\Program Files\Microsoft SDKs\Windows\v6.0\include
to the system INCLUDE
environment variable
- Using the Microsoft Junction utility, create the following junctions:
cd /d C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin
junction amd64 x64
cd /d C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\lib
junction amd64 x64
cd /d C:\Program Files\Microsoft SDKs\Windows\v6.0\lib
junction amd64 x64
- Using the Win32 Patch utility, apply this patch to
C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\INCLUDE\intrin.h
- Install the Windows DDK for Windows Server 2003 (ISO is available here)
- Using the Win32 Patch utility, apply this patch to
C:\WINDDK\3790.1830\inc\ddk\wnet\ntddk.h
- Download and install the DirectX SDK
- Download YASM for Win64, rename the binary as
yasm.exe
, and place it somewhere in the PATH
- Download and install Python 2.5 for Win64
- Create a new directory
c:\src
- Download the source for VirtualBox 3.1.6 and extract it into
c:\src
- Using the Win32 Patch utility, apply this patch to
c:\src\VirtualBox-3.1.6_OSE
- Unzip this file into
C:\src\VirtualBox-3.1.6_OSE\src\VBox\Additions\common\crOpenGL
Building
cd /d C:\src\VirtualBox-3.1.6_OSE
cscript configure.vbs --with-vc="c:\Program Files\Microsoft SDKs\Windows\v6.0\VC" --with-VC-Express-Edition --with-python=c:\Python25
env.bat
cd C:\src\VirtualBox-3.1.6_OSE\src\VBox\Runtime
kmk RuntimeGuestR3
kmk RuntimeGuestR3Shared
cd C:\src\VirtualBox-3.1.6_OSE\src\VBox\Additions\common\VBoxGuestLib
kmk
cd C:\src\VirtualBox-3.1.6_OSE\src\VBox\GuestHost\OpenGL
kmk
(this will fail while building VBoxOGLhostcrutil.dll
, but that's OK, because we don't need that library)
cd C:\src\VirtualBox-3.1.6_OSE\src\VBox\Additions\common\crOpenGL
kmk
Installing
- Load regedit and import this registry script
copy C:\src\VirtualBox-3.1.6_OSE\out\win.amd64\release\bin\additions\VBoxOGL*.dll c:\windows\system32
- Pre-built versions of these DLL's can be found here.
Conclusions
Apart from the changes to the interface definition file for VBoxOGL.dll
, necessitated by the differences in the Win64 calling convention, no other modifications to the VirtualBox source were necessary to make this work. Thus, it is likely that the main reason why 3D Acceleration for 64-bit Windows guests doesn't exist is that SunOracle hasn't bothered to figure out how to build it yet. Given the obfuscated nature of the VirtualBox build environment, this is not surprising, as it took us about 25 hours to figure out the above procedure ourselves. This also indicates that, if SunOracle ever does decide to release a 64-bit VBox executable for Windows, then this problem will solve itself.