What does this mean for gamers?
Given all the clear technical advantages outlined on the previous page, you might get the impression that current high-level APIs are a massive waste of resources, and that DirectX 12 and similar low-level APIs will immediately boost PC game performance to entirely new heights. While it is certainly possible to construct scenarios where that is exactly what will happen, in many common cases the benefits could be minor or even unnoticeable.
The most significant improvements to be expected from these changes are primarily reducing CPU overhead and improving parallelization. In turn, this means that performance in situations which were not CPU limited with previous APIs will not change much. In many games and genres, particularly on PCs with fast CPUs, the most noticeable effect could well be a decrease in CPU usage and power consumption.
That is not to say there is nothing to get excited about from a gamer’s perspective. While the average cinematic third person shooter on a decent desktop CPU will remain mostly unaffected, there are plenty of use cases which should benefit.
Detailed, highly interactive open world games or large-scale strategy titles with lots of moving parts are commonly CPU-limited in at least some scenarios even on higher-end systems.
- High-framerate gaming is becoming more and more popular, and even if you have the requisite GPU power and monitor technology to push 144 FPS, in many games you will run into CPU overhead limitations long before that.
- An interesting and often overlooked case is emulation—particularly projects like Xenia which seek to emulate more recent systems should benefit greatly from lower-level access allowing them to more directly model the behavior of the emulated hardware.
- Somewhat similarly, it might benefit console porting efforts to have a target available on PC which is closer in terms of API abstraction to their original platform.
- Finally, rendering for virtual reality has extremely stringent frame latency and consistency requirements which will be better served by a low-level API.
In addition to these situations in which a clear overall performance benefit can be expected, performance consistency should improve in almost all games. As developer Dan Baker of Oxide Games put it when we talked about DX12, “We also see huge benefits in frame consistency, to the point where we believe it is possible to ‘never hitch’ in D3D12 if we are appropriately mastering the API.”
I consider that a very exciting prospect, especially given the stuttering issues which plague some recent high-profile games.
How well does mixing GPUs really work?
Since this article was originally published, a few DX12 games have been released, and Ashes of the Singularity has released another beta useful for benchmarking DirectX12 performance. MaximumPC ran a detailed analysis of this performance by combining multiple Nvidia and AMD graphics cards in different configurations. These Frankenstein combinations worked, which still feels a little bit like magic. An Nvidia 980 Ti and an AMD R9 Fury X in the same system? In defiance of the laws of nature, it really works.
The actual performance results of those tests were unsurprisingly mixed.
"Sometimes a particular combination will do well (e.g., GTX 950 + 380) while another combination will do poorly (GTX 960 + 380X)," wrote MaximumPC. "Remember that quote from earlier, about low-level APIs being hard to program for, doing a lot of things manually instead of relying on drivers? Some of that is clearly coming into play here."
For most gamers, mixing graphics cards isn't an important consideration with DX12. Performance with a single GPU is more important. And there, results have varied. Gears of War had a rough launch, with bugs and performance issues even on powerful hardware. Rise of the Tomb Raider fared better, though performance is only improved on certain hardware. Both cases prove that DX12 has the potential to improve performance, but it's not an instant shot in the arm for framerates.
As MaximumPC wrote: "Will we one day live in a world full of gaming engines that scale to properly utilize any and all compute resources in an intelligent fashion? If so, it will be thanks to the pioneering efforts of companies like Oxide—and AMD, Nvidia, and Microsoft as well, since without their support, most of what we're seeing today wouldn't be possible. But we're many years away from such a graphical utopia, and if I were a betting man, I'd guess we'll experience plenty of struggles en route."
With DirectX 12 on Windows 10, low-level hardware-agnostic graphics access is now a reality on PC, and it's not alone—Vulkan, the successor to OpenGL, offers a similar degree of access to the hardware. With a set of significant changes to how programs interact with 3D hardware, these APIs offer an opportunity to create games which scale better to higher degrees of hardware parallelism, and offer more consistent performance. Reducing the size of the API and the responsibilities of drivers should also eliminate AAA titles’ reliance on day-one driver updates for compatibility and performance, and make the PC an even more stable and versatile gaming platform overall. And to top it off, the vast majority of these advantages are independent of new hardware features and can be leveraged with most existing DX11 GPUs.
Does this mean that you should immediately drop everything and upgrade to Windows 10, expecting large improvements for gaming? Not really. THow the performance impact of low-level APIs truly plays out will always depend on many factors, including CPU performance, the type of workload a game features, and the target framerate.
However, what DX12 and other low-level graphics APIs provide most of all is a long-term perspective of increased performance, better support for current and future hardware trends, more predictable and consistent frame delivery, and more solid software engineering in drivers and games alike.
This article benefited greatly from information provided by Dan Baker of Oxide Games, who has worked with low level APIs on PC since Mantle was created, and is an early adopter of DX12. If you spot any technical errors, they are most certainly mine and not his.
Updated by Wesley Fenlon