From ea64161d17736663e85e584f093822ef47787fae Mon Sep 17 00:00:00 2001 From: Mark Oliver Mints <mmints@uni-koblenz.de> Date: Wed, 11 Aug 2021 15:01:55 +0200 Subject: [PATCH] [#71] format -> clean up structure --- src/vkcv/PipelineManager.cpp | 18 +++++++++--------- src/vkcv/PipelineManager.hpp | 5 +++++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp index 9d57e189..0271adca 100644 --- a/src/vkcv/PipelineManager.cpp +++ b/src/vkcv/PipelineManager.cpp @@ -239,7 +239,6 @@ namespace vkcv } // vertex input state - // Fill up VertexInputBindingDescription and VertexInputAttributeDescription Containers std::vector<vk::VertexInputAttributeDescription> vertexAttributeDescriptions; std::vector<vk::VertexInputBindingDescription> vertexBindingDescriptions; @@ -270,15 +269,16 @@ namespace vkcv vk::PipelineColorBlendStateCreateInfo pipelineColorBlendStateCreateInfo = createPipelineColorBlendStateCreateInfo(config); - // pipeline layout - + // Dynamic State + vk::PipelineDynamicStateCreateInfo dynamicStateCreateInfo = + createPipelineDynamicStateCreateInfo(config); + // pipeline layout vk::PipelineLayoutCreateInfo pipelineLayoutCreateInfo = createPipelineLayoutCreateInfo(config); vk::PipelineLayout vkPipelineLayout{}; - if (m_Device.createPipelineLayout(&pipelineLayoutCreateInfo, nullptr, &vkPipelineLayout) != vk::Result::eSuccess) - { + if (m_Device.createPipelineLayout(&pipelineLayoutCreateInfo, nullptr, &vkPipelineLayout) != vk::Result::eSuccess) { destroyShaderModules(); return PipelineHandle(); } @@ -297,10 +297,7 @@ namespace vkcv } } - // Dynamic State - vk::PipelineDynamicStateCreateInfo dynamicStateCreateInfo = - createPipelineDynamicStateCreateInfo(config); - + // Get all setting structs together and create the Pipeline const vk::GraphicsPipelineCreateInfo graphicsPipelineCreateInfo( {}, static_cast<uint32_t>(shaderStages.size()), @@ -321,6 +318,7 @@ namespace vkcv 0 ); + // Catch runtime error if the creation of the pipeline fails. vk::Pipeline vkPipeline{}; if (m_Device.createGraphicsPipelines(nullptr, 1, &graphicsPipelineCreateInfo, nullptr, &vkPipeline) != vk::Result::eSuccess) { @@ -328,8 +326,10 @@ namespace vkcv return PipelineHandle(); } + // Clean Up destroyShaderModules(); + // Hand over Handler to main Application const uint64_t id = m_Pipelines.size(); m_Pipelines.push_back({ vkPipeline, vkPipelineLayout, config }); return PipelineHandle(id, [&](uint64_t id) { destroyPipelineById(id); }); diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp index 95c37504..a95028c9 100644 --- a/src/vkcv/PipelineManager.hpp +++ b/src/vkcv/PipelineManager.hpp @@ -130,6 +130,11 @@ namespace vkcv */ 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