From a33014022ed86c27ba4faa243fa6d0a69df75564 Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
Date: Sun, 11 Apr 2021 20:57:37 -0300
Subject: [PATCH] pipeline_helper: Simplify descriptor objects initialization

---
 .../renderer_vulkan/pipeline_helper.h         | 58 ++++++++-----------
 1 file 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{};