Since applications are allowed to specify some set of bindings which need not be dense they also need not be in order. For most things, this doesn't matter, but it could result getting the wrong dynamic offsets. This adds a quick-and-dirty sort to ensure that everything is always in increasing order of binding index.
Signed-off-by: Jason Ekstrand <[email protected]> Cc: Kristian Høgsberg Kristensen <[email protected]> --- src/intel/vulkan/anv_descriptor_set.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c index c977318..448ae0e 100644 --- a/src/intel/vulkan/anv_descriptor_set.c +++ b/src/intel/vulkan/anv_descriptor_set.c @@ -89,6 +89,19 @@ VkResult anv_CreateDescriptorSetLayout( for (uint32_t j = 0; j < pCreateInfo->bindingCount; j++) { const VkDescriptorSetLayoutBinding *binding = &pCreateInfo->pBindings[j]; uint32_t b = binding->binding; + /* We temporarily store the pointer to the binding in the + * immutable_samplers pointer. This provides us with a quick-and-dirty + * way to sort the bindings by binding number. + */ + set_layout->binding[b].immutable_samplers = (void *)binding; + } + + for (uint32_t b = 0; b <= max_binding; b++) { + const VkDescriptorSetLayoutBinding *binding = + (void *)set_layout->binding[b].immutable_samplers; + + if (binding == NULL) + continue; assert(binding->descriptorCount > 0); #ifndef NDEBUG -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
