3D Acceleration Support
Posted: 10. May 2007, 17:53
3D Acceleration Support and the technical problems
since there are many questions - so I would like to write : "What are the obstacles to achieving a 3D in a VM"
The problem:
To get a 3D support, you have to have a virtual 3D hardware and several drivers - 1 for OpenGL and 1 for Direct3D.
Possible ways to get there:
a. Emulate a real 3D card such as GeForce - it solves the drivers problem automatically (both for OpenGL and DirectX) - but this card is closed-source hardware, so we can't simply emulate it.
This is very difficult to do technically, so probably, it won't happen. + it will be damn slow.
b. Use virtualized hardware, such as Virtualbox 3D accelerator - and write 3D drivers for that one. Remember - both OpenGL and Direct3D drivers are needed for several guest OSes.
The OpenGL problem can be resolved easier - we need to run para-virtualized drivers on top of host's OpenGL and we are done.
This approach Sun took with VirtualBox 2.1. Sun used third-party "Chromium" OpenGL transport layer, which was redirected over para-virtual channels.
The DirectX problem is more difficult - we will have to translate DirectX instructions into OpenGL instructions, like Wine does - but the problem with Wine is that it's too buggy and many games won't run. So it must be debugged along the way.
Experimental support for hardware-accelerated DirectX inside VirtualBox also exists. It is called WineD3D and supports only DirectX-8 (not 7 and not 9 !). 3D Mark 2001 is known to work.
This will allow to reach 90% of native speed, so this is very fast solution.
solution b is Very Difficult task as well, but more realistic than a.
VMware were working on it since about 2005, and and first product to support 3D is called VMware Fusion. VM WS 6.0 and 6.5 support it too. (experimentally)
Sun has started much later, in 2007, and by late 2008 had experimental OpenGL support. (VirtualBox 2.1)
Not all games work however; Perhaps a community has to step-in and help debug all those games.
=======================================================================
Update: The community pointed me to some interesting ongoing projects.
OK, so let's sum up all the known projects:
1. VMGL
http://www.cs.toronto.edu/~andreslc/xen-gl/
2. Qemu-patch
http://qemu-forum.ipi.fi/viewtopic.php?t=2984
3. Wine
http://www.winehq.com
3.a. WineD3D links: (Direct3D-on-OpenGL wrapper)
http://www.virtualbox.org/ticket/3639
http://www.nongnu.org/wined3d/
4. DirectX OpenGL Wrapper
http://sourceforge.net/projects/dxglwrap
5. Transgaming SwiftShader
This technology allows software rendering of many DirectX effects.
6. Interesting Paper explaining why VMware chose Gallium3D: (12.12.2009)
http://vmware-svga.svn.sourceforge.net/ ... revision=1
and lets sum the question:
Are those totally separate projects, or they have any relationships ?
--
-"Technologov"
since there are many questions - so I would like to write : "What are the obstacles to achieving a 3D in a VM"
The problem:
To get a 3D support, you have to have a virtual 3D hardware and several drivers - 1 for OpenGL and 1 for Direct3D.
Possible ways to get there:
a. Emulate a real 3D card such as GeForce - it solves the drivers problem automatically (both for OpenGL and DirectX) - but this card is closed-source hardware, so we can't simply emulate it.
This is very difficult to do technically, so probably, it won't happen. + it will be damn slow.
b. Use virtualized hardware, such as Virtualbox 3D accelerator - and write 3D drivers for that one. Remember - both OpenGL and Direct3D drivers are needed for several guest OSes.
The OpenGL problem can be resolved easier - we need to run para-virtualized drivers on top of host's OpenGL and we are done.
This approach Sun took with VirtualBox 2.1. Sun used third-party "Chromium" OpenGL transport layer, which was redirected over para-virtual channels.
The DirectX problem is more difficult - we will have to translate DirectX instructions into OpenGL instructions, like Wine does - but the problem with Wine is that it's too buggy and many games won't run. So it must be debugged along the way.
Experimental support for hardware-accelerated DirectX inside VirtualBox also exists. It is called WineD3D and supports only DirectX-8 (not 7 and not 9 !). 3D Mark 2001 is known to work.
This will allow to reach 90% of native speed, so this is very fast solution.
solution b is Very Difficult task as well, but more realistic than a.
VMware were working on it since about 2005, and and first product to support 3D is called VMware Fusion. VM WS 6.0 and 6.5 support it too. (experimentally)
Sun has started much later, in 2007, and by late 2008 had experimental OpenGL support. (VirtualBox 2.1)
Not all games work however; Perhaps a community has to step-in and help debug all those games.
=======================================================================
Update: The community pointed me to some interesting ongoing projects.
OK, so let's sum up all the known projects:
1. VMGL
http://www.cs.toronto.edu/~andreslc/xen-gl/
2. Qemu-patch
http://qemu-forum.ipi.fi/viewtopic.php?t=2984
3. Wine
http://www.winehq.com
3.a. WineD3D links: (Direct3D-on-OpenGL wrapper)
http://www.virtualbox.org/ticket/3639
http://www.nongnu.org/wined3d/
4. DirectX OpenGL Wrapper
http://sourceforge.net/projects/dxglwrap
5. Transgaming SwiftShader
This technology allows software rendering of many DirectX effects.
6. Interesting Paper explaining why VMware chose Gallium3D: (12.12.2009)
http://vmware-svga.svn.sourceforge.net/ ... revision=1
and lets sum the question:
Are those totally separate projects, or they have any relationships ?
--
-"Technologov"