From e808a1ead42772ddc71fa4359aef890f119c9229 Mon Sep 17 00:00:00 2001 From: M Henning Date: Sat, 30 Mar 2024 14:33:47 -0400 Subject: [PATCH] nvk: Early-out impossible descriptor allocations Also, return VK_ERROR_FRAGMENTED_POOL when appropriate. Part-of: --- src/nouveau/vulkan/nvk_descriptor_set.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/nouveau/vulkan/nvk_descriptor_set.c b/src/nouveau/vulkan/nvk_descriptor_set.c index 957899e5663..90f016632b7 100644 --- a/src/nouveau/vulkan/nvk_descriptor_set.c +++ b/src/nouveau/vulkan/nvk_descriptor_set.c @@ -487,9 +487,14 @@ nvk_descriptor_pool_alloc(struct nvk_descriptor_pool *pool, uint64_t *addr_out, void **map_out) { assert(size > 0); + assert(size % alignment == 0); + + if (size > pool->heap.free_size) + return VK_ERROR_OUT_OF_POOL_MEMORY; + uint64_t addr = util_vma_heap_alloc(&pool->heap, size, alignment); if (addr == 0) - return VK_ERROR_OUT_OF_POOL_MEMORY; + return VK_ERROR_FRAGMENTED_POOL; assert(addr >= pool->bo->offset); assert(addr + size <= pool->bo->offset + pool->bo->size);