nvk: descriptor set freeing fix
authorDave Airlie <airlied@redhat.com>
Mon, 6 Jun 2022 05:11:30 +0000 (15:11 +1000)
committerMarge Bot <emma+marge@anholt.net>
Fri, 4 Aug 2023 21:31:53 +0000 (21:31 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>

src/nouveau/vulkan/nvk_descriptor_set.c

index 0458632..bac6c63 100644 (file)
@@ -178,6 +178,17 @@ static void
 nvk_descriptor_set_destroy(struct nvk_device *device, struct nvk_descriptor_pool *pool,
                            struct nvk_descriptor_set *set, bool free_bo)
 {
+   if (free_bo) {
+      for (int i = 0; i < pool->entry_count; ++i) {
+         if (pool->entries[i].set == set) {
+            memmove(&pool->entries[i], &pool->entries[i + 1],
+                    sizeof(pool->entries[i]) * (pool->entry_count - i - 1));
+            --pool->entry_count;
+            break;
+         }
+      }
+   }
+
    vk_object_base_finish(&set->base);
    vk_free2(&device->vk.alloc, NULL, set);
 }