37 std::vector<std::unique_ptr<VulkanDescriptorLayout>>&& descriptor_layouts,
40 unsigned int pool_size = 1024,
41 unsigned int max_unbounded_array_size = 104857);
63 [[nodiscard]]
unsigned poolSize()
const noexcept;
69 [[nodiscard]] std::size_t pools()
const noexcept;
75 [[nodiscard]]
const VulkanDevice& device()
const noexcept;
78 [[nodiscard]] std::vector<const VulkanDescriptorLayout*> descriptors()
const noexcept override;
84 [[nodiscard]]
unsigned space()
const noexcept override;
87 [[nodiscard]] ShaderStage shaderStage()
const noexcept override;
90 [[nodiscard]]
unsigned uniforms()
const noexcept override;
93 [[nodiscard]]
unsigned storages()
const noexcept override;
96 [[nodiscard]]
unsigned images()
const noexcept override;
99 [[nodiscard]]
unsigned samplers()
const noexcept override;
102 [[nodiscard]]
unsigned buffers()
const noexcept override;
105 [[nodiscard]]
unsigned staticSamplers()
const noexcept override;
108 [[nodiscard]]
unsigned inputAttachments()
const noexcept override;
111 [[nodiscard]] std::unique_ptr<VulkanDescriptorSet> allocate(
const std::vector<DescriptorBinding>& bindings = {})
const override;
114 [[nodiscard]] std::unique_ptr<VulkanDescriptorSet> allocate(
unsigned descriptors,
const std::vector<DescriptorBinding>& bindings = {})
const override;
117 [[nodiscard]] std::vector<std::unique_ptr<VulkanDescriptorSet>> allocateMultiple(
unsigned descriptor_sets,
118 const std::vector<std::vector<DescriptorBinding>>& bindings = {})
const override;
121 [[nodiscard]] std::vector<std::unique_ptr<VulkanDescriptorSet>> allocateMultiple(
unsigned descriptor_sets,
122 const std::function<std::vector<DescriptorBinding>(
123 unsigned)>& binding_factory)
const override;
126 [[nodiscard]] std::vector<std::unique_ptr<VulkanDescriptorSet>> allocateMultiple(
unsigned descriptor_sets,
127 unsigned descriptors,
128 const std::vector<std::vector<DescriptorBinding>>& bindings = {})
const override;
131 [[nodiscard]] std::vector<std::unique_ptr<VulkanDescriptorSet>> allocateMultiple(
unsigned descriptor_sets,
132 unsigned descriptors,
133 const std::function<std::vector<DescriptorBinding>(
134 unsigned)>& binding_factory)
const override;
141 std::unique_ptr<Impl> m_impl;