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 uint32_t buffer_count,
35 uint32_t sampler_count,
36 uint32_t subpass_count,
37 const std::vector<vk::DescriptorSetLayout>& layouts);
40 std::weak_ptr<const ContextVK> context_;
41 vk::UniqueDescriptorPool pool_ = {};
42 uint32_t allocated_capacity_ = 0;
68 :
public std::enable_shared_from_this<DescriptorPoolRecyclerVK> {
79 : context_(
std::move(context)) {}
92 void Reclaim(vk::UniqueDescriptorPool&& pool, uint32_t allocated_capacity);
95 std::weak_ptr<ContextVK> context_;
97 Mutex recycled_mutex_;
98 std::vector<DescriptorPoolAndSize> recycled_ IPLR_GUARDED_BY(recycled_mutex_);
115 std::optional<DescriptorPoolAndSize> Reuse(uint32_t minimum_capacity);
124 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_DESCRIPTOR_POOL_VK_H_