diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index a498a43549..3c200ceda5 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -894,7 +894,9 @@ struct vk_descriptor_manager vulkan_create_descriptor_manager( return manager; } -void vulkan_destroy_descriptor_manager(VkDevice device, +void vulkan_destroy_descriptor_manager( + struct vulkan_context_fp *vkcfp, + VkDevice device, struct vk_descriptor_manager *manager) { struct vk_descriptor_pool *node = manager->head; @@ -903,7 +905,7 @@ void vulkan_destroy_descriptor_manager(VkDevice device, { struct vk_descriptor_pool *next = node->next; - vkFreeDescriptorSets(device, node->pool, + VKFUNC(vkFreeDescriptorSets)(device, node->pool, VULKAN_DESCRIPTOR_MANAGER_BLOCK_SETS, node->sets); vkDestroyDescriptorPool(device, node->pool, NULL); @@ -917,7 +919,7 @@ void vulkan_destroy_descriptor_manager(VkDevice device, static void vulkan_buffer_chain_step(struct vk_buffer_chain *chain) { chain->current = chain->current->next; - chain->offset = 0; + chain->offset = 0; } static bool vulkan_buffer_chain_suballoc(struct vk_buffer_chain *chain, @@ -953,7 +955,8 @@ static struct vk_buffer_node *vulkan_buffer_chain_alloc_node( return node; } -struct vk_buffer_chain vulkan_buffer_chain_init(VkDeviceSize block_size, +struct vk_buffer_chain vulkan_buffer_chain_init( + VkDeviceSize block_size, VkDeviceSize alignment, VkBufferUsageFlags usage) { @@ -1161,6 +1164,7 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDescriptorPool); /* Descriptor sets */ + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, FreeDescriptorSets); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, UpdateDescriptorSets); /* Descriptor Set Layout */ diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index a4e3223667..d25e5f4dce 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -198,6 +198,7 @@ typedef struct vulkan_context PFN_vkCreateDescriptorPool vkCreateDescriptorPool; /* Descriptor sets */ + PFN_vkFreeDescriptorSets vkFreeDescriptorSets; PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; @@ -691,14 +692,18 @@ VkDescriptorSet vulkan_descriptor_manager_alloc( VkDevice device, struct vk_descriptor_manager *manager); -void vulkan_descriptor_manager_restart(struct vk_descriptor_manager *manager); +void vulkan_descriptor_manager_restart( + struct vk_descriptor_manager *manager); struct vk_descriptor_manager vulkan_create_descriptor_manager( struct vulkan_context_fp *vkcfp, VkDevice device, const VkDescriptorPoolSize *sizes, unsigned num_sizes, VkDescriptorSetLayout set_layout); -void vulkan_destroy_descriptor_manager(VkDevice device, + +void vulkan_destroy_descriptor_manager( + struct vulkan_context_fp *vkcfp, + VkDevice device, struct vk_descriptor_manager *manager); bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index e471aae763..741977d617 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -480,7 +480,9 @@ static void vulkan_deinit_descriptor_pool(vk_t *vk) { unsigned i; for (i = 0; i < vk->num_swapchain_images; i++) - vulkan_destroy_descriptor_manager(vk->context->device, + vulkan_destroy_descriptor_manager( + &vk->context->fp, + vk->context->device, &vk->swapchain[i].descriptor_manager); }