Skip to content

Backends: Vulkan: Add VK_EXT_descriptor_heap support (#9374)#9437

Open
achaulk wants to merge 1 commit into
ocornut:masterfrom
achaulk:desc_heap
Open

Backends: Vulkan: Add VK_EXT_descriptor_heap support (#9374)#9437
achaulk wants to merge 1 commit into
ocornut:masterfrom
achaulk:desc_heap

Conversation

@achaulk

@achaulk achaulk commented Jun 9, 2026

Copy link
Copy Markdown

No description provided.

@ocornut

ocornut commented Jun 9, 2026

Copy link
Copy Markdown
Owner

I don’t know what this feature is.
Can you describe why it is needed?

@achaulk

achaulk commented Jun 9, 2026

Copy link
Copy Markdown
Author

This extension brings DX12-style descriptor management to vulkan and is a hard break in how descriptors are managed. It eliminates descriptor pools and sets as well as a lot of other object management; the client app will write descriptors directly into it's own buffers instead

However, it is expected that any switching between descriptor heap and descriptor set commands will be quite slow and each invalidates all of the other's state so the only way to avoid that currently is a custom backend

@ocornut

ocornut commented Jun 9, 2026

Copy link
Copy Markdown
Owner

But it is required? aka is an app using descriptor management required to use it everywhere and can't let the Vulkan backend do it things the current way?

  • Can you make sure that code follows coding style? space are if, no braces for single line block etc. The freelist may be modeled over the one used in your DX12 example.
  • Why does the main.cpp changes requests so many new extensions? e.g. VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME VK_KHR_MULTIVIEW_EXTENSION_NAME and many others?

Thank you.

@achaulk

achaulk commented Jun 10, 2026

Copy link
Copy Markdown
Author

It's not strictly required but without there will likely be stalls before & after doing the backend draw due to having to switch modes. The expected usage is there is one heap of each type per app and you use it for everything - see the note https://docs.vulkan.org/features/latest/features/proposals/VK_EXT_descriptor_heap.html#_descriptor_heaps

That is the minimum set of extensions to get the validation layer to not complain about missing extensions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants