radv: Don't allocate dynamic descriptors separately.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Bas Nieuwenhuizen <basni@google.com>
This commit is contained in:
Bas Nieuwenhuizen 2017-04-17 11:30:43 +02:00
parent 51c0c213b7
commit 39644fa40a

View file

@ -261,8 +261,10 @@ radv_descriptor_set_create(struct radv_device *device,
struct radv_descriptor_set **out_set) struct radv_descriptor_set **out_set)
{ {
struct radv_descriptor_set *set; struct radv_descriptor_set *set;
unsigned mem_size = sizeof(struct radv_descriptor_set) + unsigned range_offset = sizeof(struct radv_descriptor_set) +
sizeof(struct radeon_winsys_bo *) * layout->buffer_count; sizeof(struct radeon_winsys_bo *) * layout->buffer_count;
unsigned mem_size = range_offset +
sizeof(struct radv_descriptor_range) * layout->dynamic_offset_count;
set = vk_alloc2(&device->alloc, NULL, mem_size, 8, set = vk_alloc2(&device->alloc, NULL, mem_size, 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
@ -272,15 +274,7 @@ radv_descriptor_set_create(struct radv_device *device,
memset(set, 0, mem_size); memset(set, 0, mem_size);
if (layout->dynamic_offset_count) { if (layout->dynamic_offset_count) {
unsigned size = sizeof(struct radv_descriptor_range) * set->dynamic_descriptors = (struct radv_descriptor_range*)((uint8_t*)set + range_offset);
layout->dynamic_offset_count;
set->dynamic_descriptors = vk_alloc2(&device->alloc, NULL, size, 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (!set->dynamic_descriptors) {
vk_free2(&device->alloc, NULL, set);
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
}
} }
set->layout = layout; set->layout = layout;
@ -350,8 +344,6 @@ radv_descriptor_set_destroy(struct radv_device *device,
{ {
if (free_bo && set->size) if (free_bo && set->size)
list_del(&set->vram_list); list_del(&set->vram_list);
if (set->dynamic_descriptors)
vk_free2(&device->alloc, NULL, set->dynamic_descriptors);
vk_free2(&device->alloc, NULL, set); vk_free2(&device->alloc, NULL, set);
} }