From 48a10c5dd31105a08248faa4b2c15e3794c03eb8 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 10 Mar 2022 10:52:07 -0600 Subject: [PATCH] lavapipe: Allocate descriptor set layouts with DEVICE scope Because they can come and go at any time, we can't use OBJECT scope because that might confuse the client allocator. Instead, use DEVICE scope and always allocate off the device allocator. Reviewed-by: Boris Brezillon Reviewed-by: Mike Blumenkrantz Part-of: --- src/gallium/frontends/lavapipe/lvp_descriptor_set.c | 9 ++++----- src/gallium/frontends/lavapipe/lvp_private.h | 1 - 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_descriptor_set.c b/src/gallium/frontends/lavapipe/lvp_descriptor_set.c index 1469451a46a..9e97c7485fe 100644 --- a/src/gallium/frontends/lavapipe/lvp_descriptor_set.c +++ b/src/gallium/frontends/lavapipe/lvp_descriptor_set.c @@ -62,8 +62,8 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_CreateDescriptorSetLayout( num_bindings * sizeof(set_layout->binding[0]) + immutable_sampler_count * sizeof(struct lvp_sampler *); - set_layout = vk_zalloc2(&device->vk.alloc, pAllocator, size, 8, - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); + set_layout = vk_zalloc(&device->vk.alloc, size, 8, + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE); if (!set_layout) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); @@ -74,7 +74,6 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_CreateDescriptorSetLayout( struct lvp_sampler **samplers = (struct lvp_sampler **)&set_layout->binding[num_bindings]; - set_layout->alloc = pAllocator; set_layout->binding_count = num_bindings; set_layout->shader_stages = 0; set_layout->size = 0; @@ -85,7 +84,7 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_CreateDescriptorSetLayout( &bindings); if (result != VK_SUCCESS) { vk_object_base_finish(&set_layout->base); - vk_free2(&device->vk.alloc, pAllocator, set_layout); + vk_free(&device->vk.alloc, set_layout); return vk_error(device, result); } @@ -187,7 +186,7 @@ lvp_descriptor_set_layout_destroy(struct lvp_device *device, { assert(layout->ref_cnt == 0); vk_object_base_finish(&layout->base); - vk_free2(&device->vk.alloc, layout->alloc, layout); + vk_free(&device->vk.alloc, layout); } VKAPI_ATTR void VKAPI_CALL lvp_DestroyDescriptorSetLayout( diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h index 01462ac9036..f1e1ee1e1e0 100644 --- a/src/gallium/frontends/lavapipe/lvp_private.h +++ b/src/gallium/frontends/lavapipe/lvp_private.h @@ -341,7 +341,6 @@ struct lvp_descriptor_set_binding_layout { struct lvp_descriptor_set_layout { struct vk_object_base base; - const VkAllocationCallbacks *alloc; /* Descriptor set layouts can be destroyed at almost any time */ uint32_t ref_cnt;