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

◆ cleanup()

void MayaFlux::Core::BackendResourceManager::cleanup ( )

Definition at line 1365 of file BackendResoureManager.cpp.

1366{
1367 for (auto& [hash, sampler] : m_sampler_cache) {
1368 if (sampler) {
1369 m_context.get_device().destroySampler(sampler);
1370 }
1371 }
1372 m_sampler_cache.clear();
1373
1375 m_context.get_device().destroySemaphore(m_deferred_semaphore);
1376 m_deferred_semaphore = nullptr;
1377 }
1378
1379 const auto device = m_context.get_device();
1380 auto release_slots = [&device](Buffers::VKBuffer& owner) {
1381 auto& slots = owner.get_buffer_resources().back_buffers;
1382 for (auto& slot : slots) {
1383 if (slot.mapped_ptr && slot.memory) {
1384 device.unmapMemory(slot.memory);
1385 }
1386 if (slot.buffer) {
1387 device.destroyBuffer(slot.buffer);
1388 }
1389 if (slot.memory) {
1390 device.freeMemory(slot.memory);
1391 }
1392 }
1393 slots.clear();
1394 };
1395
1396 auto buffers = m_managed_buffers;
1397 for (const auto& buffer : buffers) {
1398 if (!buffer) {
1399 continue;
1400 }
1401 release_slots(*buffer);
1402 if (buffer->is_initialized()) {
1404 }
1405 }
1406 m_managed_buffers.clear();
1407}
std::shared_ptr< NetworkGeometryBuffer > buffer
vk::PhysicalDevice device
Definition VKDevice.cpp:121
void cleanup_buffer(const std::shared_ptr< Buffers::VKBuffer > &buffer)
Cleanup a buffer and release associated resources.
std::unordered_map< size_t, vk::Sampler > m_sampler_cache
std::vector< std::shared_ptr< Buffers::VKBuffer > > m_managed_buffers
vk::Device get_device() const
Get logical device.
Definition VKContext.hpp:49

References buffer, cleanup_buffer(), device, MayaFlux::Core::VKContext::get_device(), m_context, m_deferred_semaphore, m_managed_buffers, and m_sampler_cache.

+ Here is the call graph for this function: