DirectX 11 is on its way, but with the slow take up of DX10 in both the home and in the development houses what is it that we should be getting excited about with this new revision? Well, from the looks of things quite a lot, as we learned from Microsoft's Kevin Gee at the recent Nvision conference.
The link between Windows Vista and DirectX 10 is fairly universally seen as one of the big drawbacks to the last iteration of the ubiquitous graphics API.
After all, the percentage of people with DX10 capable hardware is growing exponentially, but the percentage of people using that hardware in collaboration with Microsoft's latest OS is far smaller. The lack of backwards compatibility was a big problem for DX10 and something that has been tackled with DX11.
While you will still need to have Vista as the minimum OS, the package is being released with the next iteration of Windows – Windows 7 – and so will be compatible across both platforms. It's also going to be compatible across the hardware spectrum as well, working with DX10 and DX10.1 specced graphics cards, as well as the new SM5 cards to come.
This means that right from the off there will be a large installed user base ready to use the new API.
Another positive feature from the development point of view is that as a continuation of DirectX 10 anyone familiar with coding for that platform will feel at home with DX11. Fingers crossed this should encourage more devs to pick it up and run with the new feature set for the PC.
New features in DX11
So what are these new features, though? One of the biggest and most relevant to today's PC is the improved multi-threading support.
Originally, Direct3D was focused on performing on a single-core CPU, making the multi-threading support fairly limited. DX11, though, has been designed to more effectively drive the graphics card, using a system with a multi-core CPU at its heart. One of the ways it does this is by supporting multiple rendering contexts.
The main computational work occurs in the primary immediate context. This dictates the timeline for work being submitted to the GPU; running alongside this are the new optional deferred contexts. These are developer-created and enables work associated with each deferred context to be carried out on a separate thread/core, then submitted to the GPU once it's ready for a new task. This is one of those backwards compatible features and so will benefit existing hardware, and should finally make quad-core CPUs more desirable for gamers beyond the willy-waving.
There's also a big change in the render pipeline, too, adding in three new stages: the hull shader, tessellator and domain shader. Listening to developers Microsoft has identified character models and animation as a key battleground in the graphics front.
Today's hugely dense polygon meshes are very memory intensive and the tessellation scheme should reduce this by allowing the work to be done in a single pass, meaning there doesn't need to be any memory in between the stages. According to Kevin Gee it should: "produce richer animations for less memory and less memory bandwidth."
Another boon for the memory consumption of today's games is the improvements in texture compression. The DX11 API gives developers two new compression formats to help with high-quality real-time rendering without sacrificing performance.
There are a host of other new features to the DX11 set, such as Shader Model 5 and Dynamic Shader Linkage, but the latter offers a taste of why DX11 should be the API to move people away from DX9 gaming that DX10 promised to be.
The Compute shader is another new feature of DX11, but one that Microsoft was obviously not so keen to shout too loud about at a NVIDIA event, touting CUDA at every turn.
This part of the new API is designed to allow developers to easily access the new trend in general purpose computing on the GPU, something that's CUDA's raison d'etre. Gee didn't want to talk about direct competition with CUDA: "they're not going to be identical, but we do target all hardware that's in the market. So it depends what your application is and whether that's important to you."
Microsoft is keen then to point out that the compute shader will run across all the graphics hardware capable of running this latest Direct3D API. Obviously, there are reports of AMD cards capable of getting on the CUDA bandwagon, but Microsoft's version will be all ready to go out of the box.
So, essentially if you want your program to run on all the graphics hardware available use DX11's compute shader, instead of CUDA. Whether one is more efficient than the other we'll have to wait and see.
Sooner than you think, baby
An interesting part of the presentation was the ending where Kevin Gee explained just how soon developers were going to be able to get hold of the new SDK. A preview SDK of DirectX 11 is shipping to developers in November of this year, specced for use on Windows Vista and on DirectX 10 and 10.1 hardware. As he explains: "if you start developing on DX10 and 10.1 today and you optimise your engine on those APIs then you'll be in great shape for DX11 when we actually ship the SDK."
The main software set is meant to be shipping with the next version of Windows: Windows 7. Could this rapid release to the development community mean that the rumours of Microsoft's newest operating system arriving before the touted 2010 timeframe are true?
Some people are speculating that we could be seeing Windows 7 as early as next year, with other insiders claiming an Easter unveiling. Microsoft certainly has been cagier about preview builds of the new OS this time around and there are definitely functional beta builds floating around with a few trusted system builders, but it remains to be seen if such rumours have any basis in reality.
Microsoft will certainly be keen to put the Vista fiasco to bed if Windows 7 is half as good as we've heard it may be…
First published in PC Format issue 220
Good news for gaming graphics why but are the games so expensive?