Kohi Game Engine
vulkan_backend.h File Reference

This file contains the Vulkan implementation of the renderer backend. All Vulkan calls are made behind this facade to keep the rest of the engine unaware about the inner workings of Vulkan. More...

Go to the source code of this file.

Functions

b8 vulkan_renderer_backend_initialize (renderer_plugin *backend, const renderer_backend_config *config, u8 *out_window_render_target_count)
 
void vulkan_renderer_backend_shutdown (renderer_plugin *backend)
 
void vulkan_renderer_backend_on_resized (renderer_plugin *backend, u16 width, u16 height)
 
b8 vulkan_renderer_frame_prepare (renderer_plugin *backend, struct frame_data *p_frame_data)
 
b8 vulkan_renderer_begin (renderer_plugin *plugin, struct frame_data *p_frame_data)
 
b8 vulkan_renderer_end (renderer_plugin *plugin, struct frame_data *p_frame_data)
 
b8 vulkan_renderer_present (renderer_plugin *backend, struct frame_data *p_frame_data)
 
void vulkan_renderer_viewport_set (renderer_plugin *backend, vec4 rect)
 
void vulkan_renderer_viewport_reset (renderer_plugin *backend)
 
void vulkan_renderer_scissor_set (renderer_plugin *backend, vec4 rect)
 
void vulkan_renderer_scissor_reset (renderer_plugin *backend)
 
void vulkan_renderer_winding_set (struct renderer_plugin *plugin, renderer_winding winding)
 
b8 vulkan_renderer_renderpass_begin (renderer_plugin *backend, renderpass *pass, render_target *target)
 
b8 vulkan_renderer_renderpass_end (renderer_plugin *backend, renderpass *pass)
 
void vulkan_renderer_texture_create (renderer_plugin *backend, const u8 *pixels, texture *texture)
 
void vulkan_renderer_texture_destroy (renderer_plugin *backend, texture *texture)
 
void vulkan_renderer_texture_create_writeable (renderer_plugin *backend, texture *t)
 
void vulkan_renderer_texture_resize (renderer_plugin *backend, texture *t, u32 new_width, u32 new_height)
 
void vulkan_renderer_texture_write_data (renderer_plugin *backend, texture *t, u32 offset, u32 size, const u8 *pixels)
 
void vulkan_renderer_texture_read_data (renderer_plugin *backend, texture *t, u32 offset, u32 size, void **out_memory)
 
void vulkan_renderer_texture_read_pixel (renderer_plugin *backend, texture *t, u32 x, u32 y, u8 **out_rgba)
 
b8 vulkan_renderer_geometry_create (renderer_plugin *backend, geometry *g)
 
b8 vulkan_renderer_geometry_upload (renderer_plugin *backend, geometry *g, u32 vertex_offset, u32 vertex_size, u32 index_offset, u32 index_range)
 
void vulkan_renderer_geometry_vertex_update (renderer_plugin *plugin, geometry *g, u32 offset, u32 vertex_count, void *vertices)
 
void vulkan_renderer_geometry_destroy (renderer_plugin *backend, geometry *g)
 
void vulkan_renderer_geometry_draw (renderer_plugin *backend, geometry_render_data *data)
 
b8 vulkan_renderer_shader_create (renderer_plugin *backend, struct shader *shader, const shader_config *config, renderpass *pass, u8 stage_count, const char **stage_filenames, shader_stage *stages)
 
void vulkan_renderer_shader_destroy (renderer_plugin *backend, struct shader *shader)
 
b8 vulkan_renderer_shader_initialize (renderer_plugin *backend, struct shader *shader)
 
b8 vulkan_renderer_shader_use (renderer_plugin *backend, struct shader *shader)
 
b8 vulkan_renderer_shader_bind_globals (renderer_plugin *backend, struct shader *s)
 
b8 vulkan_renderer_shader_bind_instance (renderer_plugin *backend, struct shader *s, u32 instance_id)
 
b8 vulkan_renderer_shader_apply_globals (renderer_plugin *backend, struct shader *s, b8 needs_update)
 
b8 vulkan_renderer_shader_apply_instance (renderer_plugin *backend, struct shader *s, b8 needs_update)
 
b8 vulkan_renderer_shader_instance_resources_acquire (renderer_plugin *backend, struct shader *s, u32 texture_map_count, texture_map **maps, u32 *out_instance_id)
 
b8 vulkan_renderer_shader_instance_resources_release (renderer_plugin *backend, struct shader *s, u32 instance_id)
 
b8 vulkan_renderer_uniform_set (renderer_plugin *backend, struct shader *frontend_shader, struct shader_uniform *uniform, const void *value)
 
b8 vulkan_renderer_texture_map_resources_acquire (renderer_plugin *backend, texture_map *map)
 
void vulkan_renderer_texture_map_resources_release (renderer_plugin *backend, texture_map *map)
 
b8 vulkan_renderer_texture_map_resources_refresh (renderer_plugin *plugin, texture_map *map)
 
b8 vulkan_renderpass_create (renderer_plugin *backend, const renderpass_config *config, renderpass *out_renderpass)
 
void vulkan_renderpass_destroy (renderer_plugin *backend, renderpass *pass)
 
b8 vulkan_renderer_render_target_create (renderer_plugin *backend, u8 attachment_count, render_target_attachment *attachments, renderpass *pass, u32 width, u32 height, render_target *out_target)
 
void vulkan_renderer_render_target_destroy (renderer_plugin *backend, render_target *target, b8 free_internal_memory)
 
texturevulkan_renderer_window_attachment_get (renderer_plugin *backend, u8 index)
 
texturevulkan_renderer_depth_attachment_get (renderer_plugin *backend, u8 index)
 
u8 vulkan_renderer_window_attachment_index_get (renderer_plugin *backend)
 
u8 vulkan_renderer_window_attachment_count_get (renderer_plugin *backend)
 
b8 vulkan_renderer_is_multithreaded (renderer_plugin *backend)
 
b8 vulkan_renderer_flag_enabled_get (renderer_plugin *backend, renderer_config_flags flag)
 
void vulkan_renderer_flag_enabled_set (renderer_plugin *backend, renderer_config_flags flag, b8 enabled)
 
b8 vulkan_buffer_create_internal (renderer_plugin *backend, renderbuffer *buffer)
 
void vulkan_buffer_destroy_internal (renderer_plugin *backend, renderbuffer *buffer)
 
b8 vulkan_buffer_resize (renderer_plugin *backend, renderbuffer *buffer, u64 new_size)
 
b8 vulkan_buffer_bind (renderer_plugin *backend, renderbuffer *buffer, u64 offset)
 
b8 vulkan_buffer_unbind (renderer_plugin *backend, renderbuffer *buffer)
 
void * vulkan_buffer_map_memory (renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size)
 
void vulkan_buffer_unmap_memory (renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size)
 
b8 vulkan_buffer_flush (renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size)
 
b8 vulkan_buffer_read (renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size, void **out_memory)
 
b8 vulkan_buffer_load_range (renderer_plugin *backend, renderbuffer *buffer, u64 offset, u64 size, const void *data)
 
b8 vulkan_buffer_copy_range (renderer_plugin *backend, renderbuffer *source, u64 source_offset, renderbuffer *dest, u64 dest_offset, u64 size)
 
b8 vulkan_buffer_draw (renderer_plugin *backend, renderbuffer *buffer, u64 offset, u32 element_count, b8 bind_only)
 

Detailed Description

This file contains the Vulkan implementation of the renderer backend. All Vulkan calls are made behind this facade to keep the rest of the engine unaware about the inner workings of Vulkan.

Author
Travis Vroman (travi.nosp@m.s@ko.nosp@m.hieng.nosp@m.ine..nosp@m.com)
Version
1.0
Date
2022-01-11

Function Documentation

◆ vulkan_buffer_bind()

b8 vulkan_buffer_bind ( renderer_plugin backend,
renderbuffer buffer,
u64  offset 
)

◆ vulkan_buffer_copy_range()

b8 vulkan_buffer_copy_range ( renderer_plugin backend,
renderbuffer source,
u64  source_offset,
renderbuffer dest,
u64  dest_offset,
u64  size 
)

◆ vulkan_buffer_create_internal()

b8 vulkan_buffer_create_internal ( renderer_plugin backend,
renderbuffer buffer 
)

◆ vulkan_buffer_destroy_internal()

void vulkan_buffer_destroy_internal ( renderer_plugin backend,
renderbuffer buffer 
)

◆ vulkan_buffer_draw()

b8 vulkan_buffer_draw ( renderer_plugin backend,
renderbuffer buffer,
u64  offset,
u32  element_count,
b8  bind_only 
)

◆ vulkan_buffer_flush()

b8 vulkan_buffer_flush ( renderer_plugin backend,
renderbuffer buffer,
u64  offset,
u64  size 
)

◆ vulkan_buffer_load_range()

b8 vulkan_buffer_load_range ( renderer_plugin backend,
renderbuffer buffer,
u64  offset,
u64  size,
const void *  data 
)

◆ vulkan_buffer_map_memory()

void* vulkan_buffer_map_memory ( renderer_plugin backend,
renderbuffer buffer,
u64  offset,
u64  size 
)

◆ vulkan_buffer_read()

b8 vulkan_buffer_read ( renderer_plugin backend,
renderbuffer buffer,
u64  offset,
u64  size,
void **  out_memory 
)

◆ vulkan_buffer_resize()

b8 vulkan_buffer_resize ( renderer_plugin backend,
renderbuffer buffer,
u64  new_size 
)

◆ vulkan_buffer_unbind()

b8 vulkan_buffer_unbind ( renderer_plugin backend,
renderbuffer buffer 
)

◆ vulkan_buffer_unmap_memory()

void vulkan_buffer_unmap_memory ( renderer_plugin backend,
renderbuffer buffer,
u64  offset,
u64  size 
)

◆ vulkan_renderer_backend_initialize()

b8 vulkan_renderer_backend_initialize ( renderer_plugin backend,
const renderer_backend_config config,
u8 out_window_render_target_count 
)

◆ vulkan_renderer_backend_on_resized()

void vulkan_renderer_backend_on_resized ( renderer_plugin backend,
u16  width,
u16  height 
)

◆ vulkan_renderer_backend_shutdown()

void vulkan_renderer_backend_shutdown ( renderer_plugin backend)

◆ vulkan_renderer_begin()

b8 vulkan_renderer_begin ( renderer_plugin plugin,
struct frame_data p_frame_data 
)

◆ vulkan_renderer_depth_attachment_get()

texture* vulkan_renderer_depth_attachment_get ( renderer_plugin backend,
u8  index 
)

◆ vulkan_renderer_end()

b8 vulkan_renderer_end ( renderer_plugin plugin,
struct frame_data p_frame_data 
)

◆ vulkan_renderer_flag_enabled_get()

b8 vulkan_renderer_flag_enabled_get ( renderer_plugin backend,
renderer_config_flags  flag 
)

◆ vulkan_renderer_flag_enabled_set()

void vulkan_renderer_flag_enabled_set ( renderer_plugin backend,
renderer_config_flags  flag,
b8  enabled 
)

◆ vulkan_renderer_frame_prepare()

b8 vulkan_renderer_frame_prepare ( renderer_plugin backend,
struct frame_data p_frame_data 
)

◆ vulkan_renderer_geometry_create()

b8 vulkan_renderer_geometry_create ( renderer_plugin backend,
geometry g 
)

◆ vulkan_renderer_geometry_destroy()

void vulkan_renderer_geometry_destroy ( renderer_plugin backend,
geometry g 
)

◆ vulkan_renderer_geometry_draw()

void vulkan_renderer_geometry_draw ( renderer_plugin backend,
geometry_render_data data 
)

◆ vulkan_renderer_geometry_upload()

b8 vulkan_renderer_geometry_upload ( renderer_plugin backend,
geometry g,
u32  vertex_offset,
u32  vertex_size,
u32  index_offset,
u32  index_range 
)

◆ vulkan_renderer_geometry_vertex_update()

void vulkan_renderer_geometry_vertex_update ( renderer_plugin plugin,
geometry g,
u32  offset,
u32  vertex_count,
void *  vertices 
)

◆ vulkan_renderer_is_multithreaded()

b8 vulkan_renderer_is_multithreaded ( renderer_plugin backend)

◆ vulkan_renderer_present()

b8 vulkan_renderer_present ( renderer_plugin backend,
struct frame_data p_frame_data 
)

◆ vulkan_renderer_render_target_create()

b8 vulkan_renderer_render_target_create ( renderer_plugin backend,
u8  attachment_count,
render_target_attachment attachments,
renderpass pass,
u32  width,
u32  height,
render_target out_target 
)

◆ vulkan_renderer_render_target_destroy()

void vulkan_renderer_render_target_destroy ( renderer_plugin backend,
render_target target,
b8  free_internal_memory 
)

◆ vulkan_renderer_renderpass_begin()

b8 vulkan_renderer_renderpass_begin ( renderer_plugin backend,
renderpass pass,
render_target target 
)

◆ vulkan_renderer_renderpass_end()

b8 vulkan_renderer_renderpass_end ( renderer_plugin backend,
renderpass pass 
)

◆ vulkan_renderer_scissor_reset()

void vulkan_renderer_scissor_reset ( renderer_plugin backend)

◆ vulkan_renderer_scissor_set()

void vulkan_renderer_scissor_set ( renderer_plugin backend,
vec4  rect 
)

◆ vulkan_renderer_shader_apply_globals()

b8 vulkan_renderer_shader_apply_globals ( renderer_plugin backend,
struct shader s,
b8  needs_update 
)

◆ vulkan_renderer_shader_apply_instance()

b8 vulkan_renderer_shader_apply_instance ( renderer_plugin backend,
struct shader s,
b8  needs_update 
)

◆ vulkan_renderer_shader_bind_globals()

b8 vulkan_renderer_shader_bind_globals ( renderer_plugin backend,
struct shader s 
)

◆ vulkan_renderer_shader_bind_instance()

b8 vulkan_renderer_shader_bind_instance ( renderer_plugin backend,
struct shader s,
u32  instance_id 
)

◆ vulkan_renderer_shader_create()

b8 vulkan_renderer_shader_create ( renderer_plugin backend,
struct shader shader,
const shader_config config,
renderpass pass,
u8  stage_count,
const char **  stage_filenames,
shader_stage stages 
)

◆ vulkan_renderer_shader_destroy()

void vulkan_renderer_shader_destroy ( renderer_plugin backend,
struct shader shader 
)

◆ vulkan_renderer_shader_initialize()

b8 vulkan_renderer_shader_initialize ( renderer_plugin backend,
struct shader shader 
)

◆ vulkan_renderer_shader_instance_resources_acquire()

b8 vulkan_renderer_shader_instance_resources_acquire ( renderer_plugin backend,
struct shader s,
u32  texture_map_count,
texture_map **  maps,
u32 out_instance_id 
)

◆ vulkan_renderer_shader_instance_resources_release()

b8 vulkan_renderer_shader_instance_resources_release ( renderer_plugin backend,
struct shader s,
u32  instance_id 
)

◆ vulkan_renderer_shader_use()

b8 vulkan_renderer_shader_use ( renderer_plugin backend,
struct shader shader 
)

◆ vulkan_renderer_texture_create()

void vulkan_renderer_texture_create ( renderer_plugin backend,
const u8 pixels,
texture texture 
)

◆ vulkan_renderer_texture_create_writeable()

void vulkan_renderer_texture_create_writeable ( renderer_plugin backend,
texture t 
)

◆ vulkan_renderer_texture_destroy()

void vulkan_renderer_texture_destroy ( renderer_plugin backend,
texture texture 
)

◆ vulkan_renderer_texture_map_resources_acquire()

b8 vulkan_renderer_texture_map_resources_acquire ( renderer_plugin backend,
texture_map map 
)

◆ vulkan_renderer_texture_map_resources_refresh()

b8 vulkan_renderer_texture_map_resources_refresh ( renderer_plugin plugin,
texture_map map 
)

◆ vulkan_renderer_texture_map_resources_release()

void vulkan_renderer_texture_map_resources_release ( renderer_plugin backend,
texture_map map 
)

◆ vulkan_renderer_texture_read_data()

void vulkan_renderer_texture_read_data ( renderer_plugin backend,
texture t,
u32  offset,
u32  size,
void **  out_memory 
)

◆ vulkan_renderer_texture_read_pixel()

void vulkan_renderer_texture_read_pixel ( renderer_plugin backend,
texture t,
u32  x,
u32  y,
u8 **  out_rgba 
)

◆ vulkan_renderer_texture_resize()

void vulkan_renderer_texture_resize ( renderer_plugin backend,
texture t,
u32  new_width,
u32  new_height 
)

◆ vulkan_renderer_texture_write_data()

void vulkan_renderer_texture_write_data ( renderer_plugin backend,
texture t,
u32  offset,
u32  size,
const u8 pixels 
)

◆ vulkan_renderer_uniform_set()

b8 vulkan_renderer_uniform_set ( renderer_plugin backend,
struct shader frontend_shader,
struct shader_uniform uniform,
const void *  value 
)

◆ vulkan_renderer_viewport_reset()

void vulkan_renderer_viewport_reset ( renderer_plugin backend)

◆ vulkan_renderer_viewport_set()

void vulkan_renderer_viewport_set ( renderer_plugin backend,
vec4  rect 
)

◆ vulkan_renderer_winding_set()

void vulkan_renderer_winding_set ( struct renderer_plugin plugin,
renderer_winding  winding 
)

◆ vulkan_renderer_window_attachment_count_get()

u8 vulkan_renderer_window_attachment_count_get ( renderer_plugin backend)

◆ vulkan_renderer_window_attachment_get()

texture* vulkan_renderer_window_attachment_get ( renderer_plugin backend,
u8  index 
)

◆ vulkan_renderer_window_attachment_index_get()

u8 vulkan_renderer_window_attachment_index_get ( renderer_plugin backend)

◆ vulkan_renderpass_create()

b8 vulkan_renderpass_create ( renderer_plugin backend,
const renderpass_config config,
renderpass out_renderpass 
)

◆ vulkan_renderpass_destroy()

void vulkan_renderpass_destroy ( renderer_plugin backend,
renderpass pass 
)