From 4771c45ed3a1ecb8e40ad21cdf3eb2070135cf63 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 29 Feb 2016 21:43:04 +0100 Subject: [PATCH] Add render pass command function pointers --- gfx/common/vulkan_common.c | 9 +++++++-- gfx/common/vulkan_common.h | 4 ++++ gfx/drivers/vulkan.c | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index bcd7a2f8cd..6d3aed51e1 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -1154,6 +1154,7 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, /* Render Passes */ VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateRenderPass); + /* Fragment operations */ VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdSetScissor); @@ -1249,8 +1250,9 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, NULL, &vk->context.device) != VK_SUCCESS) return false; - VKFUNC(vkGetDeviceQueue)(vk->context.device, - vk->context.graphics_queue_index, 0, &vk->context.queue); + /* Render Pass commands */ + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBeginRenderPass); + VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdEndRenderPass); /* Samplers */ VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateSampler); @@ -1283,6 +1285,9 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, VK_GET_DEVICE_PROC_ADDR(vk, vk->context.device, QueuePresentKHR); + VKFUNC(vkGetDeviceQueue)(vk->context.device, + vk->context.graphics_queue_index, 0, &vk->context.queue); + switch (type) { case VULKAN_WSI_WAYLAND: diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 9acc2f353d..ba413f9735 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -193,6 +193,10 @@ typedef struct vulkan_context /* Render Passes */ PFN_vkCreateRenderPass vkCreateRenderPass; + /* Render Pass commands */ + PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; + PFN_vkCmdEndRenderPass vkCmdEndRenderPass; + /* Clear commands */ PFN_vkCmdClearAttachments vkCmdClearAttachments; diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index ef47a59a85..59a57be07f 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -1549,7 +1549,7 @@ static bool vulkan_frame(void *data, const void *frame, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT); /* Begin render pass and set up viewport */ - vkCmdBeginRenderPass(vk->cmd, &rp_info, VK_SUBPASS_CONTENTS_INLINE); + VKFUNC(vkCmdBeginRenderPass)(vk->cmd, &rp_info, VK_SUBPASS_CONTENTS_INLINE); vulkan_filter_chain_build_viewport_pass(vk->filter_chain, vk->cmd, &vk->vk_vp, vk->mvp.data); @@ -1600,7 +1600,7 @@ static bool vulkan_frame(void *data, const void *frame, #endif /* End the render pass. We're done rendering to backbuffer now. */ - vkCmdEndRenderPass(vk->cmd); + VKFUNC(vkCmdEndRenderPass)(vk->cmd); if (vk->readback.pending || vk->readback.streamed) {