We've just released
Steam® Audio 2.0-beta.17[valvesoftware.github.io], which includes several new features, including
support for real-time indirect sound simulation using AMD Radeon™ Rays. Previously, Radeon™ Rays was supported only for baking. With this release, Radeon™ Rays and AMD TrueAudio Next can be combined to perform indirect sound simulation and rendering on the GPU without interfering with graphics or general GPU compute. This blog post discusses how this works.
Previously, on Steam® Audio...
Over the last few releases, we have added features to the Steam® Audio that enable the GPU to be used in different ways for accelerating spatial audio computations.
In 2.0-beta.13,
we added support for TrueAudio Next. This feature uses the Resource Reservation capability of supported AMD GPUs to carve out a portion of the GPU (called a "reserved queue") dedicated to audio convolution processing. This allows the GPU to be used for significantly speeding up spatial audio rendering, while ensuring that audio and graphics do not interfere with each other. The result is stable graphics frame rates, and fast, glitch-free audio processing.
Figure: Impact on GPU rendering performance when reserving 4 CUs for TrueAudio Next processing. The plots show the average FPS observed on various GPU benchmarks when run at the same time as a TAN benchmark using Steam®® Audio. Measurements obtained using a Radeon™ RX 480 GPU with 4 reserved CUs, 256 total convolution channels and 1.3s IRs. All values are shown as a percentage of a baseline that is obtained when the TAN benchmark is not running. For example, reserving 10% of the available CUs reduces the average FPS in the Timespy benchmark by about 10%.
In 2.0-beta.15,
we added support for Radeon™ Rays. This feature runs on any GPU supporting OpenCL 1.2 or later, and uses the GPU to accelerate indirect sound simulation (ray tracing and related processing). Since the reserved queue was used by TrueAudio Next, Radeon™ Rays would run on the remainder of the GPU, along with graphics and general compute. If used for real-time simulation, it would therefore interfere with graphics frame rates, which is why this feature was restricted to baking only.
What's new?
Starting with AMD Radeon™ Software Adrenalin 2019 Edition v19.2.1, AMD GPUs support up to two reserved queues. In other words, the GPU compute units can be divided into three sets: 2 reserved queues, and 1 general queue. This feature (called "Dual RTQ") only requires a driver update.
In 2.0-beta.17, Steam® Audio runs Radeon™ Rays on the second reserved queue, thereby isolating indirect sound simulation from graphics as well. This way simulation (using Radeon™ Rays), convolution (using TrueAudio Next), and graphics can all be run on the same GPU without interfering with each other. This results in stable frame rates, glitch-free audio processing, and low-latency indirect sound simulation.
How Dual RTQ works
As an example, consider a Radeon™ RX Vega 64, which contains 64 Compute Units (CUs). A maximum of 16 CUs (25% of the GPU) can be used in all reserved queues combined. One way to partition this would be:
- First reserved queue, 4 CUs. Used by TrueAudio Next.
- Second reserved queue, 8 CUs. Used by Radeon™ Rays.
- Remainder of the GPU, 52 CUs. Used for graphics and general compute.