Create a new descriptor pool.
201{
202 std::vector<vk::DescriptorPoolSize> pool_sizes = {
203 { vk::DescriptorType::eStorageBuffer, max_sets * 4 },
204
205 { vk::DescriptorType::eUniformBuffer, max_sets * 2 },
206
207 { vk::DescriptorType::eStorageImage, max_sets * 2 },
208
209 { vk::DescriptorType::eCombinedImageSampler, max_sets * 2 },
210 };
211
212 vk::DescriptorPoolCreateInfo pool_info;
213 pool_info.flags = vk::DescriptorPoolCreateFlagBits::eFreeDescriptorSet;
214 pool_info.maxSets = max_sets;
215 pool_info.poolSizeCount = static_cast<uint32_t>(pool_sizes.size());
216 pool_info.pPoolSizes = pool_sizes.data();
217
218 vk::DescriptorPool pool;
219 try {
220 pool = device.createDescriptorPool(pool_info);
221 } catch (const vk::SystemError& e) {
223 "Failed to create descriptor pool: {}", e.what());
224 return nullptr;
225 }
226
228 "Created descriptor pool (max sets: {})", max_sets);
229
230 return pool;
231}
#define MF_ERROR(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.