On my news feed this morning was an article on AMD claiming that there will not be a version 12 of DirectX. Great news as far as I’m concerned, as it may incentivise game developers to develop against OpenGL instead of DirectX, which in turn could lessen the stranglehold that Microsoft has when it comes to a PC gamer’s operating system of choice.
However, reading the opinions of Slashdot readers, one reader brought up the claim that Microsoft was tying down versions of DirectX to versions of Windows in an attempt to boost operating system sales — in particular, the fact that DirectX 10 does not run on Windows XP or earlier. This was debunked so brilliantly by rsmith-mac that I’m quoting it in its entirety:
Dammit. It’s been 6 years now and I’m getting tired of this stupid falsehood. Direct3D 10 wasn’t limited to Vista for superficial business reasons. There are some extremely important technical factors that required overhauling parts of Windows alongside D3D10.
The graphics stack below the API was almost entirely overhauled, as per the Windows Display Driver Model [wikipedia.org]. Context switching, multithreading, virtual memory, splitting up the driver into user-mode and kernel-mode components, and that’s just the tip of the iceberg. People forget just how broken Direct3D 9 was (and is); it was created at a time when the term “GPU” didn’t exist yet and a video card was little more than a texturing unit and a raster op pipeline, and then brutally extended over the years to incorporate functionality like T&L and shaders. The whole thing predicated on a driver model that basically treated the video card as nothing more than a special class of peripheral, whereas with WDDM the GPU was finally promoted to a special class of processor within Windows.
Direct3D 10 in turn takes advantage of these low-level changes, particularly the changes to memory management. As a result, you can’t have D3D10 without WDDM and the modern graphics stack it brings.
So the only way to bring D3D10 to XP would have been to create a cutthroat version of it that had little in common with Vista’s version, or to backport the entire Vista graphics stack to XP, At which point you would have Vista whether you liked it or not, since you just brought over one of the biggest changes in the OS, and all of the bugs, growing pains, and incompatibility that brings.
So, next time someone brings this argument up again, you know where to link them. 🙂
(Yes, there are “DirectX 10 for Windows XP” installers floating around the interwebs, but all these do is map DirectX 10 functions to DirectX 9 API calls — and they don’t do a very good job at it either.)