Back in 2016, we published an article about the state of DirectX 12 in PC gaming. As we wrote back then, DX12 failed to impress as a new API. Most of the DX12 versions of 2016’s PC games were running slower than their DX11 counterparts, something that really surprised us. However, back then we only tested NVIDIA’s GPUs. So, time now to take a look at all the DX12 games that were released in 2017 on both AMD’s and NVIDIA’s hardware.
Let’s start with the obvious: In 2017 we only got 5 DX12 games and 1 Vulkan game. These games are: Forza Motorsport 7, Star Wars Battlefront 2, Sniper Elite 4, Halo Wars 2, Total War: WARHAMMER 2 and Wolfenstein 2: The New Colossus. For comparison purposes, in 2016 we got 11 DX12 games and 2 Vulkan games. So yeah, it’s a bit surprising that instead of increasing, the number of DX12 was actually reduced by 50%.
What’s also interesting here is that some developers have simply ignored the DX12 API, even though they’ve been experimenting with it. One of them is Codemasters who claimed in 2016 that its EGO Engine supports the DX12 API. However, F1 2017 – which came out this year – is only using the DX11 API. Another such developer is Ubisoft. Although both Watch_Dogs 2 and Assassin’s Creed Origins only use DX11, the French company has been experimenting with DX12 since 2016.
But anyway, out of all the DX12 games, only Sniper Elite 4 performed better than its DX11 version on AMD’s hardware. Do note that Halo Wars 2 and Forza Motorsport 7 are DX12-only games so we couldn’t really examine their behaviour in DX11. Total War: WARHAMMER 2 and Battlefront 2, on the other hand, ran faster in DX11 than in DX12. This should not surprise us of course as last year’s Total War: WARHAMMER and Battlefield 1 showed the exact same behaviour.
Furthermore, and while Halo Wars 2 and Forza Motorsport 7 run incredibly well on the PC platform, they are not taking full advantage of multi-core CPUs. Even though this is an area that DX12 should – theoretically – excel at, we can clearly see that both of these games are mainly using two CPU threads. Yes, both of them are running with more than 100fps but it’s crystal clear that we’re CPU bottlenecked, even though most of our CPU cores/threads are not stressed out.
But what about the future of DX12? With Xbox One X and PS4 Pro now out, it seems that even fewer developers will invest their resources in Microsoft’s new API. Yes, DX12 can improve performance when used right. This API gives more freedom to developers than before but we do have to ask whether this is something that most developers simply do not want at this point. This freedom obviously means that developers must use extra resources in order to rebuild and optimize their engines for this API. Take for example DX12’s explicit mult-GPU support. On paper, this feature sounds awesome as PC gamers can use GPUs from different manufacturers. However, and contrary to DX11 where NVIDIA or AMD had to step in and enable SLI or Crossfire, this time developers must do all the extra work themselves in order to support it. And from what we’re seeing so far, most of them are not willing to go that extra mile.
This is something that also falls in line with what Jurjen Katsman, CEO of NIXXES Software, said back in February. Katsman claimed that the CPU performance gains that come with DX12 are negligible for enthusiast gamers, for those owning a high-end CPU, for those that game at 1440p or 4K resolutions, and for those using High Quality settings. Moreover, Kartman stated while DX12 can help CPU-heavy scenes that are bottlenecked, and that an overall 10% GPU performance increase can actually happen, DX12 is hard to code and its performance gains may not be worth the extra work it requires.
As we’ve already stated, DX12 is more than Async Compute; a feature that most developers are currently using in their DX12 games. DX12 offers better multi-tasking CPU capabilities, reduces CPU overhead and can handle more draw calls than before. The last feature is crucial for open-world games or those that for some unknown reason under-perform on the PC. DX12 also offers low-level access to the graphics cards, something that – theoretically – should make things easier for experienced developers (but may also scare others).
In conclusion, things are not looking good for DX12 as most triple-A developers are not currently supporting it. As Tiago Rodrigues, 3D programmer at Ubisoft Montreal, claimed, most developers will most probably won’t be particularly satisfied with DX12 if they only care about raw performance. Rodrigues also claimed that it takes a lot of effort to get a DX12 game up and running as fast as its DX11 counterpart. And while DX12 was hyped as the next big API, it may end up as one of the biggest API failures!