Mesa (staging/19.1): radv: Only allocate supplied number of descriptors when variable.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jul 5 09:12:05 UTC 2019


Module: Mesa
Branch: staging/19.1
Commit: 334f0d3ead6d92d19a545171bfa509ab53e8df9b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=334f0d3ead6d92d19a545171bfa509ab53e8df9b

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Sat Jun 29 03:07:03 2019 +0200

radv: Only allocate supplied number of descriptors when variable.

Fixes: b5e04e9217b "radv: Support allocating variable size descriptor sets."
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111019
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
(cherry picked from commit d7e6541cc720a7d11d678adbeec7143b099127b0)

---

 src/amd/vulkan/radv_descriptor_set.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c
index bd00f68a3cb..2891808e418 100644
--- a/src/amd/vulkan/radv_descriptor_set.c
+++ b/src/amd/vulkan/radv_descriptor_set.c
@@ -503,7 +503,13 @@ radv_descriptor_set_create(struct radv_device *device,
 	}
 
 	set->layout = layout;
-	uint32_t layout_size = align_u32(layout->size, 32);
+	uint32_t layout_size = layout->size;
+	if (variable_count) {
+		assert(layout->has_variable_descriptors);
+		layout_size = layout->binding[layout->binding_count - 1].offset +
+		              *variable_count * layout->binding[layout->binding_count - 1].size;
+	}
+	layout_size = align_u32(layout_size, 32);
 	if (layout_size) {
 		set->size = layout_size;
 




More information about the mesa-commit mailing list