The Vulkan API, developed by the Khronos Group, has been making waves ever since its initial announcement in March 2015. It’s a multi-platform graphics API that offers feature-level parity with Microsoft’s DirectX 12 API, and then some. The cross-platform nature of Vulkan lends itself to a lot of interesting use cases, in particular supporting older operating systems that don’t have the same level of support from Microsoft for gaming. The Khronos group yesterday put out a blog post on multi-GPU support for the API across operating systems, and if you’re a multi-GPU user on Windows 7 or 8.1, you’re going to want to read this one.
The way the Vulkan API works now is that it ships with an initial GPU driver inside the API for NVIDIA, AMD, and Intel graphics cards. It’s a very lightweight driver, and it’s part of the magic that goes into low-level graphics abstraction. However, certain things that AMD and NVIDIA’s in-house drivers are capable of don’t ship with Vulkan natively, and these kinds of tricks need to be added and supported manually by the game developers on a case-by-case basis. A good example of this, and the reason for the post by Khronos, is that not every operating system supports Crossfire or SLI using their API.
According to the blog post, Khronos notes that “the Vulkan multi-GPU specification is very definitely NOT tied to Windows 10. It is possible to implement the Vulkan multi-GPU extension on any desktop OS including Windows 7, 8.X and 10 and Linux.” The current situation is laid out in the table below.
|LDA Implicit||LDA Explicit||MDA (unlinked multi-GPU)|
|Windows 7||Requires dev support||Requires dev support||Fully supported|
|Windows 8.1||Requires dev support||Requires dev support||Fully supported|
|Windows 10||Fully supported||Fully supported||Fully supported|
|Linux||Fully supported||Fully supported||Fully supported|
To clear up any confusion, LDA Implicit is how multi-GPU is currently handled. You have to use identical cards, the game sees them as two separate GPUs, and as a developer you have very little power to manage this, because the GPU driver does all the heavy lifting. LDA Explicit is a mode where the operating system and the game sees the GPUs as a single unit, but you still have to use identical cards, but developers have lots of power over this setup.
MDA is like an anything-goes, ungloved cage fighting match where you can mash any number of GPUs together in a pool, and the API driver can delegate work to all of these GPUs depending on their capabilities. It’s a complex mode, but it’s really just loading up drivers for different GPUs, and implementing a load balancing and frame pacing strategy to manage performance.
Khronos says that the reason for this arrangement is because the methods to use LDA Implicit or Explicit multi-GPU modes in Windows 7 and 8.1 are very different to Windows 10, which makes this a lot simpler to implement in the APIs that ship on them. The Windows Driver Development Model (WDDM) version 2.0 in Windows 10 powers this, because it plugs into everything to do with rendering graphics on your display. In Linux it’s a similar situation, though this does have some twists because different desktop environments have different compositing managers.
What does this ultimately mean for gamers? Well, if you currently have DOOM, you can have multi-GPU support on Windows 7 and 8.1 because id Software is putting that support in themselves. But for other developers who don’t have those resources, you’ll need to move to Windows 10, or Linux if there’s a port available. LDA Implicit is the easiest method for implementing multi-GPU support, and its expected that a lot of studios will choose this method if they don’t have the in-house expertise.
Source: Khronos blog