Conclusion
We have reviewed different approaches that would allow running Direct3D 10 applications on Windows XP. As we have just seen, without the help of Microsoft and the GPU IHVs it would be impossible to reach full compatibility. Any independent approach may be an interesting technical challenge, but cannot be a general solution for everyone. This becomes even truer as more and more people get their Direct3D 10 hardware bundled with a new system that has Vista preinstalled. The demand for Direct3D 10 for Windows XP may be very high when the first real Direct3D 10 enabled applications hit the world soon, but as time goes by more and more people will finally exchange their Windows XP for Vista. This doesn’t mean that time spent on such a solution is wasted, however. The knowledge it gains would help bring Direct3D 10 applications to Linux or any other operating system.
Appendix: Direct3D wrapper projects
At the moment there are two teams that have officially announced they are working on Direct3D 10 solutions. The first one is the Wine team, which is running this first attack as a Google “Summer of Code†project. They haven’t released any code so far, but you can find their aims in their weekly newsletter 329. As Wine is a Linux project, making their Direct3D 10 wrapper work on Windows XP is not on their list of priorities.
In comparison, the Direct3D 10 project of a company called FallingLeaf systems made WindowsXP their first priority. They have already released a pre alpha version of their “Alky Compatiblity Libraries for Windows XP“. They claim it allows users to run Direct3D 10 examples from the DirectX SDK on Windows XP. As these examples cannot be downloaded separately, a full SDK is needed. Additionally, the tutorials are only contained as source code. Therefore a compiler is needed as well. Following the steps in the readme file, it was possible to start theses tutorials without a crash. But only the most simple ones show the correct result. As soon as there is a single triangle on the screen, there are visible differences compared to the original as run on Windows Vista.
Using GLIntercept to analyze the commands that are being sent to the OpenGL API shows even more details. The current implementation doesn’t use shaders or any other advanced OpenGL technologies, like buffer objects, at all. It tries to map the shader- based Direct3D 10 calls to fixed function immediate mode OpenGLcalls. . . and fails. As we don’t know how much time they spent to get to this point, it is hard to speculate just how far they can get by the time the first real Direct3D applications are available. However, at this time it would appear to be a safe bet that you will need Windows Vista to run those first real D3D 10 applications when they do appear.
A single pre transformed triangle with a fixed color.
Alky has the position right, but the color requested by the pixel shader is missed.
A spinning vertex colored cube
Again the position is right, but the color is problematic once more.
Two cubes
Big problems with the
second cube and the color is still missing.
Two light sources and
per pixel lighting
Finally some color, but overall it is wrong again.
A cube, a texture and
a continuous changing color
A correct result at last!
It wouldn't be a D3D SDK without Tiny
Tiny is there, but no per pixel lighting
Tiny again. But a
vertex shader made her less tiny.
No UI and no
additional body mass
Tiny with a cube
mapping metal effect.
No metal for Tiny.
The overall impression left by the preview version of
the “Alky project†is that it is possible to start some simple Direct3D 10
applications with a wrapper on Windows XP. However, as the examples above show, the results are wrong more often than right, and thus there is still a considerable distance to travel before real D3D10 games could use it to run on Windows XP.