• Blog

Fri Oct 24, 2014Mantle Multi-GPU for Civilization: Beyond Earth

By Site Administrator

Written by John Kloetzli

One of the less publicized advantages of AMD’s Mantle API is how it exposes explicit control over all GPUs in a machine to the game developer. This affects customers who physically link two GPUs, using technologies like AMD Crossfire, as well as the high-end graphics cards that contain multiple GPU cores on a single board. If you are familiar with the state-of-the-art of multi-GPU gaming, you know it can be a somewhat divisive issue: Multi-GPU systems are expensive and performance gains can vary widely from game to game, leaving some gamers disappointed. However, with the growing popularity of 4k gaming it is more important than ever to support multi-GPU for those customers who want the highest quality and performance at ultra-high resolutions. Mantle enables us to build multi-GPU solutions right into our games, taking advantage of our unique rendering architecture to implement multi-GPU solutions that make the most sense for our game.

So what makes the most sense for Civilization: Beyond Earth?  We believe that response time, the time between a user action and when that action is displayed on the screen, is one of the most important factors in providing a good user experience for gaming.  In order to keep the game as responsive as possible, Beyond Earth uses the hardware-accelerated mouse provided by the operating system.  This is great for interactivity (sluggish mouse movement is very distracting!) but the rest of the rendering still has a few frames of latency as the rendering commands are submitted to the GPU and processed, which can result in delayed response in button clicks or while panning the camera using click-drag.  Low latency rendering reduces this delay and helps keep the user immersed in the gameplay instead of being distracted by incongruent visuals.

What does this have to do with multi-GPU? Current multi-GPU solutions are implemented in the driver, without knowledge of, or help from, the game rendering engine. With the limited information available drivers are almost forced to implement AFR, or Alternate Frame Rendering, which is an approach where individual frames are rendered entirely on a single GPU. By alternating the GPU used each frame, rendering for a given frame can be overlapped with rendering of previous frames, resulting in higher overall frame rates. The cost, however, is an extra frame of latency for each GPU past the first one. This means that AFR multi-GPU solutions have worse response time than a single GPU capable of similar frame rates.

In Civilization: Beyond Earth we have decided to go in a different direction. Rather than trying to maximize frame rates while lowering quality, we asked ourselves a question: How fast can we get a dual-GPU solution without lowering quality at all? In order to answer this question, we implemented a split-screen (SFR) multi-GPU solution for the Mantle version of the game. Unlike AFR, SFR breaks a single frame into multiple parts, one per GPU, and processes the parts in parallel, gathering them into the final image at the end of the frame. As you might expect, SFR has very different characteristics than AFR, and our choice was heavily motivated by our design of the Civilization rendering engine, which fits the more demanding requirements of SFR well. Playing the game with SFR enabled will provide exactly the same quality of experience as playing with a single, more powerful GPU.

We do not claim to have the perfect multi-GPU solution with Civilization: Beyond Earth, and our current implementation has does have some limitations. Our split-screen rendering probably won’t get the same frame rates as AFR techniques, and we are currently limited to 2 GPUs. Some machines (especially those with slower CPUs) may not see high performance gains, and the highest gains will be seen at higher resolutions. However, we believe the time is ripe for multi-GPU machines to provide a user experience just as good as single-GPU systems, and with the explicit multi-GPU control provided by AMD Mantle we have started working to make this a reality. Finally, we will, as always, continue to work hard to ensure a great play experience in Civilization: Beyond Earth across the entire spectrum of supported PCs.

To try our split-screen multi-GPU in Mantle for yourself, set ‘Enable MGPU’ to ‘1’ in the graphics initialization file, and launch the Mantle version of the game.