Today I found the final release of the Vista Platform Update waiting for me on Windows Update. That means that DirectX 11 is now available for every Vista user as well as every Windows 7 user.
I’ve done a bit more work on the loading code of my engine. Slightly better error handling and fixed some small bugs and missing features. Here is a new release, including the D3D9, D3D10 and D3D11 engine, all in 32-bit and 64-bit variations: Engine20092810.rar
In the bottom right corner of the startup dialog you can tell which version you are running:
In this case “64-bit Direct3D11, hardware 10”, which means it’s using the 64-bit binary, with the Direct3D 11 API, and hardware which supports the DirectX 10 featureset. The code can run on DirectX 9 level 1, the lowest possible featureset supported by Direct3D 11. Since this update also adds the downlevel support to Direct3D10.1, I’ve updated that part of the code as well, although it doesn’t make much sense when you can use Direct3D 11 anyway. Direct3D9 is still available for legacy XP systems.
I couldn’t resist trying the actual DirectX 9 level on an old machine. So I took the old Pentium 4 with Radeon X1900XTX, which has Windows 7 RC x64 installed. And indeed, it worked nicely… 64-bit, DirectX 11 on that old beast, reporting hardware level 9.3. Very nice. Looks like Direct3D 10 no longer servers a purpose for me, I can stop maintaining that code. And if Windows 7 sales take off, DirectX 9 will no longer be required either.
As an aside, I hate to disappoint people who’ve always thought that AMD’s 64-bit mode was ‘real’ and Pentium 4 was ‘fake’. The Pentium 4 ran the 64-bit code just fine, slightly faster than the 32-bit code (and those metaballs are quite CPU-intensive). Funny enough Athlon64 processors don’t do all that well. I’ve known this for a long time, although people refused to accept the truth. I’ve always thought that it was the Athlon64’s limited cache bandwidth that held it back in 64-bit mode. It’s slightly slower than in 32-bit since it’s bottlenecked by the cache bandwidth, and 64-bit simply requires a smidge more bandwidth, even though I did my best to avoid it wherever possible (I noticed a hit on any system I tried, also Core2 processors, so I optimized the code as much as possible, and the result was a performance gain in 64-bit rather than a performance hit).