Previously, in the descriptor set layout, if there were gaps
within the binding numbers, the code would remove the gap and
assign a sequential binding number to each.
This is causes problems when looking up the binding on a
vkUpdateDescriptorSets() as the user would still be providing the
original binding numbers. If gaps were removed and binding
number re-assigned, the binding could either not be found, or a
different binding was found instead of the desired one.
Let's not re-assign binding numbers and just use the original
ones.
This fixes the following assert being hit:
`pvr_descriptor_set.c:1890: pvr_write_descriptor_set:
Assertion `binding' failed.`
on dEQP tests such as:
dEQP-VK.glsl.opaque_type_indexing.ubo.uniform_vertex
dEQP-VK.glsl.opaque_type_indexing.ubo.uniform_fragment
...
Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22918>
VkDescriptorType type;
/* "M" in layout(set = N, binding = M)
- * Can be used to index bindings in the descriptor_set_layout. Not the
- * original user specified binding number as those might be non-contiguous.
+ * Can be used to index bindings in the descriptor_set_layout.
*/
uint32_t binding_number;
uint8_t shader_stages = 0;
internal_binding->type = binding->descriptorType;
- /* The binding_numbers can be non-contiguous so we ignore the user
- * specified binding numbers and make them contiguous ourselves.
- */
- internal_binding->binding_number = bind_num;
+ internal_binding->binding_number = binding->binding;
/* From Vulkan spec 1.2.189:
*