Microsoft’s DirectX 12 appears to be the next generation PC gaming graphical API of choice- which makes sense, given the ubiquity of Windows when it comes to PC gaming, and DirectX’s deep integration with Windows. That said, however, there are now alternatives to DirectX, viable alternatives that developers could be using, and open ones, rather than closed proprietary solutions like DirectX is- such as Vulkan.

But possibly because of Windows ubiquity, and because of all the hooks that DirectX has with Windows, or maybe because of all the other pushes for DirectX adoption that Microsoft have made, such as the aggressive push for Windows 10, or bringing DirectX to Xbox One, the fact remains that more and more developers are supporting DirectX 12 over Vulkan, or any other alternative, for their PC games- and this is something that Axel Gneiting, engine programmer at id Software, doesn’t necessarily approve of.

Speaking on Twitter, Gneiting said that developers using DirectX 12 over Vulkan ‘literally makes no sense.’ Elaborating on his stance, and in response to some questions, Gneiting pointed out that with Windows 7 forming a major chunk of the PC gaming market, and with DirectX 12 being incompatible with Windows 7, using DirectX in an attempt to have ‘one codebase’ makes no sense, since developers would need to create two separate ones anyway. He pointed out that the argument that programming for Xbox One and Windows 10 becomes easier by using DirectX 12 is moot too, because DirectX 12 on Windows and on Xbox is very different, necessitating two separate code paths anyway.

He also made some observations about how a lot of the perceived benefits of DirectX 12 are not exclusive to it, noting that both Vulkan and DirectX give similar performance benefits anyway.

I guess my question here is- if that is the case, why does it bother him at all that DirectX is the preferred code path for developers over Vulkan? I suppose there is something to be said for pushing open solutions like Vulkan, over proprietary and closed ones like DirectX, which effectively trap developers in Microsoft’s development ecosystem, so I can see some of his reasoning. But then, I suppose that DirectX benefits because it is not open- it has Microsoft to evangelize it, because Microsoft have a vested investment in seeing it widely adopted. Vulkan being open by definition has no such custodian, and that is why there is no one to pitch it to developers to the extent that Microsoft do with DirectX.

I'm really getting annoyed by everyone adopting DX12 instead of Vulkan even for PC exclusives. This literally makes no sense. — Axel Gneiting (@axelgneiting) July 1, 2016

@nlguillemot Availability is now not an issue anymore, you will need two code paths on PC for Win 7 compat making the Xbox stuff invalid — Axel Gneiting (@axelgneiting) July 1, 2016

@nlguillemot Wider HW support? How so? HLSL is the only valid point I can understand — Axel Gneiting (@axelgneiting) July 1, 2016

@nlguillemot @Isaboll12 This is complete FUD. Vulkan on Windows 7 has no higher driver overhead than on Windows 10. — Axel Gneiting (@axelgneiting) July 2, 2016

@nlguillemot @Isaboll12 GPUs have virtual memory. All samplers into one giant desc set, index it by push constant, done. — Axel Gneiting (@axelgneiting) July 2, 2016

@nlguillemot @Isaboll12 Memory residency is managed by WDDM. Page table is updated by driver, virtual addr stays the same. Problem solved. — Axel Gneiting (@axelgneiting) July 2, 2016

@nlguillemot @Isaboll12 Mantle btw also supported bindless and this worked just fine on Win 7. Don't buy all MS propaganda. — Axel Gneiting (@axelgneiting) July 2, 2016

@kenpex @baldurk @nlguillemot Fermi isn't supported with DX12 either, Intel Vk drivers are coming — Axel Gneiting (@axelgneiting) July 2, 2016

@kenpex @baldurk @nlguillemot Xbox needs special path anyway. Xbox DX12 is not Windows DX12. At least not if you want full perf. — Axel Gneiting (@axelgneiting) July 2, 2016