Module: Mesa
Branch: main
Commit: eb1f00aaac9bd653acd6293ab82bdd26d84460fe
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=eb1f00aaac9bd653acd6293ab82bdd26d84460fe

Author: Jason Ekstrand <[email protected]>
Date:   Tue Jul 19 21:37:11 2022 -0500

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 <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17696>

---

 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;

Reply via email to