DirectX 12 vs DirectX 11 – Why does it matter?
Windows 10 has arrived and, along with integrated Cortana, Xbox One game streaming and a fancy new web browser, one of its key features is DirectX 12, the latest version of the operating system’s gaming API.
A software layer that sits between the hardware that powers our computers and the software that runs on them, DirectX is at the heart of the vast majority of games that run on Windows. The other major gaming API is OpenGL, which as its name suggests is an open source API. Both offer very similar key functions, but it’s DirectX that tends to be at the heart of most bigger games.
Microsoft talks up the amazing new capabilities for every new release of DirectX, but with DirectX 12 it really does have some key new features, at least when it comes to improving performance. It also has some new effects tools and functions for making games look better than ever.
So let’s take a look at what DirectX 12 brings to the table.
Watch – A quick guide to what's new in Windows 10
DirectX 12 vs DirectX 11– Low-level hardware abstraction
The single biggest new feature of DirectX 12 is a change to the 3D graphics portion - called Direct3D - that will greatly increase the opportunity for developers to optimise their games for specific hardware. This is down to Direct3D offering a lower-level of hardware abstraction and a reconfiguration of how the graphics pipeline is managed when compared to DirectX 11 and previous.
What is hardware abstraction? Well, it’s at the root of what makes an API useful. Rather than developers having to write code to deal with different hardware and drivers, the API deals with all that and instead developers have a simplified set of instructions to deal with.
Previously DirectX has strictly provided only a fairly high level of hardware abstraction to make the life of coders easier. However, the downside is that developers are less able to optimise performance for specific hardware. With Direct3D 12, Microsoft will provide more direct access to hardware features.
The specifics of how it does this are beyond the scope of this article, but if you want to read more about the new Pipeline State Objects, Command Lists and Descriptor heaps then you can head to the Microsoft blog to read up on them.
DirectX 12 vs DirectX 11 – Draw call overhead reduction
One of the key improvements is a reduction in draw call overhead, which is the delay inherent in the CPU asking the GPU to render something. This had become something of a bottleneck in previous versions, limiting the amount of objects that could be on screen, but with the new changes the hope is that the GPU will no longer be left waiting for the CPU to tell it what to do.
This problem only really affects CPU-limited games, and most games are limited by GPU speed, so the likely real world impact will be varied. But, as the latest games embrace things like AI and physics more and more, there's ever more for the CPU to do. Also, multi-player games can also be prone to CPU-limitation. A good example is Battlefield 4, which could be CPU-limited even on quite powerful hardware.
This draw call time reduction is the same core benefit that AMD introduced with Mantle, which is why Battlefield 4 was one of the first games to use that new API.
DirectX 11: The total per-thread time is 6.6ms.
DirectX 12: The total per-thread is halved to 3.2ms
DirectX 12 Multi-Adapter
Another key new feature is Explicit Multi-Adapter. This will allow for games to ustilise multi-graphics processors of different brands and speeds, independent of existing solutions like SLI and Crossfire.
It can work with combinations of graphics cards as well as the integrated GPUs inside most modern CPUs. The latter will only add a small amount of performance but it's potentially worth doing, and makes use of hardware that would otherwise be sat doing nothing.
This is perhaps the most challenging of DirectX 12's features to implement so it remains to be seen if anyone uses it to any great extent but it's certainly nice to know the possibilities there.
Why DirectX 12 now?
Generally there is resistance to an API using less abstraction as it potentially makes the life of developers more difficult and gives them more to do in terms of optimising for specific hardware. With developers often also working on console versions of games, which use different APIs, the extra hassle of optimising for specific PC hardware is just too much.
However, a number of factors have meant that the market is ready for the introduction of DirectX 12. First is simply that developers need it, at least if they care about making the best use of PC hardware. PCs are theoretically much more powerful than the latest games consoles, but they're held back by these legacy features.
The problem has now reached breaking point. You can always throw money at even faster hardware for PCs, but with DirectX 12 there’s an opportunity to make more modest budgets stretch further. All of which potentially helps keep the PC market in general more relevant in the face of stiff competition from consoles and mobile gaming.
Then there’s the fact that all the latest consoles now sport APUs (combined CPUs and GPUs) made by AMD, so optimisation for those platforms also provides lessons for optimising for PCs with AMD hardware. In fact, the Xbox One will switch to using DirectX 12, completely eliminating any overhead there. This is also why AMD introduced its Mantle extension to DirectX11, because it knew developers would be more on board with optimising for its hardware thanks to the console design wins.
Finally, there’s the fact that DirectX 12 will be used on all Windows 10 devices, which includes not just PCs but tablets and phones too. This cross platform simplicity again potentially offsets any extra work that the new API may introduce.
When will DirectX 12 arrive?
DirectX 12 will be shipping as part of Windows 10, which arrives on 29th July 2015. However, to see the results of that capability Microsoft is targeting the 2015 holiday season for games to arrive that take advantage of DirectX 12.
Will my card work with DirectX 12?
DirectX 12 will be supported by the vast majority of PC graphics cards already on the market. Any Nvidia card since the launch of the Fermi architecture (GTX 400 series), any Intel graphics since Haswell and any GCN-based AMD cards (HD 7000 series) support it, which makes for around 70% of the existing install base.
The exact performance increase you’ll see will vary greatly, but at least in theory you’ll be getting the benefit.
Related: Xbox One vs PS4
For now we're left waiting to find out how soon games will arrive with support for these new features, and whether in the real world they make much difference. Here's hoping we won't have to wait too long.