anv/descriptor_set: Use the correct size for the descriptor pool
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 24 Feb 2016 05:23:06 +0000 (21:23 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 24 Feb 2016 05:25:37 +0000 (21:25 -0800)
The descriptor sizes array gives the total number of each type of
descriptor that will ever be allocated from the pool, not the total amount
that may be in any particular set.  In our case, this simply means that we
have to sum a bunch of things up and there we go.

src/intel/vulkan/anv_descriptor_set.c

index fe105b23f42999c7e0cfba81111bdb50ab7b77aa..dd645c3effccb321873f41f788d471fcc6d06a69 100644 (file)
@@ -283,14 +283,11 @@ VkResult anv_CreateDescriptorPool(
       }
    }
 
-   const size_t set_size =
-      sizeof(struct anv_descriptor_set) +
-      descriptor_count * sizeof(struct anv_descriptor) +
-      buffer_count * sizeof(struct anv_buffer_view);
-
    const size_t size =
       sizeof(*pool) +
-      pCreateInfo->maxSets * set_size;
+      pCreateInfo->maxSets * sizeof(struct anv_descriptor_set) +
+      descriptor_count * sizeof(struct anv_descriptor) +
+      buffer_count * sizeof(struct anv_buffer_view);
 
    pool = anv_alloc2(&device->alloc, pAllocator, size, 8,
                      VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);