From eb28d851710681c90b3ae771eeaefd880cdf3b55 Mon Sep 17 00:00:00 2001
From: Mark Oliver Mints <mmints@uni-koblenz.de>
Date: Tue, 10 Aug 2021 09:42:04 +0200
Subject: [PATCH] [#71] Rafactor: code formation

---
 src/vkcv/PipelineManager.cpp | 94 +++++++++++++++++-------------------
 1 file changed, 44 insertions(+), 50 deletions(-)

diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp
index 5179309b..50b924f8 100644
--- a/src/vkcv/PipelineManager.cpp
+++ b/src/vkcv/PipelineManager.cpp
@@ -59,26 +59,26 @@ namespace vkcv
             case(DepthTest::Greater):       return vk::CompareOp::eGreater;
             case(DepthTest::GreatherEqual): return vk::CompareOp::eGreaterOrEqual;
             case(DepthTest::Equal):         return vk::CompareOp::eEqual;
-            default: vkcv_log(vkcv::LogLevel::ERROR, "Unknown depth test enum"); return vk::CompareOp::eAlways;
+            default: vkcv_log(LogLevel::ERROR, "Unknown depth test enum"); return vk::CompareOp::eAlways;
         }
     }
 
-    vk::ShaderStageFlagBits shaderStageToVkShaderStage(vkcv::ShaderStage stage) {
+    vk::ShaderStageFlagBits shaderStageToVkShaderStage(ShaderStage stage) {
         switch (stage) {
-            case vkcv::ShaderStage::VERTEX:         return vk::ShaderStageFlagBits::eVertex;
-            case vkcv::ShaderStage::FRAGMENT:       return vk::ShaderStageFlagBits::eFragment;
-            case vkcv::ShaderStage::GEOMETRY:       return vk::ShaderStageFlagBits::eGeometry;
-            case vkcv::ShaderStage::TESS_CONTROL:   return vk::ShaderStageFlagBits::eTessellationControl;
-            case vkcv::ShaderStage::TESS_EVAL:      return vk::ShaderStageFlagBits::eTessellationEvaluation;
-            case vkcv::ShaderStage::COMPUTE:        return vk::ShaderStageFlagBits::eCompute;
-            case vkcv::ShaderStage::TASK:           return vk::ShaderStageFlagBits::eTaskNV;
-            case vkcv::ShaderStage::MESH:           return vk::ShaderStageFlagBits::eMeshNV;
-            default: vkcv_log(vkcv::LogLevel::ERROR, "Unknown shader stage"); return vk::ShaderStageFlagBits::eAll;
+            case ShaderStage::VERTEX:         return vk::ShaderStageFlagBits::eVertex;
+            case ShaderStage::FRAGMENT:       return vk::ShaderStageFlagBits::eFragment;
+            case ShaderStage::GEOMETRY:       return vk::ShaderStageFlagBits::eGeometry;
+            case ShaderStage::TESS_CONTROL:   return vk::ShaderStageFlagBits::eTessellationControl;
+            case ShaderStage::TESS_EVAL:      return vk::ShaderStageFlagBits::eTessellationEvaluation;
+            case ShaderStage::COMPUTE:        return vk::ShaderStageFlagBits::eCompute;
+            case ShaderStage::TASK:           return vk::ShaderStageFlagBits::eTaskNV;
+            case ShaderStage::MESH:           return vk::ShaderStageFlagBits::eMeshNV;
+            default: vkcv_log(LogLevel::ERROR, "Unknown shader stage"); return vk::ShaderStageFlagBits::eAll;
         }
     }
 
     bool createPipelineShaderStageCreateInfo(
-            const vkcv::ShaderProgram&          shaderProgram,
+            const ShaderProgram&          shaderProgram,
             ShaderStage                         stage,
             vk::Device                          device,
             vk::PipelineShaderStageCreateInfo*  outCreateInfo) {
@@ -101,23 +101,22 @@ namespace vkcv
         return true;
     }
 
-    PipelineHandle PipelineManager::createPipeline(const PipelineConfig &config, PassManager& passManager)
-    {
+    PipelineHandle PipelineManager::createPipeline(const PipelineConfig &config, PassManager& passManager) {
         const vk::RenderPass &pass = passManager.getVkPass(config.m_PassHandle);
 
-        const bool existsTaskShader = config.m_ShaderProgram.existsShader(ShaderStage::TASK);
-        const bool existsMeshShader = config.m_ShaderProgram.existsShader(ShaderStage::MESH);
-
-        const bool existsVertexShader = config.m_ShaderProgram.existsShader(ShaderStage::VERTEX);
-
-        const bool validGeometryStages = existsVertexShader || (existsTaskShader && existsMeshShader);
-
+        const bool existsTaskShader     = config.m_ShaderProgram.existsShader(ShaderStage::TASK);
+        const bool existsMeshShader     = config.m_ShaderProgram.existsShader(ShaderStage::MESH);
+        const bool existsVertexShader   = config.m_ShaderProgram.existsShader(ShaderStage::VERTEX);
         const bool existsFragmentShader = config.m_ShaderProgram.existsShader(ShaderStage::FRAGMENT);
+        const bool existsGeometryShader = config.m_ShaderProgram.existsShader(ShaderStage::GEOMETRY);
+        const bool validGeometryStages  = existsVertexShader || (existsTaskShader && existsMeshShader);
+
         if (!validGeometryStages)
         {
             vkcv_log(LogLevel::ERROR, "Requires vertex or task and mesh shader");
             return PipelineHandle();
         }
+
         if (!existsFragmentShader) {
             vkcv_log(LogLevel::ERROR, "Requires fragment shader code");
             return PipelineHandle();
@@ -135,7 +134,7 @@ namespace vkcv
             vk::PipelineShaderStageCreateInfo createInfo;
             const bool success = createPipelineShaderStageCreateInfo(
                     config.m_ShaderProgram,
-                    vkcv::ShaderStage::VERTEX,
+                    ShaderStage::VERTEX,
                     m_Device,
                     &createInfo);
 
@@ -152,7 +151,7 @@ namespace vkcv
             vk::PipelineShaderStageCreateInfo createInfo;
             const bool success = createPipelineShaderStageCreateInfo(
                     config.m_ShaderProgram,
-                    vkcv::ShaderStage::TASK,
+                    ShaderStage::TASK,
                     m_Device,
                     &createInfo);
 
@@ -169,7 +168,7 @@ namespace vkcv
             vk::PipelineShaderStageCreateInfo createInfo;
             const bool success = createPipelineShaderStageCreateInfo(
                     config.m_ShaderProgram,
-                    vkcv::ShaderStage::MESH,
+                    ShaderStage::MESH,
                     m_Device,
                     &createInfo);
 
@@ -182,12 +181,28 @@ namespace vkcv
             }
         }
 
-        // fragment shader stage
         {
             vk::PipelineShaderStageCreateInfo createInfo;
             const bool success = createPipelineShaderStageCreateInfo(
                     config.m_ShaderProgram,
-                    vkcv::ShaderStage::FRAGMENT,
+                    ShaderStage::FRAGMENT,
+                    m_Device,
+                    &createInfo);
+
+            if (success) {
+                shaderStages.push_back(createInfo);
+            }
+            else {
+                destroyShaderModules();
+                return PipelineHandle();
+            }
+        }
+
+        if (existsGeometryShader) {
+            vk::PipelineShaderStageCreateInfo createInfo;
+            const bool success = createPipelineShaderStageCreateInfo(
+                    config.m_ShaderProgram,
+                    ShaderStage::GEOMETRY,
                     m_Device,
                     &createInfo);
 
@@ -223,10 +238,8 @@ namespace vkcv
                                                              vertexBinding.bindingLocation,
                                                              vertexFormatToVulkanFormat(vertexAttachment.format),
                                                              vertexAttachment.offset % vertexBinding.stride);
-
                 }
             }
-
         }
 
         // Handover Containers to PipelineVertexInputStateCreateIngo Struct
@@ -255,7 +268,7 @@ namespace vkcv
             case CullMode::None:    cullMode = vk::CullModeFlagBits::eNone;     break;
             case CullMode::Front:   cullMode = vk::CullModeFlagBits::eFront;    break;
             case CullMode::Back:    cullMode = vk::CullModeFlagBits::eBack;     break;
-            default: vkcv_log(vkcv::LogLevel::ERROR, "Unknown CullMode"); cullMode = vk::CullModeFlagBits::eNone;
+            default: vkcv_log(LogLevel::ERROR, "Unknown CullMode"); cullMode = vk::CullModeFlagBits::eNone;
         }
 
         // rasterization state
@@ -272,6 +285,7 @@ namespace vkcv
                 0.f,
                 1.f
         );
+
         vk::PipelineRasterizationConservativeStateCreateInfoEXT conservativeRasterization;
         if (config.m_UseConservativeRasterization) {
             conservativeRasterization = vk::PipelineRasterizationConservativeStateCreateInfoEXT(
@@ -310,6 +324,7 @@ namespace vkcv
                 vk::BlendOp::eAdd,
                 colorWriteMask
         );
+
         vk::PipelineColorBlendStateCreateInfo pipelineColorBlendStateCreateInfo(
                 {},
                 false,
@@ -331,7 +346,6 @@ namespace vkcv
             pipelineLayoutCreateInfo.pushConstantRangeCount = 0;
         }
 
-
         vk::PipelineLayout vkPipelineLayout{};
         if (m_Device.createPipelineLayout(&pipelineLayoutCreateInfo, nullptr, &vkPipelineLayout) != vk::Result::eSuccess)
         {
@@ -353,7 +367,6 @@ namespace vkcv
         );
 
         const vk::PipelineDepthStencilStateCreateInfo* p_depthStencilCreateInfo = nullptr;
-
         const PassConfig& passConfig = passManager.getPassConfig(config.m_PassHandle);
 
         for (const auto& attachment : passConfig.attachments) {
@@ -375,24 +388,6 @@ namespace vkcv
                 static_cast<uint32_t>(dynamicStates.size()),
                 dynamicStates.data());
 
-        const bool existsGeometryShader = config.m_ShaderProgram.existsShader(vkcv::ShaderStage::GEOMETRY);
-        if (existsGeometryShader) {
-            vk::PipelineShaderStageCreateInfo createInfo;
-            const bool success = createPipelineShaderStageCreateInfo(
-                    config.m_ShaderProgram,
-                    vkcv::ShaderStage::GEOMETRY,
-                    m_Device,
-                    &createInfo);
-
-            if (success) {
-                shaderStages.push_back(createInfo);
-            }
-            else {
-                destroyShaderModules();
-                return PipelineHandle();
-            }
-        }
-
         const vk::GraphicsPipelineCreateInfo graphicsPipelineCreateInfo(
                 {},
                 static_cast<uint32_t>(shaderStages.size()),
@@ -538,7 +533,6 @@ namespace vkcv
 
     // There is an issue for refactoring the Pipeline Manager.
     // While including Compute Pipeline Creation, some private helper functions where introduced:
-
     vk::Result PipelineManager::createShaderModule(vk::ShaderModule &module, const ShaderProgram &shaderProgram, const ShaderStage stage)
     {
         std::vector<char> code = shaderProgram.getShader(stage).shaderCode;
-- 
GitLab