diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c index cb6fa40b368..961d5c2ad52 100644 --- a/src/intel/vulkan/anv_descriptor_set.c +++ b/src/intel/vulkan/anv_descriptor_set.c @@ -850,6 +850,7 @@ anv_descriptor_pool_alloc_set(struct anv_descriptor_pool *pool, { if (size <= pool->size - pool->next) { *set = (struct anv_descriptor_set *) (pool->data + pool->next); + (*set)->size = size; pool->next += size; return VK_SUCCESS; } else { @@ -860,6 +861,7 @@ anv_descriptor_pool_alloc_set(struct anv_descriptor_pool *pool, if (size <= entry->size) { *link = entry->next; *set = (struct anv_descriptor_set *) entry; + (*set)->size = entry->size; return VK_SUCCESS; } link = &entry->next; @@ -979,7 +981,6 @@ anv_descriptor_set_create(struct anv_device *device, set->layout = layout; anv_descriptor_set_layout_ref(layout); - set->size = size; set->buffer_views = (struct anv_buffer_view *) &set->descriptors[layout->size]; set->buffer_view_count = layout->buffer_view_count; diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 9500b41dead..270d2e8a3a6 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -2026,6 +2026,10 @@ struct anv_descriptor_set { struct anv_descriptor_pool *pool; struct anv_descriptor_set_layout *layout; + + /* Amount of space occupied in the the pool by this descriptor set. It can + * be larger than the size of the descriptor set. + */ uint32_t size; /* State relative to anv_descriptor_pool::bo */