I'm currently working on a Vulkan implementation of a game engine, and I've encountered an issue. When creating a descriptor set pool I can select a max size for the amount of sets allowed to be created. Although any value over 127 seems to be simply ignored, because whenever I try to run vkAllocateDescriptorSets I get VK_ERROR_INITIALIZATION_FAILED if the count reaches 127.
Is this the intended behavior, meaning that you are only supposed to use 127 descriptor sets? If so, is there a field in the VkPhysicalDeviceProperties that describe this depending on device? I thought the most efficient way to handle descriptor sets was to create a setup per (for example) a material and then simply stream update the buffers to provide new constant values when drawing.
Edit: I remembered there are validation layers in Vulkan which could be used to catch this sort of exception, however I'm still getting the same error although through the Vulkan debug callback:
vkAllocateDescriptorSets parameter, VkResult result, is VK_ERROR_INITIALIZATION_FAILED
The 127 number seemed a bit arbitrary though, because when I continued working on the code I got the same error at 52 descriptor sets. There seems to be either some uncaught exception or some error with the descriptor pool. I've tested this on an Nvidia GTX 770 and the problem doesn't occur there.
Meddelandet redigerades av: Gustav Sterbrant
Solved! Go to Solution.