Mesa (master): radv: Don't allocate dynamic descriptors separately.

Bas Nieuwenhuizen bnieuwenhuizen at kemper.freedesktop.org
Wed Apr 19 18:40:37 UTC 2017


Module: Mesa
Branch: master
Commit: 39644fa40a328811feac2821b267f209274dc911
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=39644fa40a328811feac2821b267f209274dc911

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Mon Apr 17 11:30:43 2017 +0200

radv: Don't allocate dynamic descriptors separately.

Signed-off-by: Bas Nieuwenhuizen <basni at google.com>
Reviewed-by: Bas Nieuwenhuizen <basni at google.com>

---

 src/amd/vulkan/radv_descriptor_set.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c
index 48cb8c2a30..26f89152d5 100644
--- a/src/amd/vulkan/radv_descriptor_set.c
+++ b/src/amd/vulkan/radv_descriptor_set.c
@@ -261,8 +261,10 @@ radv_descriptor_set_create(struct radv_device *device,
 			   struct radv_descriptor_set **out_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;
+	unsigned mem_size = range_offset +
+		sizeof(struct radv_descriptor_range) * layout->dynamic_offset_count;
 	set = vk_alloc2(&device->alloc, NULL, mem_size, 8,
 			  VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 
@@ -272,15 +274,7 @@ radv_descriptor_set_create(struct radv_device *device,
 	memset(set, 0, mem_size);
 
 	if (layout->dynamic_offset_count) {
-		unsigned size = sizeof(struct radv_descriptor_range) *
-		                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->dynamic_descriptors = (struct radv_descriptor_range*)((uint8_t*)set + range_offset);
 	}
 
 	set->layout = layout;
@@ -350,8 +344,6 @@ radv_descriptor_set_destroy(struct radv_device *device,
 {
 	if (free_bo && set->size)
 		list_del(&set->vram_list);
-	if (set->dynamic_descriptors)
-		vk_free2(&device->alloc, NULL, set->dynamic_descriptors);
 	vk_free2(&device->alloc, NULL, set);
 }
 




More information about the mesa-commit mailing list