AMD Details Upcoming DX12 Features And Their Benefits – Async Shaders & Multi-Threaded Command Buffer Recording
Microsofts Windows 10 is just around the corner and hence DirectX 12 is as well. Both will come as a bundle release as the new Windows will feature DirectX 12 by default. Today, on their technology blog AMD's Radeon graphics division came out and explained two major features included in Microsoft's upcoming low level API, DirectX 12.
The first of the two is Async Shaders a new technology that promises performance improvements upwards of 45%. We covered this ground-breaking multi-threading feature of DX12, Vulkan and Mantle in-depth just three weeks ago. In addition to Async Shaders AMD has also talked about a brand new feature called Multi-Threaded Command Buffer Recording which has the potential to be just as brilliant as Async Shaders.
Up until now, releases about the new DirectX 12 have not disappointed us and a clear difference in performance can be witnessed from comparisons of the new API with the old one. Lets have a look at what the new features are.
Async Shaders in DX12 Will Allow Game Engine to Execute GPU or Memory Activities During Gaps
AMDs forum post claims that the new DirectX 12 will "allow usage of a game engine to execute GPU compute or memory activities during “gaps” in the graphics workload presented by a game." While this seems quite odd that such a source of productivity was not mined earlier, previous versions of the DirectX did not have this functionality. As the forum post itself says "Past versions of DirectX® were essentially limited to a single, serial graphics queue for processing all types of workloads. Therefore graphics, compute and memory copy operations had to wait for other parts of the graphics queue to finish processing before springing to life and doing their work. This would often result in idle hardware for some portions of time, and idle hardware is squandered performance. "
Here is the feature explained:
“In DirectX 12 Async Shaders supercharge work completion in a compatible AMD Radeon GPU by interleaving these tasks across multiple threads to shorten overall render time. Async Shaders are materially important to a PC gamer’s experience because shorter rendering times reduce graphics pipeline latency, and lower latency equals greater performance. “Performance” can mean higher framerates in gameplay and better responsiveness in VR environments. Further, finer levels of granularity in breaking up the workload can yield even greater reductions in work time.”
Multi-Threaded Command Buffer Recording in DX12 Brings a Lot of Improvements As Well
AMD then talked about the second brand new DirectX 12 feature i.e. Multi-Threaded Command Buffer Recording. Mentioning the immense improvements that this new feature will bring to gaming with DirectX 12. The 5 Key points about this feature are as follows:
- Overhead is significantly reduced by moving driver and API code to any available CPU thread
- The absolute time required to complete complex CPU tasks is notably reduced
- Game workloads can be meaningfully distributed across >4 CPU cores
- New “bandwidth” on the CPU allows for higher peak draw calls, enabling more detailed and immersive game worlds
- All available CPU cores may now “talk” to the graphics card simultaneously
So basically, this works as a multi-lane superhighway on which data can move back and forth very quickly, at low latency and in huge bulk. In comparison, DX11's capability here would be more comparable to a small two lane road in the same analogy.
Oxide’s Ashes of the Singularity is the first upcoming game which will fully take advantage of this DX12 capability.
To wrap it up, I think both of these features will work very well together and compliment each other. The more efficient, faster processing and smarter utilization of GPU resources mean that any GCN GPU out today, that is the HD 7000 series and up would see a sizable performance improvement just by going from DX11 to DX12 . With that being said, do share your thoughts on these two particular DX12 technologies and DX12 in general.