Over at the Build 2015 conference, Microsoft revealed that its upcoming DirectX 12 API has a new feature named Multiadapter that finally enables applications to take advantage of all GPUs in a computer. This will enable game developers to share workloads over not only multiple discrete graphics cards from different vendors, but also augment performance by offloading some work to integrated graphics.
Direct3D development lead guy Max McMullen demonstrated the feature using the Unreal Engine 4 Elemental demo on an Intel-based system with an NVIDIA GeForce graphics card. By letting the integrated graphics handle some of the post-processing effects, DX12 Multiadapter was able to increase the framerate from 35.9fps to 39.7fps!
According to Direct3D development lead Max McMullen, who presented a Build session on graphics performance, DX12's Multiadapter mojo lets developers generate and execute commands in parallel on multiple GPUs, complete with independent memory management for each one. Those GPUs can collaborate on rendering the same frame or do different kinds of work in parallel.
McMullen showcased the benefits for a hybrid configuration using the Unreal Engine 4 Elemental demo. Splitting the workload between unnamed Nvidia discrete and Intel integrated GPUs raised the frame rate from 35.9 FPS to 39.7 FPS versus only targeting the Nvidia chip. In that example, the integrated GPU was relegated to handling some of the post-processing effects.
We recognized that most mixed GPU systems in the world were not making the most out of the hardware they had. So in our quest to maximize performance, we set out to enable separable and contiguous workloads to be executed in parallel on separate GPUs. One such example of separable workloads is postprocessing.
Virtually every game out there makes use of postprocessing to make your favorite games visually impressive; but that postprocessing work doesn’t come free. By offloading some of the postprocessing work to a second GPU, the first GPU is freed up to start on the next frame before it would have otherwise been able to improving your overall framerate.
Here's an example of the GPU workload timeline. Microsoft says the NVIDIA GPU had a utilization rate of roughly 100 percent whereas the Intel integrated graphics had an utilization rate of around 70 percent on average, meaning there's still room for improvement.