VK_EXT_descriptor_heap:
descriptorHeap : 0
[...]
Binding model: Descriptor buffer
These are log messages from DXVK (guess the game you're running creates a D3D11 device as well), which only enables descriptor heap by default on 595.84 onwards. This has nothing to with vkd3d-proton's binding model.
VK_EXT_descriptor_heap: descriptorHeap : 0 [...] Binding model: Descriptor bufferThese are log messages from DXVK (guess the game you're running creates a D3D11 device as well), which only enables descriptor heap by default on 595.84 onwards. This has nothing to with vkd3d-proton's binding model.
Thanks for the clarification, makes sense now.
I'm also getting this in vkd3d-proton logs and the game crashes:
Unsupported descriptor count 2000000 for heap type 0 (max 1000000)
Any quick idea what could cause this? (RTX 2060 SUPER, driver 595.71, Proton GE 11)
Broken game if it's trying to allocate more than spec limit of 1M.
Broken game if it's trying to allocate more than spec limit of 1M.
When vkd3d-proton encounters:
Unsupported descriptor count 2000000 for heap type 0 (max 1000000)
does it reject the allocation entirely, clamp it to the maximum supported size, or switch to an alternative descriptor handling path?
I'm just trying to understand the runtime behavior behind this warning.
It will fail to allocate as spec requires. The game or application is trying to do something that is out of spec. What is the context here, is this a game in the wild that breaks (in which case, which game?), or some application you're developing yourself?
It will fail to allocate as spec requires. The game or application is trying to do something that is out of spec. What is the context here, is this a game in the wild that breaks (in which case, which game?), or some application you're developing yourself?
This is in The First Descendant.
I'm not developing an application myself.
The game launches and is fully playable using GE-Proton 11 (vkd3d-proton 3.1.0), but the warning is printed repeatedly in the logs:
Unsupported descriptor count 2000000 for heap type 0 (max 1000000)
I was mainly trying to understand whether this warning is expected for this title, or if it indicates that the game is doing something incorrect with descriptor heap allocation.
If it helps, I can provide a complete Proton log or a minimal log containing the relevant vkd3d-proton output.
We've seen some UE5 games try to allocate >1M heaps and then fall back to 1M if that doesn't work. Not really an issue, and on Nvidia it would behave the same on Windows.
We've seen some UE5 games try to allocate >1M heaps and then fall back to 1M if that doesn't work. Not really an issue, and on Nvidia it would behave the same on Windows
Thanks, that makes sense in general.
However, in this specific case (The First Descendant), I can consistently reproduce a crash on NVIDIA driver 610 when forcing:
VKD3D_CONFIG=descriptor_heap
The crash happens during map loading with:
VK_ERROR_DEVICE_LOST
Without this flag, the game runs normally.
Log shows:
Unsupported descriptor count 2000000 for heap type 0 (max 1000000)
but there is no visible retry or fallback allocation to 1M in the logs before the device is lost.
On driver 595, the same setup did not crash.
So in this case it does not seem like a successful fallback to 1M is happening, at least not in a way observable from vkd3d-proton logs.
NV 610 drivers are known to have lots of bugs with descriptor heap, so it's more likely to be that.
And none of these bugs are fixed in the recent 610.43.03 release. If you want to use descriptor heap stick to either stable 595.84 or Vulkan beta 595.44.11 drivers.
Thanks for the clarification and for pointing me in the right direction.
I also reported the issue to NVIDIA, and they forwarded it internally to their Vulkan driver team for investigation.
For now, I'll stick to the 595 drivers when using the descriptor heap path and keep an eye on future driver releases.
Thanks again for your time and for the excellent work on vkd3d-proton!
proton 3.1x1 2026-06VKD3D_CONFIG=descriptor_heapx2 2026-06VKD3D_CONFIG=descriptor_heap.x1 2026-06
GPU: NVIDIA GeForce RTX 2060 SUPER
Driver: NVIDIA 595.71.05
VKD3D-Proton: 3.1.0
Proton: GE-Proton 11
Manjaro 6.18
While investigating DX12 performance and descriptor heap support, I noticed what appears to be an inconsistency between Vulkan feature reporting and VKD3D-Proton runtime behavior.
The Vulkan driver advertises VK_EXT_descriptor_heap.
However, vulkaninfo reports:
VK_EXT_descriptor_heap:
descriptorHeap : 0
At the same time, VKD3D-Proton reports:
VK_EXT_descriptor_heap enabled (32 / 32 size, raw uav counter on)
when launched with:
VKD3D_CONFIG=descriptor_heap
Additionally, VKD3D-Proton reports:
Binding model: Descriptor buffer
Questions:
Is descriptorHeap : 0 expected on NVIDIA 595 drivers?
Is VKD3D-Proton expected to enable the descriptor heap path when vulkaninfo reports descriptorHeap : 0?
Is this expected behavior, a driver limitation, or a reporting inconsistency?
Additional notes:
Relevant log excerpts:
VK_EXT_descriptor_heap:
descriptorHeap : 0
VK_EXT_descriptor_heap enabled (32 / 32 size, raw uav counter on)
Binding model: Descriptor buffer