From f7b14ff4bee61159a880371748511a2d449b9756 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Wed, 19 Apr 2017 01:08:06 +0200 Subject: [PATCH] radv: Don't try to find gaps for non-freeable descriptors. With this we don't have any operations on a pool with non-freeable descriptors left that have O(#descriptors) complexity. Signed-off-by: Bas Nieuwenhuizen Reviewed-by: Bas Nieuwenhuizen --- src/amd/vulkan/radv_descriptor_set.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index 89945f17736..1bb37aad17b 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -300,7 +300,7 @@ radv_descriptor_set_create(struct radv_device *device, set->va = device->ws->buffer_get_va(set->bo) + pool->current_offset; pool->current_offset += layout_size; list_addtail(&set->vram_list, &pool->vram_list); - } else { + } else if (!pool->host_memory_base) { uint64_t offset = 0; struct list_head *prev = &pool->vram_list; struct radv_descriptor_set *cur; @@ -324,7 +324,8 @@ radv_descriptor_set_create(struct radv_device *device, set->mapped_ptr = (uint32_t*)(pool->mapped_ptr + offset); set->va = device->ws->buffer_get_va(set->bo) + offset; list_add(&set->vram_list, prev); - } + } else + return vk_error(VK_ERROR_OUT_OF_POOL_MEMORY_KHR); } for (unsigned i = 0; i < layout->binding_count; ++i) { -- 2.30.2