5 #ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMMAND_POOL_VK_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMMAND_POOL_VK_H_
11 #include "fml/macros.h"
19 class CommandPoolRecyclerVK;
40 std::weak_ptr<ContextVK>& context)
41 : pool_(
std::move(pool)), context_(context) {}
66 vk::UniqueCommandPool pool_ IPLR_GUARDED_BY(pool_mutex_);
67 std::weak_ptr<ContextVK>& context_;
70 std::vector<vk::UniqueCommandBuffer> collected_buffers_
71 IPLR_GUARDED_BY(pool_mutex_);
99 :
public std::enable_shared_from_this<CommandPoolRecyclerVK> {
113 : context_(
std::move(context)) {}
118 std::shared_ptr<CommandPoolVK>
Get();
123 void Reclaim(vk::UniqueCommandPool&& pool);
129 std::weak_ptr<ContextVK> context_;
131 Mutex recycled_mutex_;
132 std::vector<vk::UniqueCommandPool> recycled_ IPLR_GUARDED_BY(recycled_mutex_);
137 std::optional<vk::UniqueCommandPool> Create();
142 std::optional<vk::UniqueCommandPool> Reuse();
151 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMMAND_POOL_VK_H_