summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/video_core/renderer_vulkan/pipeline_helper.h58
1 files changed, 25 insertions, 33 deletions
diff --git a/src/video_core/renderer_vulkan/pipeline_helper.h b/src/video_core/renderer_vulkan/pipeline_helper.h
index a39459b2e..e2167dc4b 100644
--- a/src/video_core/renderer_vulkan/pipeline_helper.h
+++ b/src/video_core/renderer_vulkan/pipeline_helper.h
@@ -85,42 +85,34 @@ public:
}
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);
- }
- for ([[maybe_unused]] const auto& desc : info.storage_buffers_descriptors) {
- Add(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, stage);
- }
- 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);
- }
+ Add(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, stage, info.constant_buffer_descriptors.size());
+ 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());
+ Add(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, stage, info.texture_descriptors.size());
+ Add(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, stage, info.image_descriptors.size());
}
private:
- void Add(VkDescriptorType type, VkShaderStageFlags stage) {
- bindings.push_back({
- .binding = binding,
- .descriptorType = type,
- .descriptorCount = 1,
- .stageFlags = stage,
- .pImmutableSamplers = nullptr,
- });
- entries.push_back(VkDescriptorUpdateTemplateEntryKHR{
- .dstBinding = binding,
- .dstArrayElement = 0,
- .descriptorCount = 1,
- .descriptorType = type,
- .offset = offset,
- .stride = sizeof(DescriptorUpdateEntry),
- });
- ++binding;
- offset += sizeof(DescriptorUpdateEntry);
+ void Add(VkDescriptorType type, VkShaderStageFlags stage, size_t num) {
+ for (size_t i = 0; i < num; ++i) {
+ bindings.push_back({
+ .binding = binding,
+ .descriptorType = type,
+ .descriptorCount = 1,
+ .stageFlags = stage,
+ .pImmutableSamplers = nullptr,
+ });
+ entries.push_back({
+ .dstBinding = binding,
+ .dstArrayElement = 0,
+ .descriptorCount = 1,
+ .descriptorType = type,
+ .offset = offset,
+ .stride = sizeof(DescriptorUpdateEntry),
+ });
+ ++binding;
+ offset += sizeof(DescriptorUpdateEntry);
+ }
}
const vk::Device* device{};