DOOM Dev: Going Forward, Compute Will Be Used More Extensively for idTech 6; More Developers Will Take Advantage of It
Three days ago, id Software officially released Vulkan support for DOOM. This brought significant performance gains, particularly for those users using AMD hardware.
Eurogamer’s Digital Foundry was able to speak with some programmers at id Software about the implementation of Asynchronous Compute and Compute in general.
Lead Programmer Billy Khan said:
Yes, async compute will be extensively used on the PC Vulkan version running on AMD hardware. Vulkan allows us to finally code much more to the ‘metal’. The thick driver layer is eliminated with Vulkan, which will give significant performance improvements that were not achievable on OpenGL or DX.
Senior Engine Programmer Jean Geoffrey offered a technical explanation of the advantages developers can have by using Async Compute.
When looking at GPU performance, something that becomes quite obvious right away is that some rendering passes barely use compute units. Shadow map rendering, as an example, is typically bottlenecked by fixed pipeline processing (egrasterisation) and memory bandwidth rather than raw compute performance. This means that when rendering your shadow maps, if nothing is running in parallel, you’re effectively wasting a lot of GPU processing power.
Even geometry passes with more intensive shading computations will potentially not be able to consistently max out the compute units for numerous reasons related to the internal graphics pipeline. Whenever this occurs, async compute shaders can leverage those unused compute units for other tasks. This is the approach we took with Doom. Our post-processing and tone-mapping, for instance, run in parallel with a significant part of the graphics work. This is a good example of a situation where just scheduling your work differently across the graphics and compute queues can result in multi-ms gains.
This is just one example, but generally speaking, async compute is a great tool to get the most out of the GPU. Whenever it is possible to overlap some memory-intensive work with some compute-intensive tasks, there’s opportunity for performance gains. We use async compute just the same way on both consoles. There are some hardware differences when it comes to the number of available queues, but with the way we’re scheduling our compute tasks, this actually wasn’t all that important.
Billy Khan went as far as saying that compute and async compute will be used more extensively for idTech 6 games in the future, and that more developers will likely use these techniques as they discover the advantages they bring to the table.
The time is now, really. Doom is already a clear example where async compute, when used properly, can make drastic enhancements to the performance and look of a game. Going forward, compute and async compute will be even more extensively used for idTech6. It is almost certain that more developers will take advantage of compute and async compute as they discover how to effectively use it in their games.
For now, id Software is the only big developer who chose to openly support the new Vulkan API while others seem focused on Microsoft’s DirectX 12. We’ll keep you updated when other developers will make the same choice.