From 8a053254b81497cb6b0708fe86986e461ee43771 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Tue, 2 Jul 2019 11:32:44 +0200 Subject: [PATCH] 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 --- 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 2891808..9a6e9ce 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) { -- 2.7.4