| 48 | } |
| 49 | |
| 50 | vk::DescriptorPool createDescriptorPool( vk::Device const & device, std::vector<vk::DescriptorPoolSize> const & poolSizes ) |
| 51 | { |
| 52 | assert( !poolSizes.empty() ); |
| 53 | uint32_t maxSets = |
| 54 | std::accumulate( poolSizes.begin(), poolSizes.end(), 0, []( uint32_t sum, vk::DescriptorPoolSize const & dps ) { return sum + dps.descriptorCount; } ); |
| 55 | assert( 0 < maxSets ); |
| 56 | |
| 57 | vk::DescriptorPoolCreateInfo descriptorPoolCreateInfo( vk::DescriptorPoolCreateFlagBits::eFreeDescriptorSet, maxSets, poolSizes ); |
| 58 | return device.createDescriptorPool( descriptorPoolCreateInfo ); |
| 59 | } |
| 60 | |
| 61 | vk::DescriptorSetLayout createDescriptorSetLayout( vk::Device const & device, |
| 62 | std::vector<std::tuple<vk::DescriptorType, uint32_t, vk::ShaderStageFlags>> const & bindingData, |