From e5a11b1ef46f868622355bc9360bfb711d363962 Mon Sep 17 00:00:00 2001 From: Gregory Wells Date: Tue, 17 Jun 2025 12:47:27 -0400 Subject: [PATCH] actually set pool sizez properly --- .../output_device/vulkan_device_extensions.c | 10 +++++----- .../vulkan/src/uniforms/vulkan_uniform_pool.c | 17 +++++++++++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/rendering_api/vulkan/src/output_device/vulkan_device_extensions.c b/rendering_api/vulkan/src/output_device/vulkan_device_extensions.c index 9fcd804..8c02f19 100644 --- a/rendering_api/vulkan/src/output_device/vulkan_device_extensions.c +++ b/rendering_api/vulkan/src/output_device/vulkan_device_extensions.c @@ -29,11 +29,11 @@ const char* *vkGetGryphnDeviceExtensions(uint32_t* outCount, VkPhysicalDevice de } free(vkExtensions); - // if (supportsDescriptorPoolOverallocation) { - // count++; - // extensiosns = realloc(extensiosns, sizeof(const char*) * count); - // extensiosns[(count - 1)] = VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME; - // } + if (supportsDescriptorPoolOverallocation) { + count++; + extensiosns = realloc(extensiosns, sizeof(const char*) * count); + extensiosns[(count - 1)] = VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME; + } *outCount = count; diff --git a/rendering_api/vulkan/src/uniforms/vulkan_uniform_pool.c b/rendering_api/vulkan/src/uniforms/vulkan_uniform_pool.c index f71e3de..246ffe2 100644 --- a/rendering_api/vulkan/src/uniforms/vulkan_uniform_pool.c +++ b/rendering_api/vulkan/src/uniforms/vulkan_uniform_pool.c @@ -66,10 +66,23 @@ gnUniform* gnUniformPoolAllocateUniformsFn(gnUniformPool pool, gnUniformAllocati } } + uint32_t count = 0; + VkDescriptorPoolSize poolSizes[2] = {}; + + if (uniformBufferSize.descriptorCount > 0) { + poolSizes[count] = uniformBufferSize; + count++; + } + + if (imageSize.descriptorCount > 0) { + poolSizes[count] = imageSize; + count++; + } + VkDescriptorPoolCreateInfo poolInfo = { .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, - .poolSizeCount = 2, - .pPoolSizes = (VkDescriptorPoolSize[]){ uniformBufferSize, imageSize }, + .poolSizeCount = count, + .pPoolSizes = poolSizes, .maxSets = allocInfo.setCount };