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",
 | 
				
			||||||
@ -68,13 +77,15 @@ static bool LoadRenderer(void) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
#undef RETRIEVE_SYMBOL
 | 
					#undef RETRIEVE_SYMBOL
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    g_renderer.RegisterCVars       = &rtRenRegisterCVars;
 | 
					    g_renderer.RegisterCVars        = &rtRenRegisterCVars;
 | 
				
			||||||
    g_renderer.Init                = &rtRenInit;
 | 
					    g_renderer.Init                 = &rtRenInit;
 | 
				
			||||||
    g_renderer.Shutdown            = &rtRenShutdown;
 | 
					    g_renderer.Shutdown             = &rtRenShutdown;
 | 
				
			||||||
    g_renderer.CompilePipeline     = &rtRenCompilePipeline;
 | 
					    g_renderer.CompilePipeline      = &rtRenCompilePipeline;
 | 
				
			||||||
    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