panvk: Fix nullDescriptor for dynamic descriptors

Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Fixes: a789867cb4 ("panvk/v10+: Implement nullDescriptor support")
Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36198>
(cherry picked from commit af5fb42080)
This commit is contained in:
Mary Guillemard 2025-07-17 13:57:41 +00:00 committed by Eric Engestrom
parent b550d78635
commit d4201626c5
2 changed files with 11 additions and 8 deletions

View file

@ -1754,7 +1754,7 @@
"description": "panvk: Fix nullDescriptor for dynamic descriptors",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "a789867cb452a6062cdd2ae7f5d77e0ea443cd00",
"notes": null

View file

@ -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;
}