diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp index bca1f2ce94f9b7afae7bbf4763d2d0cea502462b..ac4d7a221e8bc6e9ff1270860428e5ea36610133 100644 --- a/src/vkcv/PipelineManager.cpp +++ b/src/vkcv/PipelineManager.cpp @@ -271,16 +271,10 @@ namespace vkcv createPipelineColorBlendStateCreateInfo(config); // pipeline layout - 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; - } + + vk::PipelineLayoutCreateInfo pipelineLayoutCreateInfo = + createPipelineLayoutCreateInfo(config); vk::PipelineLayout vkPipelineLayout{}; if (m_Device.createPipelineLayout(&pipelineLayoutCreateInfo, nullptr, &vkPipelineLayout) != vk::Result::eSuccess) @@ -290,18 +284,8 @@ namespace vkcv } // Depth Stencil - const vk::PipelineDepthStencilStateCreateInfo depthStencilCreateInfo( - vk::PipelineDepthStencilStateCreateFlags(), - config.m_depthTest != DepthTest::None, - config.m_depthWrite, - depthTestToVkCompareOp(config.m_depthTest), - false, - false, - {}, - {}, - 0.0f, - 1.0f - ); + const vk::PipelineDepthStencilStateCreateInfo depthStencilCreateInfo = + createPipelineDepthStencilStateCreateInfo(config); const vk::PipelineDepthStencilStateCreateInfo* p_depthStencilCreateInfo = nullptr; const PassConfig& passConfig = passManager.getPassConfig(config.m_PassHandle); @@ -638,4 +622,37 @@ namespace vkcv ); 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; + } + } diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp index 9f967332bfab0a16ae38aab10810dfda6d61dc3c..c638ea0cbb2a98a4d9bf15b49ac150c1c0a5f3e4 100644 --- a/src/vkcv/PipelineManager.hpp +++ b/src/vkcv/PipelineManager.hpp @@ -115,5 +115,20 @@ namespace vkcv * @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); + }; }