summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2017-04-19 01:08:06 +0200
committerBas Nieuwenhuizen <[email protected]>2017-04-19 20:37:57 +0200
commitf7b14ff4bee61159a880371748511a2d449b9756 (patch)
tree6a6befd7a238036f7529c762a230cb1046dcbc98
parent126d5adb11e18a329e197db8f117b47bba30eeed (diff)
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 <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r--src/amd/vulkan/radv_descriptor_set.c5
1 files 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) {