It’s been a while since we last touched on AMD’s TrueAudio, an attempt at reintroducing hardware acceleration back into system audio pipeline. While it saw not much more than a tech demo from the relaunch of Thief, there is still some merit to what the tech is meant to achieve. Steam’s comprehensive development tools are slowly gaining favor for things like VR, and it has its own audio pipeline too. Implementing AMD’s TrueAudio as a Steam Audio extension should help push things forward.
Audio is largely an ignored part of gaming that’s only really noticed when things don’t work. However, there’s been a lot of middle-ware solutions that’s been slowly changing over time, and generally improving subtle aspects about the world of gaming. From time dilation effects, pitch shifting, reverberation off surfaces, all these effects are applied in real-time while the game is rendering the scene, which surprisingly, requires a fair bit of processing power to achieve.
The problem is that audio is quite low on the list of priorities when it comes to CPU budgeting – very few games are going to get noticed for having super accurate bullet ricochet effects compared to something like a post-processed color filter. For the most part, people don’t notice a lot of the subtle audio tweaks that go on in the background, largely because it’s pre-recorded with the reverb added in. But with more advanced games and things such as VR taking off, realistic audio becomes critical to immersion.
AMD’s TrueAudio was originally launched as a dedicated piece of hardware on the GPU, it was a DSP repurposed for more than just decoding DVD and Blu-ray audio tracks. The problem was that it required developers to explicitly use the feature for it to work, which meant that very few actually did. While there was some middle-ware integration, it again required being enabled in the first place to be used. AMD’s latest incarnation is TrueAudio Next (TAN), which drops the DSP and instead uses the GPUs Compute Units (CUs) to do the processing.
Steam has picked up on this and is now making it available for testing in the latest Steam Audio toolkit. The big difference here is that TAN does not need to be explicitly selected to be used, it’s handled by Steam Audio. However, developers also have the option of providing additional functionality to systems with compatible hardware.
Steam Audio is CPU driven, with various modeling and simulation effects that can be applied. With TAN in the pipeline it can shift some of that work over to the GPU instead, using TANs OpenCL library, by reserving up to 20-25% of a compatible AMD GPU for audio processing. This reservation means predictability, which is critical when dealing with time-sensitive workloads such as audio. The types of audio processing is somewhat limited, but applied to the most computationally expensive parts of the workload, such as convolution (the merging of different sounds such as those generated by reverberation).
Making use of the GPUs CUs for audio may seem like trading frame-rates for quality, but in some cases it can improve performance of the system. With AMD integrating its GPUs into more embedded systems like laptops, which generally have lower performance CPUs in them, shifting some of the audio processing away from the CPU means that the CPU can spend more time doing draw calls or physics. However, since most games are GPU bound, there is generally going to be some performance trade-off, and it’ll be up to the developer to decide what is acceptable (the full 20% reservation is unlikely to be used).
Steam Audio with AMD TAN is available for most major game engines and plugins, such as Unity, FMOD, Unreal, or directly through the Steam Audio C API. Will we be seeing this in action any time soon? Unlikely. Old games would need to be updated to take advantage of TAN if they used the Steam Audio API to begin with, but games currently in development might start to play around with this. Again, it’s worth pointing out that Steam Audio is not restricted to AMD hardware, it’s a CPU audio pipeline, it just now has an extra tool in the box if developers decide to make use of it. You can read more via Steam.