An exciting DX12 leak just made its way to the web. The leak showcases the CPU performance and threading model of DX12 compared to DX11.
Ever since Microsoft announced DirectX 12 back in March of this year both game developers and gamers have been anxious to see what this new API can do for them. Thankfully this leak gives us a very good idea of what to expect.
DirectX otherwise known as Direct3D is Microsoft's proprietary application programming interface for 3D graphics, specifically games. DX12 is going to be Microsoft's first 3D graphics programming API to explore a low level, close to the metal programming approach. The new API promises to be significantly faster and more efficient than the company's latest API, DX11.
DX12's Threading Model Resembles that of AMD's API, Mantle
We've seen a focused and renewed invigoration in the low-level API arena which was first ignited by AMD's Mantle API in 2013. We've seen many other low level APIs announced afterwards in 2014. Including Microsoft's DX12, OpenGL NG by Khronos and Metal by Apple.
Graphics hardware grew ever more complex and advanced. The approach to programming today's hardware had to be improved to keep up with the performance and efficiency demands of today. Which is is why we're seeing this massive push for low level APIs across the industry.
The leaked DX12 slides serve to underline this co-evolution of hardware and software. GPUs have become significantly faster and CPUs evolved into becoming much wider. This meant that to keep up with today's GPUs we have to leverage all of the CPU's potential rather than throw everything on a single core and hope it works out. This is exactly what AMD has done with Mantle and exactly what Microsoft is working towards with DX12.
We can clearly see above the benefits of distributing the load across several threads. In DX12 the user-mode driver has become multi-thread aware as opposed to how it was limited to a single CPU core/thread before in DX11.
Microsoft hasn't just improved their threading model, they've also significantly reduced the overhead on the workloads that remained single threaded by necessity and completely removed the kernel-mode driver from the equation. The end result is CPU overhead reduction in DX12 by half compared to DX11. Which means Microsoft has essentially doubled CPU performance across four threads while running DX12 compared to DX11. I would expect an even better performance improvement across additional CPU cores.
Obviously in-game performance won't simply double just by switching from DX11 to DX12. Performance in CPU limited scenarios will definitely see a great improvement. But in GPU limited scenarios the performance improvement will be more subtle.
Spreading the load across multiple cores as well as removing some of the inefficiencies will result in better performance across all games undoubtedly. However the degree of the improvement will also depend on how well the game code is optimized for multi-core CPUs. To put it in other words DX12 simply can't solve a problem that exists within the game itself but it does the job that it's supposed to, and brilliantly so.
According to Richard Huddy, AMD's Gaming Scientist, the company has taken Mantle to both Microsoft and the Khronos group to help them realize and work in any of Mantle’s benefits that they may wish to implement in their own next generation APIs. So it doesn't come as a surprise to see DX12 take on a Mantle-like form.
All in all DX12 is shaping up nicely. Currently AMD's Mantle has surpassed the adoption rate of DX11, DX10 and even DX9 so DX12 will have to put on quite a show to outshine that. Details are still a bit murky on whether Microsoft will actually bring DX12 to Win7 or not. I sure hope they do , not many people will be willing to upgrade to Windows 10 just for DX12, myself included. Undoubtedly Windows 7 support is going to be a detrimental factor in the success of DX12.