Blender V5.0
vk_descriptor_pools.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "BLI_vector.hh"
12
13#include "vk_descriptor_set.hh"
14
15namespace blender::gpu {
16class VKDevice;
17
32 static constexpr uint32_t POOL_SIZE_STORAGE_BUFFER = 1000;
33 static constexpr uint32_t POOL_SIZE_DESCRIPTOR_SETS = 250;
34 static constexpr uint32_t POOL_SIZE_STORAGE_IMAGE = 250;
35 static constexpr uint32_t POOL_SIZE_COMBINED_IMAGE_SAMPLER = 250;
36 static constexpr uint32_t POOL_SIZE_UNIFORM_BUFFER = 500;
37 static constexpr uint32_t POOL_SIZE_UNIFORM_TEXEL_BUFFER = 100;
38 static constexpr uint32_t POOL_SIZE_INPUT_ATTACHMENT = 100;
39
48 Vector<VkDescriptorPool> recycled_pools_;
50 VkDescriptorPool vk_descriptor_pool_ = VK_NULL_HANDLE;
51 Mutex mutex_;
52
53 public:
55
56 void init(const VKDevice &vk_device);
57
64 VkDescriptorSet allocate(const VkDescriptorSetLayout descriptor_set_layout);
65
69 void recycle(VkDescriptorPool vk_descriptor_pool);
70
71 private:
72 void add_new_pool(const VKDevice &device);
73 void discard_active_pool(VKContext &vk_context);
74 void ensure_pool(const VKDevice &device);
75};
76} // namespace blender::gpu
void init()
void recycle(VkDescriptorPool vk_descriptor_pool)
VkDescriptorSet allocate(const VkDescriptorSetLayout descriptor_set_layout)
std::mutex Mutex
Definition BLI_mutex.hh:47