pipeline_helper: Simplify descriptor objects initialization
This commit is contained in:
		| @@ -85,42 +85,34 @@ public: | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     void Add(const Shader::Info& info, VkShaderStageFlags stage) { |     void Add(const Shader::Info& info, VkShaderStageFlags stage) { | ||||||
|         for ([[maybe_unused]] const auto& desc : info.constant_buffer_descriptors) { |         Add(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, stage, info.constant_buffer_descriptors.size()); | ||||||
|             Add(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, stage); |         Add(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, stage, info.storage_buffers_descriptors.size()); | ||||||
|         } |         Add(VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, stage, info.texture_buffer_descriptors.size()); | ||||||
|         for ([[maybe_unused]] const auto& desc : info.storage_buffers_descriptors) { |         Add(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, stage, info.texture_descriptors.size()); | ||||||
|             Add(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, stage); |         Add(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, stage, info.image_descriptors.size()); | ||||||
|         } |  | ||||||
|         for ([[maybe_unused]] const auto& desc : info.texture_buffer_descriptors) { |  | ||||||
|             Add(VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, stage); |  | ||||||
|         } |  | ||||||
|         for ([[maybe_unused]] const auto& desc : info.texture_descriptors) { |  | ||||||
|             Add(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, stage); |  | ||||||
|         } |  | ||||||
|         for ([[maybe_unused]] const auto& desc : info.image_descriptors) { |  | ||||||
|             Add(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, stage); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     void Add(VkDescriptorType type, VkShaderStageFlags stage) { |     void Add(VkDescriptorType type, VkShaderStageFlags stage, size_t num) { | ||||||
|         bindings.push_back({ |         for (size_t i = 0; i < num; ++i) { | ||||||
|             .binding = binding, |             bindings.push_back({ | ||||||
|             .descriptorType = type, |                 .binding = binding, | ||||||
|             .descriptorCount = 1, |                 .descriptorType = type, | ||||||
|             .stageFlags = stage, |                 .descriptorCount = 1, | ||||||
|             .pImmutableSamplers = nullptr, |                 .stageFlags = stage, | ||||||
|         }); |                 .pImmutableSamplers = nullptr, | ||||||
|         entries.push_back(VkDescriptorUpdateTemplateEntryKHR{ |             }); | ||||||
|             .dstBinding = binding, |             entries.push_back({ | ||||||
|             .dstArrayElement = 0, |                 .dstBinding = binding, | ||||||
|             .descriptorCount = 1, |                 .dstArrayElement = 0, | ||||||
|             .descriptorType = type, |                 .descriptorCount = 1, | ||||||
|             .offset = offset, |                 .descriptorType = type, | ||||||
|             .stride = sizeof(DescriptorUpdateEntry), |                 .offset = offset, | ||||||
|         }); |                 .stride = sizeof(DescriptorUpdateEntry), | ||||||
|         ++binding; |             }); | ||||||
|         offset += sizeof(DescriptorUpdateEntry); |             ++binding; | ||||||
|  |             offset += sizeof(DescriptorUpdateEntry); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     const vk::Device* device{}; |     const vk::Device* device{}; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user