From bbb71f0859e1109779db25638f12c0f37de95443 Mon Sep 17 00:00:00 2001 From: Jason Fielder Date: Tue, 7 Nov 2023 07:53:20 +0100 Subject: [PATCH] Metal: Ensure pending MTLSafeFreeList is released on shutdown Ensure that on closing of the application, all pending SafeFreeLists are released. A new change to ensure release of SafeFreeLists was always deferred until full completion of GPU buffers meant that a pending MTLSafeFreeList container may not be released on shutdown. This change ensures that the container is fully destructed on final shutdown. Authored by Apple: Michael Parkin-White Pull Request: https://projects.blender.org/blender/blender/pulls/114532 --- source/blender/gpu/metal/mtl_memory.mm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/blender/gpu/metal/mtl_memory.mm b/source/blender/gpu/metal/mtl_memory.mm index b2ddefe13fa..c95c6a6f113 100644 --- a/source/blender/gpu/metal/mtl_memory.mm +++ b/source/blender/gpu/metal/mtl_memory.mm @@ -70,10 +70,17 @@ void MTLBufferPool::free() delete completed_safelist_queue_[safe_pool_free_index]; } completed_safelist_queue_.clear(); + + safelist_lock_.lock(); if (current_free_list_ != nullptr) { delete current_free_list_; current_free_list_ = nullptr; } + if (prev_free_buffer_list_ != nullptr) { + delete prev_free_buffer_list_; + prev_free_buffer_list_ = nullptr; + } + safelist_lock_.unlock(); /* Clear and release memory pools. */ for (std::multiset *buffer_pool :