It may surprise you to learn…
DirectX® 12 is the very first version of the DirectX® API that has specific features, techniques tools to support multi-GPU (mGPU) gaming. If you are indeed surprised, follow us as we take a trip through the complicated world of mGPU in PC gaming and how DirectX® 12 turns some classic wisdom on its head.
Modern multi-GPU gaming has been possible since DirectX® 9, and has certainly grown in popularity during the long-lived DirectX® 11 era. Even so, many PC games hit the market with no specific support for multi-GPU systems. These games might exhibit no performance benefits from extra GPUs or, perhaps, even lower performance. Oh no!
Our AMD Gaming Evolved program helps solve for these cases by partnering with major developers to add mGPU support to games and engines—with resounding success! For other applications not participating in the AMD Gaming Evolved program, AMD has talented software engineers that can still add AMD CrossFire™ support through a driver update.1
All of this flows from the fact that DirectX® 11 doesn’t explicitly support multiple GPUs. Certainly the API does not prevent multi-GPU configurations, but it contains few tools or features to enable it with gusto. As a result, most games have used a classic “workaround” known as Alternate Frame Rendering (AFR).
HOW AFR WORKS
Graphics cards essentially operate with a series of buffers, where the results of rendering work are contained until called upon for display on-screen. With AFR mGPU, each graphics card buffers completed frames into a queue, and the GPUs take turns placing an image on screen.
AFR is hugely popular for the framerate gains it provides, as more frames can be made available every second if new ones are always being readied up behind the one being seen by a user.
But AFR is not without its costs, as all this buffering of frames into long queues can increase the time between mouse movement and that movement being reflected on screen. Most gamers call this “mouse lag.”
Secondly, DirectX® 11 AFR works best on multiple GPUs of approximately the same performance. DirectX® 11 frequently cannot provide tangible performance benefits on “asymmetric configurations”, or multi-GPU pairings where one GPU is much more powerful than the other. The slower device just can’t complete its frames in time to provide meaningful performance uplifts for a user.
Thirdly, the modest GPU multi-threading in DirectX® 11 makes it difficult to fully utilize multiple GPUs, as it’s tough to break up big graphics jobs into smaller pieces.
INTRODUCING EXPLICIT MULTI-ADAPTER
DirectX® 12 addresses these challenges by incorporating multi-GPU support directly into the DirectX® specification for the first time with a feature called “explicit multi-adapter.” Explicit multi-adapter empowers game developers with precise control over the workloads of their engine, and direct control over the resources offered by each GPU in a system. How can that be used in games? Let’s take a look at a few of the options.
New DirectX® 12 multi-GPU rendering modes like “split-frame rendering” (SFR) can break each frame of a game into multiple smaller tiles, and assign one tile to each GPU in the system. These tiles are rendered in parallel by the GPUs and combined into a completed scene for the user. Parallel use of GPUs reduces render latency to improve FPS and VR responsiveness.
Some have described SFR as “two GPUs behaving like one much more powerful GPU.” That’s pretty exciting!
Trivia: The benefits of SFR have already been explored and documented with AMD’s Mantle in Firaxis Games’ Sid Meier’s Civilization®: Beyond Earth™.
DirectX® 12 offers native support for asymmetric multi-GPU, which we touched on in the “how AFR works” section. One example: a PC with an AMD APU and a high-performance discrete AMD Radeon™ GPU. This is not dissimilar from AMD Radeon™ Dual Graphics technology, but on an even more versatile scale!2
With asymmetric rendering in DirectX® 12, an engine can assign appropriately-sized workloads to each GPU in a system. Whereas an APU’s graphics chip might be idle in a DirectX® 11 game after the addition of a discrete GPU, that graphics silicon can now be used as a 3D co-processor responsible for smaller rendering tasks like physics or lighting. The larger GPU can handle the heavy lifting tasks like 3D geometry, and the entire scene can be composited for the user at higher overall performance.
In the world of DirectX® 9 and 11, gamers are accustomed to a dual-GPU system only offering one GPU’s worth of RAM. This, too, is a drawback of AFR, which requires that each GPU contain an identical copy of a game’s data set to ensure synchronization and prevent scene corruption.
But DirectX® 12 once again turns conventional wisdom on its head. It’s not an absolute requirement that AFR be used, therefore it’s not a requirement that each GPU maintain an identical copy of a game’s data. This opens the door to larger game workloads and data sets that are divisible across GPUs, allowing for multiple GPUs to combine their memory into a single larger pool. This could certainly improve the texture fidelity of future games!
A little realism is important, and it’s worth pointing out that developers must choose to adopt these features for their next-generation PC games. Not every feature will be used simultaneously, or immediately in the lifetime of DirectX® 12. Certainly DirectX® 11 still has a long life ahead of it with developers that don’t need or want the supreme control of 12.
Even with these things in mind, I’m excited about the future of PC gaming because developers already have expressed interest in explicit multi-adapter’s benefits—that’s why the feature made it into the API! So with time, demand from gamers, and a little help from AMD, we can make high-end PC gaming more powerful and versatile than ever before.
And that, my friends, is worth celebrating!
Robert Hallock is the Head of Global Technical Marketing at AMD. His postings are his own opinions and may not represent AMD’s positions, strategies or opinions. Links to third party sites are provided for convenience and unless explicitly stated, AMD is not responsible for the contents of such linked sites and no endorsement is implied.
1. AMD CrossFire™ technology requires an AMD CrossFire-ready motherboard, a compatible AMD CrossFire™ bridge interconnect (for each additional graphics card) and may require a specialized power supply.
2. AMD Radeon™ Dual Graphics requires one of select AMD A-Series APUs plus one of select AMD Radeon™ discrete graphics cards and is available on Windows® 7, 8, 8.1 and 10 OSs. Linux OS supports manual switching which requires restart of X-Server to engage and/or disengage the discrete graphics processor for dual graphics capabilities. With AMD Radeon™ Dual Graphics, full enablement of all discrete graphics video and display features may not be supported on all systems and may depend on the master device to which the display is connected. Check with your component or system manufacturer for specific mode capabilities and supported technologies.