AMD Explains Asynchronous Shaders on DirectX 12
DirectX 12 and AMD Async Shaders - An AMD Performance boost Waiting to Happen?
Published: 31st August 2015 | Source: AMD |
DirectX 12 and AMD Async Shaders - An AMD Performance boost Waiting to Happen
Ever since AMD launched their GCN architecture, there has been a single feature which was never utilized, lying in wait for next generation API's to come and allow it to do something GPUs have never been able to do before, operate under full load.
When your GPU is doing certain tasks, some parts of the GPU is unneeded, lying in an idle state, waiting for a task where it is required. Yes GPUs operate in what most people call full load while gaming, but what if you could make your GPU work on several different tasks at once and never have parts of it at idle?
AMD created asynchronous shaders for this purpose, to allow GPUs to work on several tasks at once, but API's needed to catch up and deliver GPUs with several tasks at once, instead of in a single, linear queue. DirectX 12 will fix this issue by allowing GPUs to interleave tasks and do them at the same time if they are required, greatly reducing idle time and reclaiming lost performance.
Using Asynchronous shaders, and AMD's Asynchronous compute engines, AMD will likely get a significant performance boost from DirectX 12, which I guess will be in the region of 10%. Asynchronous shaders will also reduce the GPU Pipeline latency, again helping to increase performance.
"With async shaders, we can fill parts of the GPU that [would] otherwise be forced to idle. It's one of those features we wish we had on every GPU." - Dan Baker, Oxide Games
Right now Nvidia do not have a Asynchronous compute capability with their current lineup of graphics card, whereas AMD have had it since their GCN architecture was introduced in 2012.
Right now it is unknown if Nvidia have been able to add this capability into their next generation pascal silicon, or if we have to wait for another generation for Nvidia to catchup.
The next generation of Graphics APIs are intended to decrease performance bottleknecks, allow parallelisation of both CPU and GPU loads and to otherwise recapture lost performance. While the largest performance gains will be found on the CPU side, benefits on the GPU side will be far from non-existent, especially if you use SLI or Crossfire.