DirectX 12 vs DirectX 11
DirectX 12 vs DirectX 11 – How DX12 will transform PC
gaming on Windows 10
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.
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.
Comments
Post a Comment