From af5fb4208038c9f44181b359f912ae542e6855f1 Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Thu, 17 Jul 2025 13:57:41 +0000 Subject: [PATCH] panvk: Fix nullDescriptor for dynamic descriptors Signed-off-by: Mary Guillemard Fixes: a789867cb452 ("panvk/v10+: Implement nullDescriptor support") Reviewed-by: Christoph Pillmayer Part-of: --- src/panfrost/vulkan/panvk_vX_descriptor_set.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/panfrost/vulkan/panvk_vX_descriptor_set.c b/src/panfrost/vulkan/panvk_vX_descriptor_set.c index 8a8590551cc..7bd8a6ebd72 100644 --- a/src/panfrost/vulkan/panvk_vX_descriptor_set.c +++ b/src/panfrost/vulkan/panvk_vX_descriptor_set.c @@ -194,22 +194,25 @@ write_dynamic_buffer_desc(struct panvk_descriptor_set *set, const VkDescriptorBufferInfo *const info, uint32_t binding, uint32_t elem) { - if (info->buffer == VK_NULL_HANDLE) { - write_nulldesc(set, binding, elem, NO_SUBDESC); - return; + /* Default to memory sink (OOB address) */ + uint64_t dev_addr = 0x8ull << 60; + uint64_t range = 0; + + if (info->buffer != VK_NULL_HANDLE) { + VK_FROM_HANDLE(panvk_buffer, buffer, info->buffer); + + dev_addr = panvk_buffer_gpu_ptr(buffer, info->offset); + range = panvk_buffer_range(buffer, info->offset, info->range); } - VK_FROM_HANDLE(panvk_buffer, buffer, info->buffer); const struct panvk_descriptor_set_binding_layout *binding_layout = &set->layout->bindings[binding]; uint32_t dyn_buf_idx = binding_layout->desc_idx + elem; - const uint64_t range = panvk_buffer_range(buffer, info->offset, info->range); assert(range <= UINT32_MAX); assert(dyn_buf_idx < ARRAY_SIZE(set->dyn_bufs)); - set->dyn_bufs[dyn_buf_idx].dev_addr = - panvk_buffer_gpu_ptr(buffer, info->offset); + set->dyn_bufs[dyn_buf_idx].dev_addr = dev_addr; set->dyn_bufs[dyn_buf_idx].size = range; }