March 17, 2017

Vulkan takes a step backwards

Speaking of self-inflicted injuries...

I've blogged before about Vulkan, the promising new cross-platform API which the Kronos Group is pitting against Microsoft's latest iteration of Direct X. Providing the same low-level API benefits as DX12, but usable on every platform, including Linux, MacOS, Android, SteamOS, and PS4/Orbis (all of which are Linux-based or Unix-like environments), Vulkan's portability gave it a critical competitive edge that DX12 couldn't match, with DirectX12 is, naturally, being restricted to Windows 10.

The latest announcement from the Kronos Group, however, is throwing a little cold water on that prospect. It turns out that Vulkan's multi-GPU support might be restricted to Windows 10 and Linux, while being unavailable on the Windows version that half of PC users are actually, you know, using.

From HotHardware.com:
Today we are hearing that the low-level Vulkan API will not support multiple GPUs on Windows 7 or Windows 8.1. The Dark Side Of Gaming came across the disappointing bit of news when rummaging through Kronos Group’s slides from GDC 2017. One slide entitled “Vulkan Multi-GPU and Virtual Reality Support” clearly points out that “WDDM must be in ‘linked display adapter’ mode”, with WDDM referring to the Windows Display Driver Model.
Although it might not seem like a big deal from reading that line, the linked display adapter mode is exclusive to WDDM 2.0. And as you are probably coming to realize at this point, WDDM 2.0 is a feature that is only natively supported by Windows 10. In other words, if you want to use NVIDIA SLI or AMD CrossFire natively with Vulkan, you’re going to have to be running Windows 10.
Here’s one more wrinkle in this story; it appears that Linux won’t have the multi-GPU limitation when it comes to Vulkan (and it obviously doesn’t support WDDM) which makes us wonder why exactly Windows 7 and Windows 8.1 are being shown the door...
It's more than a little head-scratching. Vulkan competes directly with DirectX 12, and its portability is one of its most attractive features, but limiting parts of its feature set to Windows 10 make it less attractive as an option. After all, if your graphics engine is going to need Windows 10 to take full advantage of all the available graphics options, anyway, then why not build it around the API that comes with Microsoft's latest OS? Especially since many graphics engines are already built around earlier versions of DirectX? Other versions of Vulkan don't have this limitation, so it's not intrinsic to the API. What's the reasoning behind this?

Multi-GPU support isn't needed for Android devices, and it still needs to be supported separately by the game your'e playing, which means that this limitation may not hurt Vulkan's adoption all that much, but still.... it feels like a step away from the true cross-compatibility that's supposed to be Vulkan's reason for being. I just don't understand why the Kronos Group seems to be dissing Windows 7 & 8 this way, either, since users of those Windows versions are still more than half the PC OS market. It's like AMD's inexplicable recently loyalty to Windows 10 with their Ryzen line. Where's the benefit?

Hopefully, this is just a small hiccough, and Kronos Group can make Vulkan into a true competitor to Direct X 12, something which can only benefit consumers, but I have to say, I'm a little less hopeful about that prospect now, than I was a week ago.