In this article we’ll be using Oxide Game’s upcoming title Ashes of the Singularity (AotS) to compare performance between Microsoft’s DirectX 11 and DirectX 12 APIs. Last week we received a review key to AotS from Oxide which was followed up by a reviewer’s guide from AMD. The big features of this update to AotS are multiGPU support in DirectX 12, general performance enhancements, and a greater usage of the Async Compute features of present in the DirectX 12 API. Of course DirectX 12 is a Windows 10 only API so all of our testing was done using that OS with Insider Preview build 11099. AMD sent us a prerelease driver for testing with this AotS but we didn’t see a significant performance difference between that driver but we only ended up using it for our async compute benchmarks. The public version of the game and AMD’s driver were used for everything else.
One of the coolest features of the DirectX 12 API is the way it handles multiple GPUs. Compared to DirectX 11 which worked best with alternative frame rendering and GPUs that were symmetrical in terms of performance and from the same vendor DirectX 12 moves things forward in a few interesting ways. First off you can mix and match GPUs now both in terms of what vendor the graphics card is from and how it performs. For example, a configuration like a GTX 770 and a Fury X could conceivably work together under DirectX 12 to render AotS. Of course this an asymmetrical configuration and AotS’s multiGPU implementation still uses alternate frame rendering so the potential performance of the rendering system is capped at double the performance of the slowest GPU.
As always you can find out raw data on OneDrive.
As a point of reference we ran benchmarks on a number of different systems using the public version of AotS. The important things to note here is that with GCN-based AMD GPUs DirectX12 basically doubles performance. Additionally, eight core CPUs both from Intel and AMD see a doubling in performance as well when tested with an infinitely fast GPU. The truly strange data point here is the 3.5x performance increase that AMD’s ancient Phenom II X4 955 sees between its unplayable DirectX 11 performance and its passable DirectX 12 performance. This is a pretty neat observation in that it gives us some hope that DirectX 12 will improve the relative standing of older multicore CPUs like this almost seven-year-old chip.
Next we enrolled in the private press beta for AotS and started messing around with enabling and disabling async compute (something you couldn’t do in the public version) so we could see what kind of impact the current implementation has on performance. Note that the results we’re looking at are the weighted average of all frames, not just heavy batches as in the initial table. The impact of async compute appears to be about ten percent in this version of AotS.
Oxide Games considers the implementation of async compute present in this version of AotS to be and advanced use of the feature. In the initial implementation of AotS’s benchmark async compute was used, but Oxide told us that during the development of multiGPU support they realized that they could improve performance by distributing the workload across threads inside of a single GPU in the same way they were doing for multiple GPUs leading to what they consider to be an advanced implementation of async compute features.
As an aside Oxide also talked about dropping support for Mantle with this release. Apparently that effort is not going to waste though, as its being rolled into the ongoing development of Vulkan support for AotS. Oxide does not have a timeline for Vulkan support, but apparently support for this API is under development.
Interestingly the prerelease press-only version of AotS that we were allowed access to didn’t support CPU only benchmarking like the public version. So weren’t able to recreate our initial benchmarks of the game using this new version. Additionally, while we were able to confirm that the multiGPU support in AotS is functional we lacked the two similarly performing GPUs necessary to investigate scaling in the DirectX 12 version of AotS. Oxide for its part said that they were seeing scaling of about 70 percent with identical GPUs.
In the end what have we learned about DirectX 12 from AotS? CPUs that were weak in DirectX 11 perform much better in DirectX 12. Frame rates pretty much double across the board in DirectX 12. The impact of Async Compute is significant but it pales in comparison to the impact of using DirectX 12 in the first place.
These benchmarks confirm pretty much what we’ve been told since AMD first started talking about low overhead APIs. DirectX 11 left a lot of performance on the table. Our testing shows that both CPUs and GPUs are capable of a lot more performance with low overhead APIs than with traditional APIs. There’s a lot to like in these benchmarks and it’s a bit crazy to see a Phenom II in DirectX 12 outperforming Intel’s most expensive Extreme Edition CPU in DirectX 11. In retrospect it’s kind of amazing that PC gaming has flourished for so long despite leaving so much performance on the table with OpenGL and DirectX 9c. At least we’re starting to move past that handicap now.S|A