anv: Use vk_object_alloc/free

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10123>
This commit is contained in:
Jason Ekstrand
2021-04-08 16:12:27 -05:00
committed by Marge Bot
parent 22478bb0e4
commit c43109c07b
10 changed files with 70 additions and 137 deletions

View File

@@ -385,13 +385,10 @@ VkResult anv_CreateDescriptorSetLayout(
VK_MULTIALLOC_DECL(&ma, struct anv_sampler *, samplers,
immutable_sampler_count);
if (!vk_multialloc_alloc(&ma, &device->vk.alloc,
VK_SYSTEM_ALLOCATION_SCOPE_DEVICE))
if (!vk_object_multizalloc(&device->vk, &ma, NULL,
VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT))
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
memset(set_layout, 0, sizeof(*set_layout));
vk_object_base_init(&device->vk, &set_layout->base,
VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT);
set_layout->ref_cnt = 1;
set_layout->binding_count = num_bindings;
@@ -553,8 +550,7 @@ anv_descriptor_set_layout_destroy(struct anv_device *device,
struct anv_descriptor_set_layout *layout)
{
assert(layout->ref_cnt == 0);
vk_object_base_finish(&layout->base);
vk_free(&device->vk.alloc, layout);
vk_object_free(&device->vk, NULL, layout);
}
static const struct anv_descriptor_set_binding_layout *
@@ -711,13 +707,11 @@ VkResult anv_CreatePipelineLayout(
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO);
layout = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*layout), 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
layout = vk_object_alloc(&device->vk, pAllocator, sizeof(*layout),
VK_OBJECT_TYPE_PIPELINE_LAYOUT);
if (layout == NULL)
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
vk_object_base_init(&device->vk, &layout->base,
VK_OBJECT_TYPE_PIPELINE_LAYOUT);
layout->num_sets = pCreateInfo->setLayoutCount;
unsigned dynamic_offset_count = 0;
@@ -767,8 +761,7 @@ void anv_DestroyPipelineLayout(
for (uint32_t i = 0; i < pipeline_layout->num_sets; i++)
anv_descriptor_set_layout_unref(device, pipeline_layout->set[i].layout);
vk_object_base_finish(&pipeline_layout->base);
vk_free2(&device->vk.alloc, pAllocator, pipeline_layout);
vk_object_free(&device->vk, pAllocator, pipeline_layout);
}
/*
@@ -860,13 +853,11 @@ VkResult anv_CreateDescriptorPool(
buffer_view_count * sizeof(struct anv_buffer_view);
const size_t total_size = sizeof(*pool) + pool_size;
pool = vk_alloc2(&device->vk.alloc, pAllocator, total_size, 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
pool = vk_object_alloc(&device->vk, pAllocator, total_size,
VK_OBJECT_TYPE_DESCRIPTOR_POOL);
if (!pool)
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
vk_object_base_init(&device->vk, &pool->base,
VK_OBJECT_TYPE_DESCRIPTOR_POOL);
pool->size = pool_size;
pool->next = 0;
pool->free_list = EMPTY;
@@ -880,8 +871,7 @@ VkResult anv_CreateDescriptorPool(
0 /* explicit_address */,
&pool->bo);
if (result != VK_SUCCESS) {
vk_object_base_finish(&pool->base);
vk_free2(&device->vk.alloc, pAllocator, pool);
vk_object_free(&device->vk, pAllocator, pool);
return result;
}
@@ -923,8 +913,7 @@ void anv_DestroyDescriptorPool(
}
anv_state_stream_finish(&pool->surface_state_stream);
vk_object_base_finish(&pool->base);
vk_free2(&device->vk.alloc, pAllocator, pool);
vk_object_free(&device->vk, pAllocator, pool);
}
VkResult anv_ResetDescriptorPool(
@@ -1768,13 +1757,11 @@ VkResult anv_CreateDescriptorUpdateTemplate(
size_t size = sizeof(*template) +
pCreateInfo->descriptorUpdateEntryCount * sizeof(template->entries[0]);
template = vk_alloc2(&device->vk.alloc, pAllocator, size, 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
template = vk_object_alloc(&device->vk, pAllocator, size,
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE);
if (template == NULL)
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
vk_object_base_init(&device->vk, &template->base,
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE);
template->bind_point = pCreateInfo->pipelineBindPoint;
if (pCreateInfo->templateType == VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET)
@@ -1813,8 +1800,7 @@ void anv_DestroyDescriptorUpdateTemplate(
if (!template)
return;
vk_object_base_finish(&template->base);
vk_free2(&device->vk.alloc, pAllocator, template);
vk_object_free(&device->vk, pAllocator, template);
}
void anv_UpdateDescriptorSetWithTemplate(