Mesa (staging/19.1): radv: Fix interactions between variable descriptor count and inline uniform blocks.

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


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

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Tue Jul  2 11:32:44 2019 +0200

radv: Fix interactions between variable descriptor count and inline uniform blocks.

Fixes: d7e6541cc72 "radv: Only allocate supplied number of descriptors when variable."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
(cherry picked from commit 8a053254b81497cb6b0708fe86986e461ee43771)

---

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

diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c
index 2891808e418..9a6e9cead9c 100644
--- a/src/amd/vulkan/radv_descriptor_set.c
+++ b/src/amd/vulkan/radv_descriptor_set.c
@@ -506,8 +506,12 @@ radv_descriptor_set_create(struct radv_device *device,
 	uint32_t layout_size = layout->size;
 	if (variable_count) {
 		assert(layout->has_variable_descriptors);
+		uint32_t stride = layout->binding[layout->binding_count - 1].size;
+		if (layout->binding[layout->binding_count - 1].type == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
+			stride = 1;
+
 		layout_size = layout->binding[layout->binding_count - 1].offset +
-		              *variable_count * layout->binding[layout->binding_count - 1].size;
+		              *variable_count * stride;
 	}
 	layout_size = align_u32(layout_size, 32);
 	if (layout_size) {




More information about the mesa-commit mailing list