Add interface for command buffers
This commit is contained in:
parent
765e263979
commit
b44b3e651b
14
src/renderer/vk/command_buffers.c
Normal file
14
src/renderer/vk/command_buffers.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "runtime/renderer_api.h"
|
||||||
|
|
||||||
|
rt_result
|
||||||
|
RT_RENDERER_API_FN(AllocCommandBuffers)(uint32_t count,
|
||||||
|
rt_render_command_buffer_handle *p_command_buffers,
|
||||||
|
rt_gpu_semaphore_handle *p_semaphores) {
|
||||||
|
return RT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
rt_result
|
||||||
|
RT_RENDERER_API_FN(SubmitCommandBuffers)(uint32_t count,
|
||||||
|
const rt_render_command_buffer_handle *command_buffers) {
|
||||||
|
return RT_SUCCESS;
|
||||||
|
}
|
6
src/renderer/vk/command_buffers.h
Normal file
6
src/renderer/vk/command_buffers.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef RT_COMMAND_BUFFERS_H
|
||||||
|
#define RT_COMMAND_BUFFERS_H
|
||||||
|
|
||||||
|
#include "runtime/runtime.h"
|
||||||
|
|
||||||
|
#endif
|
@ -9,11 +9,13 @@ if vk_dep.found()
|
|||||||
vk_inc_dep = vk_dep.partial_dependency(compile_args : true, includes : true)
|
vk_inc_dep = vk_dep.partial_dependency(compile_args : true, includes : true)
|
||||||
vk_renderer_lib = library('rtvk',
|
vk_renderer_lib = library('rtvk',
|
||||||
# Project Sources
|
# Project Sources
|
||||||
|
'command_buffers.h',
|
||||||
'gpu.h',
|
'gpu.h',
|
||||||
'pipelines.h',
|
'pipelines.h',
|
||||||
'render_targets.h',
|
'render_targets.h',
|
||||||
'swapchain.h',
|
'swapchain.h',
|
||||||
|
|
||||||
|
'command_buffers.c',
|
||||||
'helper.c',
|
'helper.c',
|
||||||
'init.c',
|
'init.c',
|
||||||
'pipelines.c',
|
'pipelines.c',
|
||||||
|
@ -18,7 +18,8 @@ rt_renderer_api g_renderer;
|
|||||||
static rt_dynlib _renderer_lib;
|
static rt_dynlib _renderer_lib;
|
||||||
static bool _renderer_loaded = false;
|
static bool _renderer_loaded = false;
|
||||||
|
|
||||||
RT_DLLEXPORT RT_CVAR_S(rt_Renderer, "Select the render backend. Available options: [vk], Default: vk", "vk");
|
RT_DLLEXPORT
|
||||||
|
RT_CVAR_S(rt_Renderer, "Select the render backend. Available options: [vk], Default: vk", "vk");
|
||||||
|
|
||||||
#ifdef RT_STATIC_LIB
|
#ifdef RT_STATIC_LIB
|
||||||
extern void RT_RENDERER_API_FN(RegisterCVars)(void);
|
extern void RT_RENDERER_API_FN(RegisterCVars)(void);
|
||||||
@ -29,6 +30,12 @@ extern void RT_RENDERER_API_FN(DestroyPipeline)(rt_pipeline_handle);
|
|||||||
extern rt_render_target_handle
|
extern rt_render_target_handle
|
||||||
RT_RENDERER_API_FN(CreateRenderTarget)(const rt_render_target_info *);
|
RT_RENDERER_API_FN(CreateRenderTarget)(const rt_render_target_info *);
|
||||||
extern void RT_RENDERER_API_FN(DestroyRenderTarget)(rt_render_target_handle);
|
extern void RT_RENDERER_API_FN(DestroyRenderTarget)(rt_render_target_handle);
|
||||||
|
extern rt_result
|
||||||
|
RT_RENDERER_API_FN(AllocCommandBuffers)(uint32_t count,
|
||||||
|
rt_render_command_buffer_handle *p_command_buffers,
|
||||||
|
rt_gpu_semaphore_handle *p_semaphores);
|
||||||
|
extern rt_result RT_RENDERER_API_FN(
|
||||||
|
SubmitCommandBuffers)(uint32_t count, const rt_render_command_buffer_handle *command_buffers);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern rt_result InitFramegraphManager(void);
|
extern rt_result InitFramegraphManager(void);
|
||||||
@ -59,6 +66,8 @@ static bool LoadRenderer(void) {
|
|||||||
RETRIEVE_SYMBOL(DestroyPipeline, rt_destroy_pipeline_fn);
|
RETRIEVE_SYMBOL(DestroyPipeline, rt_destroy_pipeline_fn);
|
||||||
RETRIEVE_SYMBOL(CreateRenderTarget, rt_create_render_target_fn);
|
RETRIEVE_SYMBOL(CreateRenderTarget, rt_create_render_target_fn);
|
||||||
RETRIEVE_SYMBOL(DestroyRenderTarget, rt_destroy_render_target_fn);
|
RETRIEVE_SYMBOL(DestroyRenderTarget, rt_destroy_render_target_fn);
|
||||||
|
RETRIEVE_SYMBOL(AllocCommandBuffers, rt_alloc_command_buffers_fn);
|
||||||
|
RETRIEVE_SYMBOL(SubmitCommandBuffers, rt_submit_command_buffers_fn);
|
||||||
} else {
|
} else {
|
||||||
rtReportError("GFX",
|
rtReportError("GFX",
|
||||||
"Unsupported renderer backend: (%s) %s",
|
"Unsupported renderer backend: (%s) %s",
|
||||||
@ -75,6 +84,8 @@ static bool LoadRenderer(void) {
|
|||||||
g_renderer.DestroyPipeline = &rtRenDestroyPipeline;
|
g_renderer.DestroyPipeline = &rtRenDestroyPipeline;
|
||||||
g_renderer.CreateRenderTarget = &rtRenCreateRenderTarget;
|
g_renderer.CreateRenderTarget = &rtRenCreateRenderTarget;
|
||||||
g_renderer.DestroyRenderTarget = &rtRenDestroyRenderTarget;
|
g_renderer.DestroyRenderTarget = &rtRenDestroyRenderTarget;
|
||||||
|
g_renderer.AllocCommandBuffers = &rtRenAllocCommandBuffers;
|
||||||
|
g_renderer.SubmitCommandBuffers = &rtRenSubmitCommandBuffers;
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ runtime_lib = library('rt',
|
|||||||
'jobs.h',
|
'jobs.h',
|
||||||
'main_loop.h',
|
'main_loop.h',
|
||||||
'mem_arena.h',
|
'mem_arena.h',
|
||||||
|
'render_list.h',
|
||||||
'renderer_api.h',
|
'renderer_api.h',
|
||||||
'resources.h',
|
'resources.h',
|
||||||
'runtime.h',
|
'runtime.h',
|
||||||
|
4
src/runtime/render_list.h
Normal file
4
src/runtime/render_list.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#ifndef RT_RENDER_LIST_H
|
||||||
|
#define RT_RENDER_LIST_H
|
||||||
|
|
||||||
|
#endif
|
@ -99,6 +99,7 @@ typedef struct {
|
|||||||
RT_RENDER_BACKEND_HANDLE(rt_pipeline_handle);
|
RT_RENDER_BACKEND_HANDLE(rt_pipeline_handle);
|
||||||
RT_RENDER_BACKEND_HANDLE(rt_render_target_handle);
|
RT_RENDER_BACKEND_HANDLE(rt_render_target_handle);
|
||||||
RT_RENDER_BACKEND_HANDLE(rt_render_command_buffer_handle);
|
RT_RENDER_BACKEND_HANDLE(rt_render_command_buffer_handle);
|
||||||
|
RT_RENDER_BACKEND_HANDLE(rt_gpu_semaphore_handle);
|
||||||
|
|
||||||
#undef RT_RENDER_BACKEND_HANDLE
|
#undef RT_RENDER_BACKEND_HANDLE
|
||||||
|
|
||||||
@ -109,6 +110,12 @@ typedef rt_pipeline_handle rt_compile_pipeline_fn(const rt_pipeline_info *info);
|
|||||||
typedef void rt_destroy_pipeline_fn(rt_pipeline_handle handle);
|
typedef void rt_destroy_pipeline_fn(rt_pipeline_handle handle);
|
||||||
typedef rt_render_target_handle rt_create_render_target_fn(const rt_render_target_info *info);
|
typedef rt_render_target_handle rt_create_render_target_fn(const rt_render_target_info *info);
|
||||||
typedef void rt_destroy_render_target_fn(rt_render_target_handle handle);
|
typedef void rt_destroy_render_target_fn(rt_render_target_handle handle);
|
||||||
|
typedef rt_result rt_alloc_command_buffers_fn(uint32_t count,
|
||||||
|
rt_render_command_buffer_handle *p_command_buffers,
|
||||||
|
rt_gpu_semaphore_handle *p_semaphores);
|
||||||
|
typedef rt_result
|
||||||
|
rt_submit_command_buffers_fn(uint32_t count,
|
||||||
|
const rt_render_command_buffer_handle *command_buffers);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
rt_register_renderer_cvars_fn *RegisterCVars;
|
rt_register_renderer_cvars_fn *RegisterCVars;
|
||||||
@ -118,6 +125,8 @@ typedef struct {
|
|||||||
rt_destroy_pipeline_fn *DestroyPipeline;
|
rt_destroy_pipeline_fn *DestroyPipeline;
|
||||||
rt_create_render_target_fn *CreateRenderTarget;
|
rt_create_render_target_fn *CreateRenderTarget;
|
||||||
rt_destroy_render_target_fn *DestroyRenderTarget;
|
rt_destroy_render_target_fn *DestroyRenderTarget;
|
||||||
|
rt_alloc_command_buffers_fn *AllocCommandBuffers;
|
||||||
|
rt_submit_command_buffers_fn *SubmitCommandBuffers;
|
||||||
} rt_renderer_api;
|
} rt_renderer_api;
|
||||||
|
|
||||||
#define RT_RENDERER_API_FN(name) RT_DLLEXPORT rtRen##name
|
#define RT_RENDERER_API_FN(name) RT_DLLEXPORT rtRen##name
|
||||||
|
Loading…
Reference in New Issue
Block a user