aboutsummaryrefslogtreecommitdiffstats
path: root/include/vk-command-buffer.hpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2026-05-05 00:43:54 +0200
committerladevieq <ladevie.quentin@gmail.com>2026-05-05 00:49:12 +0200
commitc3aac9026951e2a6e35e76b9c7d36e114a281453 (patch)
treebdfc2ab5d5f1d196ba8c7a76371a29911f75913e /include/vk-command-buffer.hpp
parent754249d9c652ef941e6b082d2e86538d15ba9434 (diff)
Remove old api and move api-test content to src and include dirs
Diffstat (limited to 'include/vk-command-buffer.hpp')
-rw-r--r--include/vk-command-buffer.hpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/include/vk-command-buffer.hpp b/include/vk-command-buffer.hpp
new file mode 100644
index 0000000..82d5439
--- /dev/null
+++ b/include/vk-command-buffer.hpp
@@ -0,0 +1,75 @@
+#pragma once
+
+#include "handle.hpp"
+#include "vk-device-types.hpp"
+#include "vec3.hpp"
+
+struct device_texture;
+struct device_buffer;
+struct device_pipeline;
+
+struct dispatch_params {
+ handle<device_pipeline> pipeline;
+ vec3u group_size;
+ vec3u local_group_size;
+};
+
+struct renderpass_params {
+private:
+ struct rect {
+ int32_t x;
+ int32_t y;
+ uint32_t width;
+ uint32_t height;
+ };
+
+public:
+ rect render_area;
+ std::span<handle<device_texture>> color_attachments;
+};
+
+struct draw_params {
+ handle<device_pipeline> pipeline;
+ handle<device_buffer> index_buffer;
+ uint32_t vertex_count;
+ uint32_t vertex_offset;
+ uint32_t instance_count;
+};
+
+struct draw_indexed_params {
+ handle<device_pipeline> pipeline;
+ handle<device_buffer> index_buffer;
+ uint32_t vertex_count;
+ uint32_t vertex_offset;
+ uint32_t index_offset;
+ uint32_t instance_count;
+};
+
+struct command_buffer {
+ void start() const;
+ void stop() const;
+
+ void barrier(handle<device_texture> texture_handle, VkPipelineStageFlags2 stage, VkAccessFlags2 access, VkImageLayout layout) const;
+
+ void copy(handle<device_buffer> buffer_handle, handle<device_texture> texture_handle, uint64_t offset = 0) const;
+
+ VkCommandBuffer vk_command_buffer;
+ QueueType queue_type;
+};
+
+// General purpose queue
+struct graphics_command_buffer: public command_buffer {
+ void dispatch(const dispatch_params& params) const;
+
+ void begin_renderpass(const renderpass_params& params) const;
+ void draw(const draw_params& params) const;
+ void draw_indexed(const draw_indexed_params& params) const;
+ void end_renderpass() const;
+};
+
+struct compute_command_buffer: public command_buffer {
+ void dispatch(const dispatch_params& params);
+};
+
+struct transfer_command_buffer: public command_buffer {
+};