anv: destroy descriptor sets when pool gets destroyed
authorTapani Pälli <tapani.palli@intel.com>
Mon, 4 Mar 2019 12:22:36 +0000 (14:22 +0200)
committerTapani Pälli <tapani.palli@intel.com>
Mon, 11 Mar 2019 06:13:01 +0000 (08:13 +0200)
commit105002bd2d6173b24f6955c22340b5bc77e029fa
tree46fc1afccc561c995f0b3d5889fda996c6c8a481
parent051b4064da5e28c13f691385c48d1d86e525774c
anv: destroy descriptor sets when pool gets destroyed

Patch maintains a list of sets in the pool and destroys possible
remaining sets when pool is destroyed.

As stated in Vulkan spec:
   "When a pool is destroyed, all descriptor sets allocated from
    the pool are implicitly freed and become invalid."

This fixes memory leaks spotted with valgrind:

   ==19622== 96 bytes in 1 blocks are definitely lost in loss record 2 of 3
   ==19622==    at 0x483880B: malloc (vg_replace_malloc.c:309)
   ==19622==    by 0x495B67E: default_alloc_func (anv_device.c:547)
   ==19622==    by 0x4955E05: vk_alloc (vk_alloc.h:36)
   ==19622==    by 0x4956A8F: anv_multialloc_alloc (anv_private.h:538)
   ==19622==    by 0x4956A8F: anv_CreateDescriptorSetLayout (anv_descriptor_set.c:217)

Fixes: 14f6275c92f1 ("anv/descriptor_set: add reference counting for descriptor set layouts")
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_descriptor_set.c
src/intel/vulkan/anv_private.h