diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 15d19c79e8..bcd7a2f8cd 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -437,7 +437,8 @@ struct vk_texture vulkan_create_texture(vk_t *vk, vkAllocateCommandBuffers(vk->context->device, &cmd_info, &staging); begin_info.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; - vkBeginCommandBuffer(staging, &begin_info); + + VKFUNC(vkBeginCommandBuffer)(staging, &begin_info); vulkan_image_layout_transition(vk, staging, tmp.image, VK_IMAGE_LAYOUT_PREINITIALIZED, VK_IMAGE_LAYOUT_GENERAL, @@ -1168,6 +1169,8 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, /* Command buffers */ VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateCommandPool); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyCommandPool); + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, BeginCommandBuffer); + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, ResetCommandBuffer); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, EndCommandBuffer); if (VKFUNC(vkEnumeratePhysicalDevices)(vk->context.instance, diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index a920888752..9acc2f353d 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -155,7 +155,6 @@ typedef struct vulkan_context /* Queues */ PFN_vkGetDeviceQueue vkGetDeviceQueue; PFN_vkQueueWaitIdle vkQueueWaitIdle; - PFN_vkQueueSubmit vkQueueSubmit; /* Pipelines */ PFN_vkCmdBindPipeline vkCmdBindPipeline; @@ -170,10 +169,15 @@ typedef struct vulkan_context PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; - /* Command buffers */ + /* Command Buffers */ PFN_vkCreateCommandPool vkCreateCommandPool; PFN_vkDestroyCommandPool vkDestroyCommandPool; + PFN_vkBeginCommandBuffer vkBeginCommandBuffer; PFN_vkEndCommandBuffer vkEndCommandBuffer; + PFN_vkResetCommandBuffer vkResetCommandBuffer; + + /* Command Buffer Submission */ + PFN_vkQueueSubmit vkQueueSubmit; /* Framebuffers */ PFN_vkCreateFramebuffer vkCreateFramebuffer; diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index e3fb4d5bea..ef47a59a85 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -1414,10 +1414,11 @@ static bool vulkan_frame(void *data, const void *frame, vulkan_buffer_chain_discard(&chain->ubo); /* Start recording the command buffer. */ - vk->cmd = chain->cmd; + vk->cmd = chain->cmd; begin_info.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; - vkResetCommandBuffer(vk->cmd, 0); - vkBeginCommandBuffer(vk->cmd, &begin_info); + VKFUNC(vkResetCommandBuffer)(vk->cmd, 0); + + VKFUNC(vkBeginCommandBuffer)(vk->cmd, &begin_info); memset(&vk->tracker, 0, sizeof(vk->tracker)); /* Upload texture */