anv/descriptor_set: Properly align descriptor buffer to a page
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 24 Apr 2019 02:40:31 +0000 (21:40 -0500)
committerJason Ekstrand <jason@jlekstrand.net>
Wed, 24 Apr 2019 05:40:27 +0000 (05:40 +0000)
Instead of aligning and then taking inline uniforms into account, we
need to take inline uniforms into account and then align to a page.
Otherwise, we may not be aligned to a page and allocation may fail.

Fixes: 43f40dc7cb2 "anv: Implement VK_EXT_inline_uniform_block"
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/intel/vulkan/anv_descriptor_set.c

index 2d4d37febb5ca9d67decba879dd50b9252403132..63fd8c696088e72a2eee2d84c5ff362e04d290c3 100644 (file)
@@ -676,10 +676,10 @@ VkResult anv_CreateDescriptorPool(
     * of them to 32B.
     */
    descriptor_bo_size += 32 * pCreateInfo->maxSets;
-   descriptor_bo_size = ALIGN(descriptor_bo_size, 4096);
    /* We align inline uniform blocks to 32B */
    if (inline_info)
       descriptor_bo_size += 32 * inline_info->maxInlineUniformBlockBindings;
+   descriptor_bo_size = ALIGN(descriptor_bo_size, 4096);
 
    const size_t pool_size =
       pCreateInfo->maxSets * sizeof(struct anv_descriptor_set) +