aboutsummaryrefslogtreecommitdiffstats
path: root/include/api-test/command-buffer.hpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2025-01-18 23:48:11 +0100
committerladevieq <ladevie.quentin@gmail.com>2025-01-18 23:48:11 +0100
commitc4a6f4bbaaf86d50d5da103894469a9bc12a1323 (patch)
treee8823d49b1e17f09b4193e53cf3bd311968bf9d0 /include/api-test/command-buffer.hpp
parent7c4abd18f453011c7ad45929f7d0df76d3b3a25a (diff)
Working api prototype
Diffstat (limited to 'include/api-test/command-buffer.hpp')
-rw-r--r--include/api-test/command-buffer.hpp35
1 files changed, 32 insertions, 3 deletions
diff --git a/include/api-test/command-buffer.hpp b/include/api-test/command-buffer.hpp
index f7a18b0..d26fa13 100644
--- a/include/api-test/command-buffer.hpp
+++ b/include/api-test/command-buffer.hpp
@@ -22,10 +22,22 @@ struct device_buffer;
struct device_pipeline;
struct dispatch_params {
+ enum class PARAM_BINDING : uint32_t {
+ PARAM1,
+ PARAM2,
+ PARAM3,
+ PARAM4,
+ PARAM5,
+ PARAM6,
+ PARAM7,
+ PARAM8,
+ MAX
+ };
+
handle<device_pipeline> pipeline;
vec3u group_size;
vec3u local_group_size;
- uint32_t uniforms_offset;
+ uint64_t params[static_cast<uint32_t>(PARAM_BINDING::MAX)];
};
struct renderpass_params {
@@ -41,14 +53,30 @@ 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;
+ uint64_t globals_address = 0U; // TODO: This is probably stupid and should be set elsewhere once ???
+ uint64_t instances_address = 0U;
+ uint64_t uniforms_address = 0U;
+ uint64_t vertex_address = 0U;
+};
+
+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;
- uint32_t uniforms_offset;
+ uint64_t globals_address = 0U; // TODO: This is probably stupid and should be set elsewhere once ???
+ uint64_t instances_address = 0U;
+ uint64_t uniforms_address = 0U;
+ uint64_t vertex_address = 0U;
};
struct command_buffer {
@@ -68,7 +96,8 @@ struct graphics_command_buffer: public command_buffer {
void dispatch(const dispatch_params& params) const;
void begin_renderpass(const renderpass_params& params) const;
- void render(const draw_params& params) const;
+ void draw(const draw_params& params) const;
+ void draw_indexed(const draw_indexed_params& params) const;
void end_renderpass() const;
};