diff --git a/include/QF/Vulkan/qf_renderpass.h b/include/QF/Vulkan/qf_renderpass.h index affa387ec..8dc95fdb2 100644 --- a/include/QF/Vulkan/qf_renderpass.h +++ b/include/QF/Vulkan/qf_renderpass.h @@ -64,6 +64,9 @@ qfv_renderpass_t *Vulkan_CreateRenderPass (struct vulkan_ctx_s *ctx, const char *name, struct qfv_output_s *output, qfv_draw_t draw); +qfv_renderpass_t *Vulkan_CreateFunctionPass (struct vulkan_ctx_s *ctx, + const char *name, + qfv_draw_t function); void Vulkan_DestroyRenderPass (struct vulkan_ctx_s *ctx, qfv_renderpass_t *renderpass); void Vulkan_CreateAttachments (struct vulkan_ctx_s *ctx, diff --git a/libs/video/renderer/vulkan/vulkan_renderpass.c b/libs/video/renderer/vulkan/vulkan_renderpass.c index 6a72b447a..c779065f8 100644 --- a/libs/video/renderer/vulkan/vulkan_renderpass.c +++ b/libs/video/renderer/vulkan/vulkan_renderpass.c @@ -290,6 +290,22 @@ Vulkan_CreateRenderPass (vulkan_ctx_t *ctx, const char *name, return rp; } +qfv_renderpass_t * +Vulkan_CreateFunctionPass (vulkan_ctx_t *ctx, const char *name, + qfv_draw_t function) +{ + qfv_renderpass_t *rp = calloc (1, sizeof (qfv_renderpass_t)); + rp->name = name; + rp->draw = function; + + DARRAY_INIT (&rp->frames, 4); + DARRAY_RESIZE (&rp->frames, ctx->frames.size); + for (size_t i = 0; i < rp->frames.size; i++) { + init_renderframe (ctx, rp, &rp->frames.a[i]); + } + return rp; +} + void Vulkan_DestroyRenderPass (vulkan_ctx_t *ctx, qfv_renderpass_t *renderpass) {