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.
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.
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.
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.