Lugdunum  0.1.0
DescriptorPool.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <vector>
5 
7 
8 namespace lug {
9 namespace Graphics {
10 namespace Vulkan {
11 namespace API {
12 
13 class Device;
14 
15 namespace Builder {
16 
18 public:
19  DescriptorPool(const API::Device& device);
20 
21  DescriptorPool(const DescriptorPool&) = delete;
22  DescriptorPool(DescriptorPool&&) = delete;
23 
24  DescriptorPool& operator=(const DescriptorPool&) = delete;
26 
27  ~DescriptorPool() = default;
28 
29  // Setters
30  void setFlags(VkDescriptorPoolCreateFlags flags);
31  void setMaxSets(uint32_t maxSets);
32  void setPoolSizes(const std::vector<VkDescriptorPoolSize>& poolSizes);
33 
34  // Build methods
35  bool build(API::DescriptorPool& instance, VkResult* returnResult = nullptr);
36  std::unique_ptr<API::DescriptorPool> build(VkResult* returnResult = nullptr);
37 
38 private:
40 
41  VkDescriptorPoolCreateFlags _flags{VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT};
42  uint32_t _maxSets{0};
43  std::vector<VkDescriptorPoolSize> _poolSizes{};
44 };
45 
47 
48 } // Builder
49 } // API
50 } // Vulkan
51 } // Graphics
52 } // lug
bool build(API::DescriptorPool &instance, VkResult *returnResult=nullptr)
void setFlags(VkDescriptorPoolCreateFlags flags)
DescriptorPool & operator=(const DescriptorPool &)=delete
std::vector< VkDescriptorPoolSize > _poolSizes
void setPoolSizes(const std::vector< VkDescriptorPoolSize > &poolSizes)