From 16436215ad467f9b0332f5cf3ae0efac294fe34f Mon Sep 17 00:00:00 2001
From: Mark Oliver Mints <mmints@uni-koblenz.de>
Date: Tue, 10 Aug 2021 16:58:38 +0200
Subject: [PATCH] [#71] Refactor: implement a create function for Pipeline
 Input Assembly State Create Info Struct

---
 src/vkcv/PipelineManager.cpp | 17 ++++++++++++-----
 src/vkcv/PipelineManager.hpp |  7 +++++++
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp
index 8803b72a..8cd76a9c 100644
--- a/src/vkcv/PipelineManager.cpp
+++ b/src/vkcv/PipelineManager.cpp
@@ -251,11 +251,8 @@ namespace vkcv
                                                          vertexBindingDescriptions);
 
         // input assembly state
-        vk::PipelineInputAssemblyStateCreateInfo pipelineInputAssemblyStateCreateInfo(
-                {},
-                primitiveTopologyToVulkanPrimitiveTopology(config.m_PrimitiveTopology),
-                false
-        );
+        vk::PipelineInputAssemblyStateCreateInfo pipelineInputAssemblyStateCreateInfo =
+                createPipelineInputAssemblyStateCreateInfo(config);
 
         // viewport state
         vk::Viewport viewport(0.f, 0.f, static_cast<float>(config.m_Width), static_cast<float>(config.m_Height), 0.f, 1.f);
@@ -580,4 +577,14 @@ namespace vkcv
         );
         return pipelineVertexInputStateCreateInfo;
     }
+
+    vk::PipelineInputAssemblyStateCreateInfo
+    PipelineManager::createPipelineInputAssemblyStateCreateInfo(const PipelineConfig &config) {
+        vk::PipelineInputAssemblyStateCreateInfo pipelineInputAssemblyStateCreateInfo(
+                {},
+                primitiveTopologyToVulkanPrimitiveTopology(config.m_PrimitiveTopology),
+                false
+        );
+        return pipelineInputAssemblyStateCreateInfo;
+    }
 }
diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp
index 2d63917a..d0c7f333 100644
--- a/src/vkcv/PipelineManager.hpp
+++ b/src/vkcv/PipelineManager.hpp
@@ -73,5 +73,12 @@ namespace vkcv
                 std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
                 std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions
         );
+
+        /**
+         * Create a Pipeline Input Assembly State Create Info Struct with 'Primitive Restart' disabled.
+         * @param config provides data for primitive topology.
+         * @return Pipeline Input Assembly State Create Info Struct
+         */
+        vk::PipelineInputAssemblyStateCreateInfo createPipelineInputAssemblyStateCreateInfo(const PipelineConfig &config);
     };
 }
-- 
GitLab