DX12 Enables Cross-SLI Between AMD and Nvidia GPUs
DX12 will allegedly enable mixed configurations of AMD and Nvidia GPUs to work together through the explicit asynchronous multi-GPU feature. This was revealed in a recent article by Tom's Hardware, in which the website claimed through some of its own sources that Microsoft's upcoming DirectX 12 API will enable cross-vendor multi-GPU configurations.
This essentially means that users should be able to run AMD Radeon graphics cards with Nvidia GeForce graphics cards at the same time in a Cross-SLI sort of configuration. According to Tom's Hardwre's source this is possible because DX12 treats all the graphics processors in the system as one large graphics processor. So your Intel HD integrated graphics or AMD Radeon R7 integrated graphics + whatever discrete GPU or GPUs you have in the system will essentially be addressed and treated as one monolithic graphics processing unit.
This also means that if you have two 4GB GPUs you will in fact get 8GB of usable graphics memory instead of just 4GB like you do right now. This is because instead of tasking each GPU with rendering a whole frame on its own, each GPU would actually render different parts of the same frame. Which in turn negates the need of having to mirror the resources in the two separate memory pools of the cards. This is the limitation behind the alternate frame rendering technique used today that prevents developers from addressing the two separate memory pools as a larger single pool of graphics memory.
DX12 Enables Cross-SLI Between AMD and Nvidia GPUs
I know what you're thinking, all of this sounds fantastic and wonderful but is it realistic ? Now that's the one million dollar question. Before we answer that question we have to familiarize ourselves with the real-world technical and non-technical hurdles that stand in front of this vision.
Let's take a step back and examine Mantle, AMD's own low level API. Mantle actually supports explicit asynchronous multi-GPU control. In fact this feature was used in Civilization : Beyond Earth, which is one of the more recent Mantle titles. The developers of Firaxis used explicit asynchronous multi-GPU to implement split frame rendering (SFR) for CrossfireX support under Mantle. While the DX11 implementation of CrossfireX used the standard alternate frame rendering (AFR) technique.
Here's the catch, while explicit control of multi-GPU configurations is fantastic it also requires a huge amount of effort from the developer to not only ensure that multi-GPU configurations work as intended but also that there's a sufficient performance advantage over AFR. So what it essentially does is take some of the responsibility away from the hardware vendor and the driver team and put it in the hands of the game developer.
A good SFR implementation requires a considerable amount of skill and talent but if done right can yield noticeable improvements over AFR, especially in reducing input-latency. It's a different type of technical challenge for each game to implement SFR. Some game engines and game genres are more suitable for it while others aren't. For example in a turn based strategy game input-latency wouldn't be as important as it is in a fast paced FPS game.
Apart from the technical challenge of splitting each frame and assigning the parts to different graphics processors in the system, which can be extremely challenging. Especially if the different graphics processors in the system have different performance characteristics ( high-end discrete GPU vs an integrated GPU ). There's also the challenge of dealing with different GPU architectures that support different sets of features. Suddenly the developer not will have to figure out how to split each frame and the performance required for each part, but will also have to make sure that the elements of each part of the frame are compatible with the GPU assigned to it.
Simply put it's a huge technical challenge that requires years of experience and out of the box thinking by the developer. I can certainly imagine leading edge developers such as Crytek and the technical guys at DICE attempting to use this explicit asynchronous multi-GPU feature with great success. But it will be limited to GPUs based on the same architecture, at least initially.
Of course all of these challenges that we discussed have to be addressed before we even attempt to debate the politics involved of an Nvidia GPU working with an AMD GPU in tandem. Hardware vendors like to keep tight control over how their hardware is used and the overall user experience. While it's "technically" possible to mix and match GPUs cross-vendor with low level APIs such as Mantle and DX12, it's simply not realistic and can never exist in an official capacity.
The real, genuine benefit of explicit control over the graphics subsystem lies somewhere else. Where this feature will truly shine I believe is in utilizing the integrated graphics which is sitting idle in every single gaming system with a discrete GPU. We should see game developers take advantage of integrated GPUs in handling things such as AI and physics. Especially in processors that support unified memory such as AMD's Kaveri and Carrizo and allegedly Intel's Skylake. It'll take some time but we'll get there.