From fa9336e6562057c402250d1a71c7a439f3474545 Mon Sep 17 00:00:00 2001
From: Mark Oliver Mints <mmints@uni-koblenz.de>
Date: Tue, 10 Aug 2021 18:28:18 +0200
Subject: [PATCH] [#71] Refactor: implement a create dynamic state

---
 src/vkcv/PipelineManager.cpp | 31 +++++++++++++++++++------------
 src/vkcv/PipelineManager.hpp |  1 +
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp
index ac4d7a22..9d57e189 100644
--- a/src/vkcv/PipelineManager.cpp
+++ b/src/vkcv/PipelineManager.cpp
@@ -298,17 +298,8 @@ namespace vkcv
         }
 
         // Dynamic State
-        std::vector<vk::DynamicState> dynamicStates = {};
-        if(config.m_UseDynamicViewport)
-        {
-            dynamicStates.push_back(vk::DynamicState::eViewport);
-            dynamicStates.push_back(vk::DynamicState::eScissor);
-        }
-
-        vk::PipelineDynamicStateCreateInfo dynamicStateCreateInfo(
-                {},
-                static_cast<uint32_t>(dynamicStates.size()),
-                dynamicStates.data());
+        vk::PipelineDynamicStateCreateInfo dynamicStateCreateInfo =
+                createPipelineDynamicStateCreateInfo(config);
 
         const vk::GraphicsPipelineCreateInfo graphicsPipelineCreateInfo(
                 {},
@@ -651,8 +642,24 @@ namespace vkcv
                 0.0f,
                 1.0f
         );
-
         return pipelineDepthStencilCreateInfo;
     }
 
+    vk::PipelineDynamicStateCreateInfo
+    PipelineManager::createPipelineDynamicStateCreateInfo(const PipelineConfig &config) {
+        std::vector<vk::DynamicState> dynamicStates = {};
+        if(config.m_UseDynamicViewport)
+        {
+            dynamicStates.push_back(vk::DynamicState::eViewport);
+            dynamicStates.push_back(vk::DynamicState::eScissor);
+        }
+
+        vk::PipelineDynamicStateCreateInfo dynamicStateCreateInfo(
+                {},
+                static_cast<uint32_t>(dynamicStates.size()),
+                dynamicStates.data()
+        );
+        return dynamicStateCreateInfo;
+    }
+
 }
diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp
index c638ea0c..95c37504 100644
--- a/src/vkcv/PipelineManager.hpp
+++ b/src/vkcv/PipelineManager.hpp
@@ -130,5 +130,6 @@ namespace vkcv
          */
         vk::PipelineDepthStencilStateCreateInfo createPipelineDepthStencilStateCreateInfo(const PipelineConfig &config);
 
+        vk::PipelineDynamicStateCreateInfo createPipelineDynamicStateCreateInfo(const PipelineConfig &config);
     };
 }
-- 
GitLab