DirectX 12 has been available since Windows 10, but there aren't any games for it yet, so we're using the Ashes of the Singularity beta to examine DX12 performance.
We've benchmarked unfinished games several times in our reviews, most recently in our Radeon R9 Nano launch article. Back then, we found some driver issues and, even worse, hardware problems on Nvidia graphics cards. It didn't take that company long to respond with new software that not only helped overcome those technical shortcomings, but even turned the performance story around, enabling a small lead over the competition.
This time around was a bit different. Since AMD provided us with an optimized launch driver, we asked Nvidia if it had one for us as well. Company reps didn't seem too pleased with the question and pointed us to its current WHQL-certified driver, version 361.91. That was all Nvidia would say on the matter.
As a game, Ashes of the Singularity is really the perfect showcase for DirectX 12. It features many small AI-controlled entities moving across a large area. This is both a pro and a con. It does show off the API's benefits nicely. But we also have to recognize that those gains will probably be less pronounced in titles that don't exploit DirectX 12's new features as heavily.
The capability making the headlines lately is called Asynchronous Shading/Compute. It allows the parallel and asynchronous (meaning completely order-independent) execution of graphical tasks (shading) and calculations (compute). If correctly implemented in hardware and software, the technology can cut latency down by a massive amount, which in turn results in higher performance.
Let's review a diagram of how tasks are handled in DirectX 11. They are executed one by one in a fixed order. This order can't be changed, and the only way to achieve efficiency is to split up the queue and keep it relatively short.
In DirectX 12, the queue can be split so that tasks are completed at the same time and somewhat offset from each other. This works fairly well for the benchmark we're using today, so we'll actually see its potential in practice. Just remember, though, how much of a difference this new feature makes is going to depend on how much the tasks in a particular game benefit from being executed in parallel, which is to say asynchronously. There won't be any benefit if tasks are dependent on other tasks' results, or if the overhead involved in managing all the tasks is higher than the gains from the asynchronous execution.
Several revisions of AMD's GCN architecture include provisions for this functionality, so its Tonga, Hawaii and Fiji GPUs fare the best with asynchronous shading/compute. Nvidia's Kepler and Maxwell architectures are having a much harder time. The company is trying to compensate with software-based solutions instead.
The following graph clearly shows that Nvidia isn't there yet. After activating the new DirectX 12 feature in the .ini file, AMD's performance increases markedly, whereas Nvidia's actually gets slightly worse. The option to switch this setting on and off convinced us to leave DirectX 11 alone completely and focus all of our efforts on DirectX 12 and asynchronous compute. To keep things fair, we're testing all graphics cards with the setting that works best for them.
We're using the same test system that we've been using for quite a while. We didn't make any changes to it:
|Test System||Intel Core i7-5930K at 4.2GHz|
Alphacool Water Cooler (NexXxos CPU Cooler, VPP655 Pump, Phobya Balancer, 24cm Radiator)
Crucial Ballistix Sport, 4x 4GB DDR4-2400
MSI X99S XPower AC
1x Crucial MX200, 500GB SSD (System)
1x Corsair Force LS 960GB SSD (Applications, Data)
be quiet Dark Power Pro, 850W PSU
Windows 10 Pro (All Updates)
|Drivers||AMD: Radeon Software 15.301 B35 (Press Beta Driver, February 2016)|
Nvidia: ForceWare 361.91 WHQL
|Ashes of the Singularity Beta 2 (Press)|
Since the benchmark provides us with a very interesting log file that contains a lot of details (and not just the overall results), we updated our interpreter to take full advantage of it by looking at important things like frame times.