pvr: Use original binding numbers instead of reassigning
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>
This commit is contained in:
@@ -267,8 +267,7 @@ struct pvr_descriptor_set_layout_binding {
|
||||
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;
|
||||
|
||||
|
||||
@@ -511,10 +511,7 @@ VkResult pvr_CreateDescriptorSetLayout(
|
||||
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:
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user