| 658 | } |
| 659 | |
| 660 | void updateDescriptorSets( vk::Device const & device, |
| 661 | vk::DescriptorSet const & descriptorSet, |
| 662 | std::vector<std::tuple<vk::DescriptorType, vk::Buffer const &, vk::DeviceSize, vk::BufferView const &>> const & bufferData, |
| 663 | vk::su::TextureData const & textureData, |
| 664 | uint32_t bindingOffset ) |
| 665 | { |
| 666 | std::vector<vk::DescriptorBufferInfo> bufferInfos; |
| 667 | bufferInfos.reserve( bufferData.size() ); |
| 668 | |
| 669 | std::vector<vk::WriteDescriptorSet> writeDescriptorSets; |
| 670 | writeDescriptorSets.reserve( bufferData.size() + 1 ); |
| 671 | uint32_t dstBinding = bindingOffset; |
| 672 | for ( auto const & bd : bufferData ) |
| 673 | { |
| 674 | bufferInfos.emplace_back( std::get<1>( bd ), 0, std::get<2>( bd ) ); |
| 675 | writeDescriptorSets.emplace_back( descriptorSet, dstBinding++, 0, 1, std::get<0>( bd ), nullptr, &bufferInfos.back(), &std::get<3>( bd ) ); |
| 676 | } |
| 677 | |
| 678 | vk::DescriptorImageInfo imageInfo( textureData.sampler, textureData.imageData->imageView, vk::ImageLayout::eShaderReadOnlyOptimal ); |
| 679 | writeDescriptorSets.emplace_back( descriptorSet, dstBinding, 0, vk::DescriptorType::eCombinedImageSampler, imageInfo, nullptr, nullptr ); |
| 680 | |
| 681 | device.updateDescriptorSets( writeDescriptorSets, nullptr ); |
| 682 | } |
| 683 | |
| 684 | void updateDescriptorSets( vk::Device const & device, |
| 685 | vk::DescriptorSet const & descriptorSet, |