10 #include "fml/macros.h"
18 class CommandPoolRecyclerVK;
39 std::weak_ptr<ContextVK>& context)
40 : pool_(
std::move(pool)), context_(context) {}
63 vk::UniqueCommandPool pool_ IPLR_GUARDED_BY(pool_mutex_);
64 std::weak_ptr<ContextVK>& context_;
67 std::vector<vk::UniqueCommandBuffer> collected_buffers_
68 IPLR_GUARDED_BY(pool_mutex_);
96 :
public std::enable_shared_from_this<CommandPoolRecyclerVK> {
110 : context_(
std::move(context)) {}
115 std::shared_ptr<CommandPoolVK>
Get();
120 void Reclaim(vk::UniqueCommandPool&& pool);
126 std::weak_ptr<ContextVK> context_;
128 Mutex recycled_mutex_;
129 std::vector<vk::UniqueCommandPool> recycled_ IPLR_GUARDED_BY(recycled_mutex_);
134 std::optional<vk::UniqueCommandPool> Create();
139 std::optional<vk::UniqueCommandPool> Reuse();