Microsoft has just finished presenting its preview of DirectX 12 (Direct3D 12 in particular), their newest graphics API (Application Programming Interface) which lets game developers control graphics processing units (GPUs) in games and other graphics applications. Although DirectX has been an excellent graphics API since DirectX 8, Microsoft’s DirectX 12 is going to address long-standing issues that were carried out until DirectX 11. As a result, developers will get the level of control that they are asking for and DirectX 12 is going to make much better use of both the main processor (CPU) and GPUs available in the system. From a developer’s point of view, this brings “console-like” control and efficiency, but wrapped in a standard API.
What hardware do you need to run DX12?
For most users, this is the most important question. The answer is that Most DirectX 11 graphics processors will be able to switch over to DirectX 12. This is because this particular version of the API focuses on improving itself instead of adding new hardware features. There will be some work required from developers to update their games, and from card vendors to update their drivers, but the good news is that if you own a DX11 card today, chances are that it will be DX12 compatible. NVIDIA has already confirmed that it is bringing DX12 support for “all NVIDIA DX11 HW”, according to Tony Tamasi (SVP NVIDIA) who was representing NVIDIA at the joint announcement.
What’s New in DirectX 12?
OK, now that you are reassured about which hardware is required, let’s look at what’s new. Fundamentally, DX12 is all about driving efficiency up, and give more control to developers. To give you some context, as graphics rendering techniques evolved, Direct 3D has become somewhat decoupled from the actual usage that Game Developer want. As a result, it has been known for some time that Console games were much more efficient at using both the GPU and CPUs than PC were.
Giving credit to AMD Mantle
For some time, it wasn’t such a big deal. Since PC gaming is huge and that DirectX is the preferred 3D API there, Microsoft was seemingly not too worried about inefficiencies (at least as seen from the outside), but along came AMD’s Mantle, a lean (and mean) proprietary graphics API that pushed the limit of CPU efficiency in graphics applications. It’s fair to say that AMD’s Mantle played a big role in adding pressure onto Microsoft to address these problems sooner rather than later.
And Microsoft did. Direct3D 12, brings a lot of what developer want, and does it in a way that is multi-vendor friendly, so I’m just about sure that while Mantle deserve a lot of credit, DirectX will remain the dominant API for PC graphics.
Key points of Direct3D 12
Much lower CPU overhead: at the request of game developers, Microsoft has changed the App-API relationship to remove a ton of CPU overhead. As developers get more control over the resources and execution of the graphics commands, the driver and D3D runtime no longer needs to track (and check, and guess) what the application is doing, thus resulting in a much higher efficiency – Microsoft showed a demo running on DX12, and they observed a 50% reduction of the CPU usage.
Better workload distribution across CPU cores: In the same Forza 5 demo, Microsoft also demonstrated that the workload was spread nearly evenly between available CPU cores. As a comparison, DX11 adds more load on one core. Since multi-core is the only way to quickly scale CPU performance, this is a big deal for just about any graphics application.
Application resources control optimization: DX12 will allow game developers to have a finer control over how batches of triangles and materials are submitted to the GPU during draw commands. Developers can also manage their own GPU memory, which prevents expensive allocation/de-allocation to happen at an inopportune time. This would prevent framerate drops or short “hangs” during a game.
Every GPU vendor is happy about DX12, and so should you
Microsoft had invited NVIDIA, AMD and Qualcomm on stage, and each company talked about how it was happy about DX12. And that’s pretty genuine, just look at how DX12 aligns everyone’s interests: NVIDIA gets an effective answer to Mantle, without spending resources to build their own API. AMD may look like an early “loser” since this is a blow to Mantle, but on the other hand, DX12 will make better use of their 8-Core CPUs and that’s very important to them. Intel pretty much shares the same view on the CPU efficiency: “more core is better” would pretty much sum it up. Qualcomm wants to see any overhead go away because it’s better for power-consumption.
DirectX 12 and Direct3D 12 in particular is a great API update. It is now in-sync with how games are built and how developer want to build them. As a result, you and I will get better games running on the hardware that we already own, and game developers will spend less time work around the API inefficiencies, and more time building and tuning their games. This will also make Console/PC ports a little easier – in the end, this should be a very warmly welcome update.