Describe your problem
Currently, the Vulkan backend uses the default descriptor set allocation strategy based on descriptor pools. The process of abstracting those away is pretty involved and requires some heuristic assumptions about the size of those pools, that are never truly optimal. D3D12 uses a less complex model based on descriptor heaps, that are basically large chunks of memory that store descriptors. The VK_EXT_descriptor_buffer extension attempts to emulate a similar behavior. Implementing it would have several advantages, notably we could provide a common architecture for allocating and managing descriptors and descriptor sets. Furthermore, we would eliminate some major pitfalls. Most notably the current implementation raises validation warnings, if multiple runtime arrays are bound at the same time. Using descriptor buffers, we would eliminate the need to per-determine descriptor pool sizes and also fix this issue along the way.
Describe your problem
Currently, the Vulkan backend uses the default descriptor set allocation strategy based on descriptor pools. The process of abstracting those away is pretty involved and requires some heuristic assumptions about the size of those pools, that are never truly optimal. D3D12 uses a less complex model based on descriptor heaps, that are basically large chunks of memory that store descriptors. The VK_EXT_descriptor_buffer extension attempts to emulate a similar behavior. Implementing it would have several advantages, notably we could provide a common architecture for allocating and managing descriptors and descriptor sets. Furthermore, we would eliminate some major pitfalls. Most notably the current implementation raises validation warnings, if multiple runtime arrays are bound at the same time. Using descriptor buffers, we would eliminate the need to per-determine descriptor pool sizes and also fix this issue along the way.