anv: fix descriptor pool leak in VMA object

Quoting the spec :

   "When a pool is destroyed, all descriptor sets allocated from the
    pool are implicitly freed and become invalid. Descriptor sets
    allocated from a given pool do not need to be freed before
    destroying that descriptor pool."

This implies we might leak nodes allocated in the vma object.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 0a6d2593b8 ("anv: Allocate descriptor buffers from the BO cache")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7796>
(cherry picked from commit 5d55ca9c30)
This commit is contained in:
Lionel Landwerlin 2020-11-26 16:37:01 +02:00 committed by Dylan Baker
parent bfc05f365c
commit ec53c72f58
2 changed files with 4 additions and 2 deletions

View file

@ -1912,7 +1912,7 @@
"description": "anv: fix descriptor pool leak in VMA object",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"master_sha": null,
"because_sha": "0a6d2593b8b63d2429e79eed900848c5c9a522c9"
},

View file

@ -800,8 +800,10 @@ void anv_DestroyDescriptorPool(
anv_descriptor_set_layout_unref(device, set->layout);
}
if (pool->bo)
if (pool->bo) {
util_vma_heap_finish(&pool->bo_heap);
anv_device_release_bo(device, pool->bo);
}
anv_state_stream_finish(&pool->surface_state_stream);
vk_object_base_finish(&pool->base);