3D acceleration support for VBox guests
|Reported by:||Sander van Leeuwen||Owned by:|
|Component:||3D support||Version:||VirtualBox 1.4.0|
|Guest type:||other||Host type:||other|
Description (last modified by )
This ticket is used to track development of 3d acceleration support.
I have committed my initial OpenGL guest support to the public SVN tree:
- communication framework between guest and host is present
- simple OpenGL samples are functional; they display their rendered output in an external window on the host for testing purposes)
- supported are only Windows guests combined with a Windows host
- not all OpenGL commands are implemented; most simple ones are
- Linux host and guest OpenGL support
- Add OpenGL extensions as reported by the host OS
- Direct3D emulation using OpenGL
We are looking for external developers with an interest to help us out to complete this work.
To enable it you must add the following registry keys:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL] "Version"=dword:00000002 "DriverVersion"=dword:00000001 "Flags"=dword:00000001 "Dll"="VBoxOGL.dll"
You need to build the latest additions from SVN as the OpenGL ICD mechanism needs a change in the display driver.
VBoxOGL.dll needs to be present in \Windows\System32.
TEMPORARY requirement: to enable OpenGL you must change src\VBox\Main\VMMDevInterface.cpp at line 606.
You can also directly link the OpenGL test cases with VBoxOGL.lib to test them directly.
- replace $(PATH_SDK_W2K3DDKX86_LIB)/opengl32.lib with $(PATH_LIB)/VBoxOGL.lib in the makefile of the test cases
- add VBOX_WITH_WGL_EXPORTS to VBoxOGL_DEFS in the VBoxOGL makefile
Enabling logging can be of invaluable help while debugging problems.
- export the VBOX_LOG variable and set it to -all+shared_opengl+dev_vmm_backdoor
- build the debug version of VBox
The full debug version of VBox adds quite a bit of overhead and might assert from time to time. For OpenGL debugging you only need to use the debug binaries of the hardware Devices (VBoxDD*.*). You can simply copy them into the directory with the full release version. (both must be at the same SVN level of course)