AMD has been building Asynchronous Compute Engines (ACEs) since the Radeon 7970. Until recently, the possibility of using these ACEs has been minimal and was previously only for computing workloads (like rendering or other compute only tasks). Now AMD is working on how to use these asynchronous shaders for more than simply compute based tasks because DirectX 12 is the reason why they now can be used. In DirectX 11, the way graphics are rendered meant that API is not suited to asynchronous shading.
- Command Queue: The individual commands that make up the command stream.
- Command Stream All the commands that need to be rendered/completed.
- Command Queue Switching: Switching from one command queue to another to try to finish tasks faster. (This is a mixed bag as to whether it makes the task get completed faster or slows it down, but always adds overhead)
DirectX 11 uses a type of processing that has command queue switching, which leads to overhead, lack of prioritisation, and never fully utilising the GPU. Also, DirectX 11 is pre-emption, which makes some tasks processed faster than other tasks. The problem with using this in DirectX 11 is that the higher priority tasks suspend all other tasks. In contrast, the prioritised task is being processed, leading to overhead, slower rendering, and not being very efficient.
Since DirectX 11 is heavily serial-based and does not support DirectX 12, it is not nearly as good at rendering graphics. This is because DirectX 12 has support for asynchronous shading, where DirectX 11 does not. Multiple command queues can be processed in asynchronous shading, eliminating much of the overhead that DirectX 11 had. At the same time, DirectX 12 also supports pre-emption and prioritisation, so it is backwards compatible. On AMD’s new GPUs, DirectX 12 and asynchronous shading is very well kept, with 2 to 8 ACEs per GPU (depending on the model).
Nvidia has yet to reveal whether their GPUs will support asynchronous shading, but since Nvidia cards support DirectX 12, it is probably safe to assume that the GPUs will support it. So perhaps there will be real competition with this generation of GPUs between AMD and Nvidia cards, which will be great for the consumers and great for innovation technologies!