v3dv/descriptor: take into account pPushConstantRanges

Push constant tests were still working without taking this into
account because we can't really fine graine how much we allocate for
them.

For now we only use them to know if we should allocate/fill the ubo
for push constants or not.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
diff --git a/src/broadcom/vulkan/v3dv_descriptor_set.c b/src/broadcom/vulkan/v3dv_descriptor_set.c
index 625a80f..e20de48 100644
--- a/src/broadcom/vulkan/v3dv_descriptor_set.c
+++ b/src/broadcom/vulkan/v3dv_descriptor_set.c
@@ -64,6 +64,15 @@
       }
    }
 
+   layout->push_constant_size = 0;
+   for (unsigned i = 0; i < pCreateInfo->pushConstantRangeCount; ++i) {
+      const VkPushConstantRange *range = pCreateInfo->pPushConstantRanges + i;
+      layout->push_constant_size =
+         MAX2(layout->push_constant_size, range->offset + range->size);
+   }
+
+   layout->push_constant_size = align(layout->push_constant_size, 4096);
+
    layout->dynamic_offset_count = dynamic_offset_count;
 
    *pPipelineLayout = v3dv_pipeline_layout_to_handle(layout);
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index be7290e..4fc44ff 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -822,6 +822,8 @@
 
    uint32_t num_sets;
    uint32_t dynamic_offset_count;
+
+   uint32_t push_constant_size;
 };
 
 struct v3dv_descriptor_map {
diff --git a/src/broadcom/vulkan/v3dv_uniforms.c b/src/broadcom/vulkan/v3dv_uniforms.c
index 70151cf..e80ee4a 100644
--- a/src/broadcom/vulkan/v3dv_uniforms.c
+++ b/src/broadcom/vulkan/v3dv_uniforms.c
@@ -96,7 +96,8 @@
 static void
 check_push_constants_ubo(struct v3dv_cmd_buffer *cmd_buffer)
 {
-   if (!(cmd_buffer->state.dirty & V3DV_CMD_DIRTY_PUSH_CONSTANTS))
+   if (!(cmd_buffer->state.dirty & V3DV_CMD_DIRTY_PUSH_CONSTANTS) ||
+       cmd_buffer->state.pipeline->layout->push_constant_size == 0)
       return;
 
    if (cmd_buffer->push_constants_descriptor.bo == NULL) {