kiba-engine
command.h
1 #pragma once
2 
3 #include <kiba/gpu/types.h>
4 
5 KB_API b8 gpu_command_encoder_create(gpu_command_encoder *encoder,
6  gpu_device device,
8 KB_API void gpu_command_encoder_destroy(gpu_command_encoder encoder);
9 KB_LOCAL void gpu_command_encoder_destroy_internal(gpu_command_encoder encoder);
10 
11 KB_API b8 gpu_cmd_begin(gpu_command_encoder encoder);
12 KB_API b8 gpu_begin_render_pass(gpu_command_encoder encoder, struct gpu_render_pass_descriptor desc);
13 KB_API b8 gpu_cmd_copy_buffer_to_buffer(gpu_command_encoder encoder,
14  gpu_buffer src,
15  gpu_buffer dst,
16  usize src_offset,
17  usize dst_offset,
18  usize size);
19 KB_API void gpu_cmd_bind_pipeline(gpu_command_encoder encoder, gpu_pipeline pipeline);
20 KB_API void gpu_cmd_bind_vertex_buffer(gpu_command_encoder encoder, usize slot, gpu_buffer buffer);
21 KB_API void gpu_cmd_bind_index_buffer(gpu_command_encoder encoder, gpu_buffer buffer, enum gpu_index_format format);
22 KB_API void gpu_cmd_draw(gpu_command_encoder encoder,
23  usize vertex_count,
24  usize instance_count,
25  usize first_vertex,
26  usize first_instance);
27 KB_API void gpu_cmd_draw_indexed(gpu_command_encoder encoder,
28  usize first_index,
29  usize index_count,
30  usize first_vertex,
31  usize first_instance,
32  usize instance_count);
33 KB_API b8 gpu_end_render_pass(gpu_command_encoder encoder);
34 KB_API void gpu_cmd_debug_marker_begin(gpu_command_encoder encoder, const char *label);
35 KB_API void gpu_cmd_debug_marker_insert(gpu_command_encoder encoder, const char *label);
36 KB_API void gpu_cmd_debug_marker_end(gpu_command_encoder encoder);
37 KB_API b8 gpu_cmd_end(gpu_command_encoder encoder);
38 
39 KB_API b8 gpu_command_encoder_submit(gpu_command_encoder encoder);
40 
41 KB_LOCAL b8 gpu_backend_command_encoder_create(struct gpu_backend_command_encoder *encoder,
42  struct gpu_backend_device *device,
43  struct gpu_command_encoder_descriptor desc);
44 KB_LOCAL void gpu_backend_command_encoder_destroy(struct gpu_backend_command_encoder *encoder,
45  struct gpu_backend_device *device);
46 
47 KB_LOCAL b8 gpu_backend_cmd_begin(struct gpu_backend_command_encoder *encoder);
48 KB_LOCAL void gpu_backend_cmd_copy_buffer_to_buffer(struct gpu_backend_command_encoder *encoder,
49  struct gpu_backend_buffer *src,
50  struct gpu_backend_buffer *dst,
51  usize src_offset,
52  usize dst_offset,
53  usize size);
54 KB_LOCAL b8 gpu_backend_begin_render_pass(struct gpu_backend_command_encoder *encoder,
55  struct gpu_backend_device *device,
56  struct gpu_render_pass_descriptor desc);
57 KB_LOCAL b8 gpu_backend_end_render_pass(struct gpu_backend_command_encoder *encoder);
58 KB_LOCAL b8 gpu_backend_cmd_end(struct gpu_backend_command_encoder *encoder);
59 
60 KB_LOCAL b8 gpu_backend_insert_texture_barriers(struct gpu_backend_command_encoder *encoder,
61  array_of(const struct gpu_texture_barrier) barriers);
62 KB_LOCAL b8 gpu_backend_insert_buffer_barriers(struct gpu_backend_command_encoder *encoder,
63  array_of(const struct gpu_buffer_barrier) barriers);
64 
65 KB_LOCAL b8 gpu_backend_command_encoder_submit(struct gpu_backend_command_encoder *encoder,
66  struct gpu_backend_device *device);