From eb1f00aaac9bd653acd6293ab82bdd26d84460fe Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 19 Jul 2022 21:37:11 -0500 Subject: [PATCH] vulkan: Allow up to 12 pointers in multialloc vk_graphics_pipeline_state_init() may allocate up to 12 things so expand vk_multialloc accordingly. Reviewed-by: Lionel Landwerlin Part-of: --- src/vulkan/util/vk_alloc.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vulkan/util/vk_alloc.h b/src/vulkan/util/vk_alloc.h index c01c7c5fb0a..973f54c4cd1 100644 --- a/src/vulkan/util/vk_alloc.h +++ b/src/vulkan/util/vk_alloc.h @@ -181,7 +181,7 @@ struct vk_multialloc { size_t align; uint32_t ptr_count; - void **ptrs[8]; + void **ptrs[12]; }; #define VK_MULTIALLOC(_name) \ @@ -244,7 +244,7 @@ vk_multialloc_alloc(struct vk_multialloc *ma, * constant, GCC is incapable of figuring this out and unrolling the loop * so we have to give it a little help. */ - STATIC_ASSERT(ARRAY_SIZE(ma->ptrs) == 8); + STATIC_ASSERT(ARRAY_SIZE(ma->ptrs) == 12); #define _VK_MULTIALLOC_UPDATE_POINTER(_i) \ if ((_i) < ma->ptr_count) \ *ma->ptrs[_i] = (char *)ptr + (uintptr_t)*ma->ptrs[_i] @@ -256,6 +256,10 @@ vk_multialloc_alloc(struct vk_multialloc *ma, _VK_MULTIALLOC_UPDATE_POINTER(5); _VK_MULTIALLOC_UPDATE_POINTER(6); _VK_MULTIALLOC_UPDATE_POINTER(7); + _VK_MULTIALLOC_UPDATE_POINTER(8); + _VK_MULTIALLOC_UPDATE_POINTER(9); + _VK_MULTIALLOC_UPDATE_POINTER(10); + _VK_MULTIALLOC_UPDATE_POINTER(11); #undef _VK_MULTIALLOC_UPDATE_POINTER return ptr;