summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarmjit Mahil <Karmjit.Mahil@imgtec.com>2023-05-04 15:25:40 +0100
committerMarge Bot <emma+marge@anholt.net>2023-05-16 18:09:03 +0000
commit48bf9c736f92e22791e24f1c202020179ff7e790 (patch)
tree05d02c1da57fc045b5d72054b900e360f0b6f939
parentbac048e1dfed0ddfa7d95e55565d0ac486997b9b (diff)
downloadmesa-48bf9c736f92e22791e24f1c202020179ff7e790.tar.gz
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>
-rw-r--r--src/imagination/vulkan/pvr_common.h3
-rw-r--r--src/imagination/vulkan/pvr_descriptor_set.c5
2 files changed, 2 insertions, 6 deletions
diff --git a/src/imagination/vulkan/pvr_common.h b/src/imagination/vulkan/pvr_common.h
index a6d509dd586..13395386b01 100644
--- a/src/imagination/vulkan/pvr_common.h
+++ b/src/imagination/vulkan/pvr_common.h
@@ -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;
diff --git a/src/imagination/vulkan/pvr_descriptor_set.c b/src/imagination/vulkan/pvr_descriptor_set.c
index 1855876839c..fede093b44c 100644
--- a/src/imagination/vulkan/pvr_descriptor_set.c
+++ b/src/imagination/vulkan/pvr_descriptor_set.c
@@ -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:
*