20{
21 buffer_service->initialize_buffer = [this](const std::shared_ptr<void>& vk_buf) -> void {
22 auto buffer = std::static_pointer_cast<Buffers::VKBuffer>(vk_buf);
24 };
25
26 buffer_service->destroy_buffer = [this](const std::shared_ptr<void>& vk_buf) {
27 auto buffer = std::static_pointer_cast<Buffers::VKBuffer>(vk_buf);
29 };
30
31 buffer_service->execute_immediate = [this](const std::function<void(void*)>& recorder) {
33 recorder(static_cast<void*>(cmd));
34 });
35 };
36
37 buffer_service->record_deferred = [this](const std::function<void(void*)>& recorder) {
39 recorder(static_cast<void*>(cmd));
40 });
41 };
42
43 buffer_service->flush_range = [this](void* memory, size_t offset, size_t size) {
44 vk::DeviceMemory mem(reinterpret_cast<VkDeviceMemory>(memory));
45 vk::MappedMemoryRange range { mem, offset, size == 0 ? VK_WHOLE_SIZE : size };
46 if (
auto result =
m_context.
get_device().flushMappedMemoryRanges(1, &range); result != vk::Result::eSuccess) {
48 "Failed to flush mapped memory range: {}", vk::to_string(result));
49 }
50 };
51
52 buffer_service->invalidate_range = [this](void* memory, size_t offset, size_t size) {
53 vk::DeviceMemory mem(reinterpret_cast<VkDeviceMemory>(memory));
54 vk::MappedMemoryRange range { mem, offset, size == 0 ? VK_WHOLE_SIZE : size };
55 if (
auto result =
m_context.
get_device().invalidateMappedMemoryRanges(1, &range); result != vk::Result::eSuccess) {
57 "Failed to invalidate mapped memory range: {}", vk::to_string(result));
58 }
59 };
60
61 buffer_service->map_buffer = [this](void* memory, size_t offset, size_t size) -> void* {
62 vk::DeviceMemory mem(reinterpret_cast<VkDeviceMemory>(memory));
64 };
65
66 buffer_service->unmap_buffer = [this](void* memory) {
67 vk::DeviceMemory mem(reinterpret_cast<VkDeviceMemory>(memory));
69 };
70}
#define MF_ERROR(comp, ctx,...)
void cleanup_buffer(const std::shared_ptr< Buffers::VKBuffer > &buffer)
Cleanup a buffer and release associated resources.
void execute_immediate_commands(const std::function< void(vk::CommandBuffer)> &recorder)
Execute immediate command recording for buffer operations.
void initialize_buffer(const std::shared_ptr< Buffers::VKBuffer > &buffer)
Initialize a buffer for use with the graphics backend.
void record_deferred_commands(const std::function< void(vk::CommandBuffer)> &recorder)
Record deferred command recording for buffer operations.
vk::Device get_device() const
Get logical device.
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.