(Vulkan) Add more funcptrs

This commit is contained in:
twinaphex 2016-02-29 23:09:05 +01:00
parent 0e60d20705
commit 4a1a623099
3 changed files with 18 additions and 7 deletions

View File

@ -894,7 +894,9 @@ struct vk_descriptor_manager vulkan_create_descriptor_manager(
return 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_manager *manager)
{ {
struct vk_descriptor_pool *node = manager->head; 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; struct vk_descriptor_pool *next = node->next;
vkFreeDescriptorSets(device, node->pool, VKFUNC(vkFreeDescriptorSets)(device, node->pool,
VULKAN_DESCRIPTOR_MANAGER_BLOCK_SETS, node->sets); VULKAN_DESCRIPTOR_MANAGER_BLOCK_SETS, node->sets);
vkDestroyDescriptorPool(device, node->pool, NULL); 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) static void vulkan_buffer_chain_step(struct vk_buffer_chain *chain)
{ {
chain->current = chain->current->next; chain->current = chain->current->next;
chain->offset = 0; chain->offset = 0;
} }
static bool vulkan_buffer_chain_suballoc(struct vk_buffer_chain *chain, 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; 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, VkDeviceSize alignment,
VkBufferUsageFlags usage) 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); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDescriptorPool);
/* Descriptor sets */ /* Descriptor sets */
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, FreeDescriptorSets);
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, UpdateDescriptorSets); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, UpdateDescriptorSets);
/* Descriptor Set Layout */ /* Descriptor Set Layout */

View File

@ -198,6 +198,7 @@ typedef struct vulkan_context
PFN_vkCreateDescriptorPool vkCreateDescriptorPool; PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
/* Descriptor sets */ /* Descriptor sets */
PFN_vkFreeDescriptorSets vkFreeDescriptorSets;
PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
@ -691,14 +692,18 @@ VkDescriptorSet vulkan_descriptor_manager_alloc(
VkDevice device, VkDevice device,
struct vk_descriptor_manager *manager); 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 vk_descriptor_manager vulkan_create_descriptor_manager(
struct vulkan_context_fp *vkcfp, struct vulkan_context_fp *vkcfp,
VkDevice device, VkDevice device,
const VkDescriptorPoolSize *sizes, unsigned num_sizes, const VkDescriptorPoolSize *sizes, unsigned num_sizes,
VkDescriptorSetLayout set_layout); 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); struct vk_descriptor_manager *manager);
bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,

View File

@ -480,7 +480,9 @@ static void vulkan_deinit_descriptor_pool(vk_t *vk)
{ {
unsigned i; unsigned i;
for (i = 0; i < vk->num_swapchain_images; 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); &vk->swapchain[i].descriptor_manager);
} }