DirectX12 performance is terrible on Linux

From my understanding, the primary reason is that NV hardware is designed around optimizing descriptor heap operations (which is what D3D12 uses and developers like), and there isn’t an exact Vulkan equivalent yet.

vkd3d-proton emulates heaps using descriptor sets or buffers, but those create a bit of a mess when dealing with hardware optimized for heaps (and the way those extensions are implemented in drivers for that hardware). It’s not strictly that the implementation of the extension is bad, but more that the extension doesn’t map too well to the hardware when it’s used alongside the heap emulation from vkd3d-proton.

The new vulkan descriptor model should be an improved version of d3d12 heaps, so vkd3d-proton should be able to do things more directly, and thus without all the mess of heap emulation.

5 Likes