diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 58eaa1a417..df8a0665e2 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -337,7 +337,7 @@ struct vk_texture vulkan_create_texture(vk_t *vk, /* We're not reusing the objects themselves. */ if (old && old->view != VK_NULL_HANDLE) - vkDestroyImageView(vk->context->device, old->view, NULL); + VKFUNC(vkDestroyImageView)(vk->context->device, old->view, NULL); if (old && old->image != VK_NULL_HANDLE) { VKFUNC(vkDestroyImage)(vk->context->device, old->image, NULL); @@ -392,7 +392,7 @@ struct vk_texture vulkan_create_texture(vk_t *vk, view.subresourceRange.levelCount = 1; view.subresourceRange.layerCount = 1; - vkCreateImageView(device, &view, NULL, &tex.view); + VKFUNC(vkCreateImageView)(device, &view, NULL, &tex.view); vkGetImageSubresourceLayout(device, tex.image, &subresource, &layout); tex.stride = layout.rowPitch; @@ -503,8 +503,8 @@ void vulkan_destroy_texture( if (tex->mapped) VKFUNC(vkUnmapMemory)(device, tex->memory); vkFreeMemory(device, tex->memory, NULL); - vkDestroyImageView(device, tex->view, NULL); - vkDestroyImage(device, tex->image, NULL); + VKFUNC(vkDestroyImageView)(device, tex->view, NULL); + VKFUNC(vkDestroyImage)(device, tex->image, NULL); #ifdef VULKAN_DEBUG_TEXTURE_ALLOC vulkan_track_dealloc(tex->image); #endif @@ -1137,6 +1137,10 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyImage); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdCopyImage); + /* Image Views */ + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateImageView); + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyImageView); + /* Descriptor pools */ VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDescriptorPool); @@ -1146,6 +1150,7 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, /* Framebuffers */ VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateFramebuffer); + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyFramebuffer); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, AllocateCommandBuffers); /* Memory allocation */ diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 49c3edd96b..b8f78780b0 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -152,6 +152,10 @@ typedef struct vulkan_context PFN_vkDestroyImage vkDestroyImage; PFN_vkCmdCopyImage vkCmdCopyImage; + /* Image Views */ + PFN_vkCreateImageView vkCreateImageView; + PFN_vkDestroyImageView vkDestroyImageView; + /* Queues */ PFN_vkGetDeviceQueue vkGetDeviceQueue; PFN_vkQueueWaitIdle vkQueueWaitIdle; @@ -182,6 +186,7 @@ typedef struct vulkan_context /* Framebuffers */ PFN_vkCreateFramebuffer vkCreateFramebuffer; + PFN_vkDestroyFramebuffer vkDestroyFramebuffer; /* Memory allocation */ PFN_vkMapMemory vkMapMemory; diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 2f5ec4eb30..5971ff3f06 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -144,7 +144,7 @@ static void vulkan_init_framebuffers( view.components.b = VK_COMPONENT_SWIZZLE_B; view.components.a = VK_COMPONENT_SWIZZLE_A; - vkCreateImageView(vk->context->device, + VKFUNC(vkCreateImageView)(vk->context->device, &view, NULL, &vk->swapchain[i].backbuffer.view); /* Create the framebuffer */ @@ -579,9 +579,9 @@ static void vulkan_deinit_framebuffers( unsigned i; for (i = 0; i < vk->num_swapchain_images; i++) { - vkDestroyFramebuffer(vk->context->device, + VKFUNC(vkDestroyFramebuffer)(vk->context->device, vk->swapchain[i].backbuffer.framebuffer, NULL); - vkDestroyImageView(vk->context->device, + VKFUNC(vkDestroyImageView)(vk->context->device, vk->swapchain[i].backbuffer.view, NULL); }