From 66d6fa5c367f346adb7f4e2780af66f2e62cb28e Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 30 Dec 2023 23:03:51 +0300 Subject: [PATCH] WebGPU wrapper wip: add command buffer object --- .../include/psemek/wgpu/command_buffer.hpp | 35 +++++++++++++++++++ libs/wgpu/source/command_buffer.cpp | 22 ++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 libs/wgpu/include/psemek/wgpu/command_buffer.hpp create mode 100644 libs/wgpu/source/command_buffer.cpp diff --git a/libs/wgpu/include/psemek/wgpu/command_buffer.hpp b/libs/wgpu/include/psemek/wgpu/command_buffer.hpp new file mode 100644 index 00000000..1fb63acc --- /dev/null +++ b/libs/wgpu/include/psemek/wgpu/command_buffer.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include +#include + +#include + +namespace psemek::wgpu +{ + + struct command_buffer + : detail::object + { + using detail::object::object; + + struct descriptor + { + std::vector chain = {}; + std::string label = {}; + }; + + void set_label(std::string const & label); + + static void reference(void * ptr); + static void release(void * ptr); + + private: + explicit command_buffer(void * ptr) + : detail::object(ptr) + {} + + friend struct command_encoder; + }; + +} diff --git a/libs/wgpu/source/command_buffer.cpp b/libs/wgpu/source/command_buffer.cpp new file mode 100644 index 00000000..9a2c43d2 --- /dev/null +++ b/libs/wgpu/source/command_buffer.cpp @@ -0,0 +1,22 @@ +#include +#include + +namespace psemek::wgpu +{ + + void command_buffer::set_label(std::string const & label) + { + wgpuCommandBufferSetLabel((WGPUCommandBuffer)get(), label.data()); + } + + void command_buffer::reference(void * ptr) + { + wgpuCommandBufferReference((WGPUCommandBuffer)ptr); + } + + void command_buffer::release(void * ptr) + { + wgpuCommandBufferRelease((WGPUCommandBuffer)ptr); + } + +}