From 8f9ee8c6dd51c773821e5746d5ba1fe77bec340b Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Mon, 30 Aug 2021 21:23:06 +0200
Subject: [PATCH] [#71] Fixed validation layer problems and moved functions

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 src/vkcv/PipelineManager.cpp | 495 ++++++++++++++++++++---------------
 src/vkcv/PipelineManager.hpp |  86 ------
 2 files changed, 286 insertions(+), 295 deletions(-)

diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp
index ab9ad3f9..3037f263 100644
--- a/src/vkcv/PipelineManager.cpp
+++ b/src/vkcv/PipelineManager.cpp
@@ -123,6 +123,292 @@ namespace vkcv
                 nullptr);
         return true;
     }
+	
+	/**
+	 * Fills Vertex Attribute and Binding Description with the corresponding objects form the Vertex Layout.
+	 * @param vertexAttributeDescriptions
+	 * @param vertexBindingDescriptions
+	 * @param existsVertexShader
+	 * @param config
+	 */
+	void fillVertexInputDescription(
+			std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
+			std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions,
+			const bool existsVertexShader,
+			const PipelineConfig &config) {
+		
+		if (existsVertexShader) {
+			const VertexLayout& layout = config.m_VertexLayout;
+			
+			// iterate over the layout's specified, mutually exclusive buffer bindings that make up a vertex buffer
+			for (const auto& vertexBinding : layout.vertexBindings)
+			{
+				vertexBindingDescriptions.emplace_back(vertexBinding.bindingLocation,
+													   vertexBinding.stride,
+													   vk::VertexInputRate::eVertex);
+				
+				// iterate over the bindings' specified, mutually exclusive vertex input attachments that make up a vertex
+				for (const auto& vertexAttachment : vertexBinding.vertexAttachments)
+				{
+					vertexAttributeDescriptions.emplace_back(vertexAttachment.inputLocation,
+															 vertexBinding.bindingLocation,
+															 vertexFormatToVulkanFormat(vertexAttachment.format),
+															 vertexAttachment.offset % vertexBinding.stride);
+				}
+			}
+		}
+	}
+	
+	/**
+	 * Creates a Pipeline Vertex Input State Create Info Struct and fills it with Attribute and Binding data.
+	 * @param vertexAttributeDescriptions
+	 * @param vertexBindingDescriptions
+	 * @return Pipeline Vertex Input State Create Info Struct
+	 */
+	vk::PipelineVertexInputStateCreateInfo createPipelineVertexInputStateCreateInfo(
+			std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
+			std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions) {
+		
+		vk::PipelineVertexInputStateCreateInfo pipelineVertexInputStateCreateInfo(
+				{},
+				vertexBindingDescriptions.size(),
+				vertexBindingDescriptions.data(),
+				vertexAttributeDescriptions.size(),
+				vertexAttributeDescriptions.data()
+		);
+		return pipelineVertexInputStateCreateInfo;
+	}
+	
+	/**
+	 * Creates 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) {
+		vk::PipelineInputAssemblyStateCreateInfo pipelineInputAssemblyStateCreateInfo(
+				{},
+				primitiveTopologyToVulkanPrimitiveTopology(config.m_PrimitiveTopology),
+				false
+		);
+		
+		return pipelineInputAssemblyStateCreateInfo;
+	}
+	
+	/**
+	 * Creates a Pipeline Viewport State Create Info Struct with default set viewport and scissor settings.
+	 * @param config provides with and height of the output window
+	 * @return Pipeline Viewport State Create Info Struct
+	 */
+	vk::PipelineViewportStateCreateInfo createPipelineViewportStateCreateInfo(const PipelineConfig &config) {
+		static vk::Viewport viewport;
+		static vk::Rect2D scissor;
+		
+		viewport = vk::Viewport(
+				0.f, 0.f,
+				static_cast<float>(config.m_Width),
+				static_cast<float>(config.m_Height),
+				0.f, 1.f
+		);
+		
+		scissor = vk::Rect2D(
+				{ 0,0 },
+				{ config.m_Width, config.m_Height }
+		);
+		
+		vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo(
+				{},
+				1,
+				&viewport,
+				1,
+				&scissor
+		);
+		
+		return pipelineViewportStateCreateInfo;
+	}
+	
+	/**
+	 * Creates a Pipeline Rasterization State Create Info Struct with default values set to:
+	 * Rasterizer Discard: Disabled
+	 * Polygon Mode: Fill
+	 * Front Face: Counter Clockwise
+	 * Depth Bias: Disabled
+	 * Line Width: 1.0
+	 * Depth Clamping and Culling Mode ist set by the Pipeline Config
+	 * @param config sets Depth Clamping and Culling Mode
+	 * @return Pipeline Rasterization State Create Info Struct
+	 */
+	vk::PipelineRasterizationStateCreateInfo createPipelineRasterizationStateCreateInfo(const PipelineConfig &config) {
+		vk::CullModeFlags cullMode;
+		switch (config.m_culling) {
+			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(LogLevel::ERROR, "Unknown CullMode");
+				cullMode = vk::CullModeFlagBits::eNone;
+		}
+		
+		vk::PipelineRasterizationStateCreateInfo pipelineRasterizationStateCreateInfo (
+				{},
+				config.m_EnableDepthClamping,
+				false,
+				vk::PolygonMode::eFill,
+				cullMode,
+				vk::FrontFace::eCounterClockwise,
+				false,
+				0.f,
+				0.f,
+				0.f,
+				1.f
+		);
+		
+		static vk::PipelineRasterizationConservativeStateCreateInfoEXT conservativeRasterization;
+		
+		if (config.m_UseConservativeRasterization) {
+			conservativeRasterization = vk::PipelineRasterizationConservativeStateCreateInfoEXT(
+					{},
+					vk::ConservativeRasterizationModeEXT::eOverestimate,
+					0.f
+			);
+			
+			pipelineRasterizationStateCreateInfo.pNext = &conservativeRasterization;
+		}
+		
+		return pipelineRasterizationStateCreateInfo;
+	}
+	
+	/**
+	 * Creates a Pipeline Multisample State Create Info Struct.
+	 * @param config set MSAA Sample Count Flag
+	 * @return Pipeline Multisample State Create Info Struct
+	 */
+	vk::PipelineMultisampleStateCreateInfo createPipelineMultisampleStateCreateInfo(const PipelineConfig &config) {
+		vk::PipelineMultisampleStateCreateInfo pipelineMultisampleStateCreateInfo(
+				{},
+				msaaToVkSampleCountFlag(config.m_multisampling),
+				false,
+				0.f,
+				nullptr,
+				config.m_alphaToCoverage,
+				false
+		);
+		
+		return pipelineMultisampleStateCreateInfo;
+	}
+	
+	/**
+	 * Creates a Pipeline Color Blend State Create Info Struct.
+	 * Currently only one blend mode is supported! There for, blending is set to additive.
+	 * @param config sets blend mode
+	 * @return
+	 */
+	vk::PipelineColorBlendStateCreateInfo createPipelineColorBlendStateCreateInfo(const PipelineConfig &config) {
+		// currently set to additive, if not disabled
+		// BlendFactors must be set as soon as additional BlendModes are added
+		static vk::PipelineColorBlendAttachmentState colorBlendAttachmentState (
+				config.m_blendMode != BlendMode::None,
+				vk::BlendFactor::eOne,
+				vk::BlendFactor::eOne,
+				vk::BlendOp::eAdd,
+				vk::BlendFactor::eOne,
+				vk::BlendFactor::eOne,
+				vk::BlendOp::eAdd,
+				vk::ColorComponentFlags(
+						VK_COLOR_COMPONENT_R_BIT |
+						VK_COLOR_COMPONENT_G_BIT |
+						VK_COLOR_COMPONENT_B_BIT |
+						VK_COLOR_COMPONENT_A_BIT
+				)
+		);
+		
+		vk::PipelineColorBlendStateCreateInfo pipelineColorBlendStateCreateInfo(
+				{},
+				false,
+				vk::LogicOp::eClear,
+				1,	//TODO: hardcoded to one
+				&colorBlendAttachmentState,
+				{ 1.f,1.f,1.f,1.f }
+		);
+		
+		return pipelineColorBlendStateCreateInfo;
+	}
+	
+	/**
+	 * Creates a Pipeline Layout Create Info Struct.
+	 * @param config sets Push Constant Size and Descriptor Layouts.
+	 * @return Pipeline Layout Create Info Struct
+	 */
+	vk::PipelineLayoutCreateInfo createPipelineLayoutCreateInfo(const PipelineConfig &config) {
+		static vk::PushConstantRange pushConstantRange;
+		
+		const size_t pushConstantSize = config.m_ShaderProgram.getPushConstantSize();
+		pushConstantRange = vk::PushConstantRange(
+				vk::ShaderStageFlagBits::eAll, 0, pushConstantSize
+		);
+		
+		vk::PipelineLayoutCreateInfo pipelineLayoutCreateInfo(
+				{},
+				(config.m_DescriptorLayouts),
+				(pushConstantRange)
+		);
+		
+		if (pushConstantSize == 0) {
+			pipelineLayoutCreateInfo.pushConstantRangeCount = 0;
+		}
+		
+		return pipelineLayoutCreateInfo;
+	}
+	
+	/**
+	 * Creates a Pipeline Depth Stencil State Create Info Struct.
+	 * @param config sets if depth test in enabled or not.
+	 * @return Pipeline Layout Create Info Struct
+	 */
+	vk::PipelineDepthStencilStateCreateInfo createPipelineDepthStencilStateCreateInfo(const PipelineConfig &config) {
+		const vk::PipelineDepthStencilStateCreateInfo pipelineDepthStencilCreateInfo(
+				vk::PipelineDepthStencilStateCreateFlags(),
+				config.m_depthTest != DepthTest::None,
+				config.m_depthWrite,
+				depthTestToVkCompareOp(config.m_depthTest),
+				false,
+				false,
+				{},
+				{},
+				0.0f,
+				1.0f
+		);
+		
+		return pipelineDepthStencilCreateInfo;
+	}
+	
+	/**
+	 * Creates a Pipeline Dynamic State Create Info Struct.
+	 * @param config sets whenever a dynamic viewport is used or not.
+	 * @return Pipeline Dynamic State Create Info Struct
+	 */
+	vk::PipelineDynamicStateCreateInfo createPipelineDynamicStateCreateInfo(const PipelineConfig &config) {
+		static std::vector<vk::DynamicState> dynamicStates;
+		dynamicStates.clear();
+		
+		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;
+	}
 
     PipelineHandle PipelineManager::createPipeline(const PipelineConfig &config, PassManager& passManager) {
         const vk::RenderPass &pass = passManager.getVkPass(config.m_PassHandle);
@@ -454,213 +740,4 @@ namespace vkcv
         return m_Device.createShaderModule(&moduleInfo, nullptr, &module);
     }
 
-    void PipelineManager::fillVertexInputDescription(
-        std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
-        std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions,
-        const bool existsVertexShader,
-        const PipelineConfig &config) {
-
-        if (existsVertexShader) {
-            const VertexLayout& layout = config.m_VertexLayout;
-
-            // iterate over the layout's specified, mutually exclusive buffer bindings that make up a vertex buffer
-            for (const auto& vertexBinding : layout.vertexBindings)
-            {
-                vertexBindingDescriptions.emplace_back(vertexBinding.bindingLocation,
-                                                       vertexBinding.stride,
-                                                       vk::VertexInputRate::eVertex);
-
-                // iterate over the bindings' specified, mutually exclusive vertex input attachments that make up a vertex
-                for (const auto& vertexAttachment : vertexBinding.vertexAttachments)
-                {
-                    vertexAttributeDescriptions.emplace_back(vertexAttachment.inputLocation,
-                                                             vertexBinding.bindingLocation,
-                                                             vertexFormatToVulkanFormat(vertexAttachment.format),
-                                                             vertexAttachment.offset % vertexBinding.stride);
-                }
-            }
-        }
-    }
-
-    vk::PipelineVertexInputStateCreateInfo PipelineManager::createPipelineVertexInputStateCreateInfo(
-            std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
-            std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions) {
-
-        vk::PipelineVertexInputStateCreateInfo pipelineVertexInputStateCreateInfo(
-                {},
-                vertexBindingDescriptions.size(),
-                vertexBindingDescriptions.data(),
-                vertexAttributeDescriptions.size(),
-                vertexAttributeDescriptions.data()
-        );
-        return pipelineVertexInputStateCreateInfo;
-    }
-
-    vk::PipelineInputAssemblyStateCreateInfo
-    PipelineManager::createPipelineInputAssemblyStateCreateInfo(const PipelineConfig &config) {
-        vk::PipelineInputAssemblyStateCreateInfo pipelineInputAssemblyStateCreateInfo(
-                {},
-                primitiveTopologyToVulkanPrimitiveTopology(config.m_PrimitiveTopology),
-                false
-        );
-        return pipelineInputAssemblyStateCreateInfo;
-    }
-
-    vk::PipelineViewportStateCreateInfo
-    PipelineManager::createPipelineViewportStateCreateInfo(const PipelineConfig &config) {
-        vk::Viewport viewport(0.f, 0.f,
-                              static_cast<float>(config.m_Width),
-                              static_cast<float>(config.m_Height),
-                              0.f, 1.f);
-
-        vk::Rect2D scissor({ 0,0 },
-                           { config.m_Width,
-                             config.m_Height });
-
-        vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo({},
-                                                                            1,
-                                                                            &viewport,
-                                                                            1,
-                                                                            &scissor);
-        return pipelineViewportStateCreateInfo;
-    }
-
-    vk::PipelineRasterizationStateCreateInfo
-    PipelineManager::createPipelineRasterizationStateCreateInfo(const PipelineConfig &config) {
-
-        vk::CullModeFlags cullMode;
-        switch (config.m_culling) {
-            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(LogLevel::ERROR, "Unknown CullMode");
-                cullMode = vk::CullModeFlagBits::eNone;
-        }
-
-        vk::PipelineRasterizationStateCreateInfo pipelineRasterizationStateCreateInfo (
-                {},
-                config.m_EnableDepthClamping,
-                false,
-                vk::PolygonMode::eFill,
-                cullMode,
-                vk::FrontFace::eCounterClockwise,
-                false,
-                0.f,
-                0.f,
-                0.f,
-                1.f
-        );
-
-        vk::PipelineRasterizationConservativeStateCreateInfoEXT conservativeRasterization;
-        if (config.m_UseConservativeRasterization) {
-            conservativeRasterization = vk::PipelineRasterizationConservativeStateCreateInfoEXT(
-                    {},
-                    vk::ConservativeRasterizationModeEXT::eOverestimate,
-                    0.f);
-            pipelineRasterizationStateCreateInfo.pNext = &conservativeRasterization;
-        }
-
-        return pipelineRasterizationStateCreateInfo;
-    }
-
-    vk::PipelineMultisampleStateCreateInfo
-    PipelineManager::createPipelineMultisampleStateCreateInfo(const PipelineConfig &config) {
-        vk::PipelineMultisampleStateCreateInfo pipelineMultisampleStateCreateInfo(
-                {},
-                msaaToVkSampleCountFlag(config.m_multisampling),
-                false,
-                0.f,
-                nullptr,
-                config.m_alphaToCoverage,
-                false
-        );
-        return pipelineMultisampleStateCreateInfo;
-    }
-
-    vk::PipelineColorBlendStateCreateInfo
-    PipelineManager::createPipelineColorBlendStateCreateInfo(const PipelineConfig &config) {
-        vk::ColorComponentFlags colorWriteMask(VK_COLOR_COMPONENT_R_BIT |
-                                               VK_COLOR_COMPONENT_G_BIT |
-                                               VK_COLOR_COMPONENT_B_BIT |
-                                               VK_COLOR_COMPONENT_A_BIT);
-
-        // currently set to additive, if not disabled
-        // BlendFactors must be set as soon as additional BlendModes are added
-        vk::PipelineColorBlendAttachmentState colorBlendAttachmentState(
-                config.m_blendMode != BlendMode::None,
-                vk::BlendFactor::eOne,
-                vk::BlendFactor::eOne,
-                vk::BlendOp::eAdd,
-                vk::BlendFactor::eOne,
-                vk::BlendFactor::eOne,
-                vk::BlendOp::eAdd,
-                colorWriteMask
-        );
-
-        vk::PipelineColorBlendStateCreateInfo pipelineColorBlendStateCreateInfo(
-                {},
-                false,
-                vk::LogicOp::eClear,
-                1,	//TODO: hardcoded to one
-                &colorBlendAttachmentState,
-                { 1.f,1.f,1.f,1.f }
-        );
-        return pipelineColorBlendStateCreateInfo;
-    }
-
-    vk::PipelineLayoutCreateInfo PipelineManager::createPipelineLayoutCreateInfo(const PipelineConfig &config) {
-        const size_t pushConstantSize = config.m_ShaderProgram.getPushConstantSize();
-        const vk::PushConstantRange pushConstantRange(vk::ShaderStageFlagBits::eAll, 0, pushConstantSize);
-
-        vk::PipelineLayoutCreateInfo pipelineLayoutCreateInfo(
-                {},
-                (config.m_DescriptorLayouts),
-                (pushConstantRange));
-        if (pushConstantSize == 0) {
-            pipelineLayoutCreateInfo.pushConstantRangeCount = 0;
-        }
-        return pipelineLayoutCreateInfo;
-    }
-
-    vk::PipelineDepthStencilStateCreateInfo
-    PipelineManager::createPipelineDepthStencilStateCreateInfo(const PipelineConfig &config) {
-        const vk::PipelineDepthStencilStateCreateInfo pipelineDepthStencilCreateInfo(
-                vk::PipelineDepthStencilStateCreateFlags(),
-                config.m_depthTest != DepthTest::None,
-                config.m_depthWrite,
-                depthTestToVkCompareOp(config.m_depthTest),
-                false,
-                false,
-                {},
-                {},
-                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 9cef6c26..bddee145 100644
--- a/src/vkcv/PipelineManager.hpp
+++ b/src/vkcv/PipelineManager.hpp
@@ -84,91 +84,5 @@ namespace vkcv
         // TODO: Move to ComputePipelineManager
         vk::Result createShaderModule(vk::ShaderModule &module, const ShaderProgram &shaderProgram, ShaderStage stage);
 
-        /**
-         * Fills Vertex Attribute and Binding Description with the corresponding objects form the Vertex Layout.
-         * @param vertexAttributeDescriptions
-         * @param vertexBindingDescriptions
-         * @param existsVertexShader
-         * @param config
-         */
-        void fillVertexInputDescription(
-                std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
-                std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions,
-                const bool existsVertexShader,
-                const PipelineConfig &config);
-
-        /**
-         * Creates a Pipeline Vertex Input State Create Info Struct and fills it with Attribute and Binding data.
-         * @param vertexAttributeDescriptions
-         * @param vertexBindingDescriptions
-         * @return Pipeline Vertex Input State Create Info Struct
-         */
-        vk::PipelineVertexInputStateCreateInfo createPipelineVertexInputStateCreateInfo(
-                std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
-                std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions
-        );
-
-        /**
-         * Creates 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);
-
-        /**
-         * Creates a Pipeline Viewport State Create Info Struct with default set viewport and scissor settings.
-         * @param config provides with and height of the output window
-         * @return Pipeline Viewport State Create Info Struct
-         */
-        vk::PipelineViewportStateCreateInfo createPipelineViewportStateCreateInfo(const PipelineConfig &config);
-
-        /**
-         * Creates a Pipeline Rasterization State Create Info Struct with default values set to:
-         * Rasterizer Discard: Disabled
-         * Polygon Mode: Fill
-         * Front Face: Counter Clockwise
-         * Depth Bias: Disabled
-         * Line Width: 1.0
-         * Depth Clamping and Culling Mode ist set by the Pipeline Config
-         * @param config sets Depth Clamping and Culling Mode
-         * @return Pipeline Rasterization State Create Info Struct
-         */
-        vk::PipelineRasterizationStateCreateInfo createPipelineRasterizationStateCreateInfo(const PipelineConfig &config);
-
-        /**
-         * Creates a Pipeline Multisample State Create Info Struct.
-         * @param config set MSAA Sample Count Flag
-         * @return Pipeline Multisample State Create Info Struct
-         */
-        vk::PipelineMultisampleStateCreateInfo createPipelineMultisampleStateCreateInfo(const PipelineConfig &config);
-
-        /**
-         * Creates a Pipeline Color Blend State Create Info Struct.
-         * Currently only one blend mode is supported! There for, blending is set to additive.
-         * @param config sets blend mode
-         * @return
-         */
-        vk::PipelineColorBlendStateCreateInfo createPipelineColorBlendStateCreateInfo(const PipelineConfig &config);
-
-        /**
-         * Creates a Pipeline Layout Create Info Struct.
-         * @param config sets Push Constant Size and Descriptor Layouts.
-         * @return Pipeline Layout Create Info Struct
-         */
-        vk::PipelineLayoutCreateInfo createPipelineLayoutCreateInfo(const PipelineConfig &config);
-
-        /**
-         * Creates a Pipeline Depth Stencil State Create Info Struct.
-         * @param config sets if depth test in enabled or not.
-         * @return Pipeline Layout Create Info Struct
-         */
-        vk::PipelineDepthStencilStateCreateInfo createPipelineDepthStencilStateCreateInfo(const PipelineConfig &config);
-
-        /**
-         * Creates a Pipeline Dynamic State Create Info Struct.
-         * @param config sets whenever a dynamic viewport is used or not.
-         * @return Pipeline Dynamic State Create Info Struct
-         */
-        vk::PipelineDynamicStateCreateInfo createPipelineDynamicStateCreateInfo(const PipelineConfig &config);
     };
 }
-- 
GitLab