MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ flush_pending_buffer_operations()

void MayaFlux::Core::BackendResourceManager::flush_pending_buffer_operations ( )

Flush any pending buffer operations (e.g., uploads/downloads)

Definition at line 197 of file BackendResoureManager.cpp.

198{
199 for (auto& buffer_wrapper : m_managed_buffers) {
200 auto& resources = buffer_wrapper->get_buffer_resources();
201 auto dirty_ranges = buffer_wrapper->get_and_clear_dirty_ranges();
202 if (!dirty_ranges.empty()) {
203 for (auto [offset, size] : dirty_ranges) {
204 vk::MappedMemoryRange range;
205 range.memory = resources.memory;
206 range.offset = offset;
207 range.size = size;
208 if (auto result = m_context.get_device().flushMappedMemoryRanges(1, &range); result != vk::Result::eSuccess) {
210 "Failed to flush mapped memory range: {}", vk::to_string(result));
211 }
212 }
214 "Flushed {} dirty ranges for buffer {:p}", dirty_ranges.size(),
215 (void*)buffer_wrapper->get_buffer());
216 }
217
218 auto invalid_ranges = buffer_wrapper->get_and_clear_invalid_ranges();
219 if (!invalid_ranges.empty()) {
220 for (auto [offset, size] : invalid_ranges) {
221 vk::MappedMemoryRange range;
222 range.memory = buffer_wrapper->get_buffer_resources().memory;
223 range.offset = offset;
224 range.size = size;
225 if (auto result = m_context.get_device().invalidateMappedMemoryRanges(1, &range); result != vk::Result::eSuccess) {
227 "Failed to invalidate mapped memory range: {}", vk::to_string(result));
228 }
229 }
231 "Invalidated {} ranges for buffer {:p}", invalid_ranges.size(),
232 (void*)buffer_wrapper->get_buffer());
233 }
234 }
235}
#define MF_ERROR(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
std::vector< std::shared_ptr< Buffers::VKBuffer > > m_managed_buffers
vk::Device get_device() const
Get logical device.
Definition VKContext.hpp:49
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.

References MayaFlux::Journal::Core, MayaFlux::Core::VKContext::get_device(), MayaFlux::Journal::GraphicsBackend, m_context, m_managed_buffers, MF_DEBUG, and MF_ERROR.

+ Here is the call graph for this function: