From 83dc7db6c73f7165c7074a6f0ef9f9537fd8a103 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 29 Feb 2016 22:04:23 +0100 Subject: [PATCH] (Vulkan) Add descriptor set layout function callbacks --- gfx/common/vulkan_common.c | 5 +++++ gfx/common/vulkan_common.h | 13 +++++++++++-- gfx/drivers/vulkan.c | 6 +++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index a4cce9c8af..ab7ea5a372 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -1148,6 +1148,10 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBindDescriptorSets); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, UpdateDescriptorSets); + /* Descriptor Set Layout */ + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDescriptorSetLayout); + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyDescriptorSetLayout); + /* Framebuffers */ VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateFramebuffer); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyFramebuffer); @@ -1170,6 +1174,7 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, /* Pipelines */ VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreatePipelineLayout); + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyPipelineLayout); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreatePipelineCache); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBindPipeline); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyPipeline); diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 6156f62f4f..16536630f8 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -162,9 +162,14 @@ typedef struct vulkan_context /* Pipelines */ PFN_vkCmdBindPipeline vkCmdBindPipeline; - PFN_vkCreatePipelineLayout vkCreatePipelineLayout; - PFN_vkCreatePipelineCache vkCreatePipelineCache; PFN_vkDestroyPipeline vkDestroyPipeline; + + /* Pipeline Layouts */ + PFN_vkCreatePipelineLayout vkCreatePipelineLayout; + PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; + + /* Pipeline Cache */ + PFN_vkCreatePipelineCache vkCreatePipelineCache; /* Descriptor pools */ PFN_vkCreateDescriptorPool vkCreateDescriptorPool; @@ -173,6 +178,10 @@ typedef struct vulkan_context PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; + /* Descriptor Set Layout */ + PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; + PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; + /* Command Buffers */ PFN_vkCreateCommandPool vkCreateCommandPool; PFN_vkDestroyCommandPool vkDestroyCommandPool; diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index c9d22379f7..ce4589ba97 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -186,7 +186,7 @@ static void vulkan_init_pipeline_layout( set_layout_info.bindingCount = 2; set_layout_info.pBindings = bindings; - vkCreateDescriptorSetLayout(vk->context->device, + VKFUNC(vkCreateDescriptorSetLayout)(vk->context->device, &set_layout_info, NULL, &vk->pipelines.set_layout); layout_info.setLayoutCount = 1; @@ -549,9 +549,9 @@ static void vulkan_deinit_pipeline_layout( struct vulkan_context_fp *vkcfp, vk_t *vk) { - vkDestroyPipelineLayout(vk->context->device, + VKFUNC(vkDestroyPipelineLayout)(vk->context->device, vk->pipelines.layout, NULL); - vkDestroyDescriptorSetLayout(vk->context->device, + VKFUNC(vkDestroyDescriptorSetLayout)(vk->context->device, vk->pipelines.set_layout, NULL); }