panvk: use variable count when initializing iub buffer descriptor

Ensure we use the variable count to initialize the internal buffer
descriptor for variable count inline uniform block, if we have one.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Olivia Lee <olivia.lee@collabora.com>
Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com>
Fixes: 5fe5e317 ("panvk: advertise descriptor indexing on valhall")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35545>
This commit is contained in:
John Anthony
2025-06-18 15:52:48 +02:00
committed by Marge Bot
parent 9719744d05
commit 3e9dc4f777
+10 -3
View File
@@ -351,17 +351,24 @@ desc_set_write_immutable_samplers(struct panvk_descriptor_set *set,
}
static void
panvk_init_iub(struct panvk_descriptor_set *set, uint32_t binding)
panvk_init_iub(struct panvk_descriptor_set *set, uint32_t binding,
uint32_t variable_count)
{
const struct panvk_descriptor_set_binding_layout *binding_layout =
&set->layout->bindings[binding];
bool has_variable_count =
binding_layout->flags &
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT;
/* The first element is the buffer descriptor. */
uint32_t iub_data_offset =
panvk_get_desc_index(binding_layout, 1, NO_SUBDESC) *
PANVK_DESCRIPTOR_SIZE;
uint64_t iub_data_dev = set->descs.dev + iub_data_offset;
uint32_t iub_size_dev = panvk_get_iub_size(binding_layout->desc_count);
uint32_t iub_desc_count = has_variable_count ?
panvk_get_iub_desc_count(variable_count) : binding_layout->desc_count;
uint32_t iub_size_dev = panvk_get_iub_size(iub_desc_count);
#if PAN_ARCH < 9
struct {
@@ -443,7 +450,7 @@ panvk_desc_pool_allocate_set(struct panvk_descriptor_pool *pool,
for (uint32_t b = 0; b < layout->binding_count; ++b) {
if (layout->bindings[b].type == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK)
panvk_init_iub(set, b);
panvk_init_iub(set, b, variable_count);
}
*out = set;