nvk: Zero unused descriptors

When a descriptor gets freed because a buffer/image veiw or sampler is
deleted, zero out the descriptor memory.  This prevents the descriptor
from being used later and faulting on possibly non-existant memory.

While we're here, clean up the function a bit.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
Faith Ekstrand 2023-01-30 20:11:56 -06:00 committed by Marge Bot
parent 67a45d1c5f
commit c36ee41fdb

View file

@ -173,9 +173,16 @@ nvk_descriptor_table_remove(struct nvk_device *dev,
uint32_t index)
{
simple_mtx_lock(&table->mutex);
void *map = (char *)table->map + (index * table->desc_size);
memset(map, 0, table->desc_size);
/* Sanity check for double-free */
assert(table->free_count < table->alloc);
for (uint32_t i = 0; i < table->free_count; i++)
assert(table->free_table[i] != index);
table->free_table[table->free_count++] = index;
simple_mtx_unlock(&table->mutex);
}