1366{
1368 if (sampler) {
1370 }
1371 }
1373
1377 }
1378
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
1397 for (
const auto&
buffer : buffers) {
1399 continue;
1400 }
1402 if (
buffer->is_initialized()) {
1404 }
1405 }
1407}
std::shared_ptr< NetworkGeometryBuffer > buffer
vk::PhysicalDevice device
vk::Semaphore m_deferred_semaphore
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.