MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ create_pool()

vk::DescriptorPool MayaFlux::Core::VKDescriptorManager::create_pool ( vk::Device  device,
uint32_t  max_sets 
)
private

Create a new descriptor pool.

Parameters
deviceLogical device
max_setsMaximum descriptor sets this pool can allocate
Returns
Pool handle, or null on failure

Pool sizes are calculated to handle common descriptor types:

  • Storage buffers (common in compute)
  • Uniform buffers (common in graphics)
  • Storage images (less common)
  • Combined image samplers (less common)

Definition at line 200 of file VKDescriptorManager.cpp.

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.

References MayaFlux::Journal::Core, MayaFlux::Journal::GraphicsBackend, MF_DEBUG, and MF_ERROR.

Referenced by grow_pools(), and initialize().

+ Here is the caller graph for this function: