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:
Karmjit Mahil
2023-05-04 15:25:40 +01:00
committed by Marge Bot
parent bac048e1df
commit 48bf9c736f
2 changed files with 2 additions and 6 deletions
+1 -2
View File
@@ -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;
+1 -4
View File
@@ -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:
*