OSDN Git Service

radv: Only allocate supplied number of descriptors when variable.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sat, 29 Jun 2019 01:07:03 +0000 (03:07 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Mon, 1 Jul 2019 18:53:33 +0000 (20:53 +0200)
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@gmail.com>
src/amd/vulkan/radv_descriptor_set.c

index bd00f68..2891808 100644 (file)
@@ -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;