From fde7b6694b7f2b7d60d1eedafd20c9ab00ef9cb3 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 16 Jun 2021 01:15:49 -0700 Subject: [PATCH] zink: use alloca instead of hard-to-size vlas These variable-length arrays are hard to size statically, and VLAs aren't supported by MSVC. So let's use alloca instead. Reviewed-by: Hoe Hao Cheng Reviewed-By: Mike Blumenkrantz Part-of: --- src/gallium/drivers/zink/zink_descriptors.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_descriptors.c b/src/gallium/drivers/zink/zink_descriptors.c index af906ac..67d6db6 100644 --- a/src/gallium/drivers/zink/zink_descriptors.c +++ b/src/gallium/drivers/zink/zink_descriptors.c @@ -545,7 +545,7 @@ bool zink_descriptor_util_alloc_sets(struct zink_screen *screen, VkDescriptorSetLayout dsl, VkDescriptorPool pool, VkDescriptorSet *sets, unsigned num_sets) { VkDescriptorSetAllocateInfo dsai; - VkDescriptorSetLayout layouts[num_sets]; + VkDescriptorSetLayout *layouts = alloca(sizeof(*layouts) * num_sets); memset((void *)&dsai, 0, sizeof(dsai)); dsai.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; dsai.pNext = NULL; @@ -593,7 +593,7 @@ allocate_desc_set(struct zink_context *ctx, struct zink_program *pg, enum zink_d for (unsigned desc_factor = DESC_BUCKET_FACTOR; desc_factor < descs_used; desc_factor *= DESC_BUCKET_FACTOR) bucket_size = desc_factor; } - VkDescriptorSet desc_set[bucket_size]; + VkDescriptorSet *desc_set = alloca(sizeof(*desc_set) * bucket_size); if (!zink_descriptor_util_alloc_sets(screen, push_set ? ctx->dd->push_dsl[is_compute]->layout : pg->dsl[type + 1], pool->descpool, desc_set, bucket_size)) return VK_NULL_HANDLE; -- 2.7.4