I’m trying to switch over to VK_EXT_descriptor_buffer to obviate the need for descriptor pools, but I seem to have hit a snag.
My GLSL has the following binding
layout (set = 0, binding = 0, rgba8) uniform image2D image_swapchain;
which is working for now with vkCmdBindDescriptorSets and VkImageView. The compute shader writes directly to the swapchain image with imageStore() just fine.
So, I’d like to switch over to descriptor buffers. To do that, I need to use vkCmdBindDescriptorBuffersEXT but that requires the resources to have a VkDeviceAddress to access. It wants buffers and not images. However, I don’t have a VkDeviceAddress since the swapchain image buffers are not allocated by me (the driver/OS controls those). All I have are various handles and I don’t seem to have a way to back those up into the VkDeviceAddress and size that I need.
And mixing and matching doesn’t seem to be allowed: See: Vulkan-Docs/proposals/VK_EXT_descriptor_buffer.adoc at main · KhronosGroup/Vulkan-Docs · GitHub
7.16. RESOLVED: Should applications be able to mix sets and buffers?
Originally the intention was to support this, but at least one vendor cannot support this natively.
What am I missing to make this all work?
Thanks.