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 <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17696>
This commit is contained in:
Jason Ekstrand 2022-07-19 21:37:11 -05:00 committed by Marge Bot
parent 8ec81a4b11
commit eb1f00aaac
1 changed files with 6 additions and 2 deletions

View File

@ -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;