5 #ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_DESCRIPTOR_POOL_VK_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_DESCRIPTOR_POOL_VK_H_
10 #include "fml/status_or.h"
12 #include "vulkan/vulkan_handles.hpp"
34 const vk::DescriptorSetLayout& layout,
38 std::weak_ptr<const ContextVK> context_;
39 std::vector<vk::UniqueDescriptorPool> pools_;
41 fml::Status CreateNewPool(
const ContextVK& context_vk);
52 :
public std::enable_shared_from_this<DescriptorPoolRecyclerVK> {
63 : context_(
std::move(context)) {}
69 vk::UniqueDescriptorPool
Get();
75 void Reclaim(vk::UniqueDescriptorPool&& pool);
78 std::weak_ptr<ContextVK> context_;
80 Mutex recycled_mutex_;
81 std::vector<vk::UniqueDescriptorPool> recycled_ IPLR_GUARDED_BY(
87 vk::UniqueDescriptorPool Create();
92 std::optional<vk::UniqueDescriptorPool> Reuse();
101 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_DESCRIPTOR_POOL_VK_H_