From 52eb47528659cc3a65a26f0c2b0401eeb780eb90 Mon Sep 17 00:00:00 2001 From: Mark Oliver Mints <mmints@uni-koblenz.de> Date: Wed, 9 Jun 2021 11:17:41 +0200 Subject: [PATCH] [#65][Add] Create Compute Pipeline --- src/vkcv/PipelineManager.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp index ae1dc21d..76fb9776 100644 --- a/src/vkcv/PipelineManager.cpp +++ b/src/vkcv/PipelineManager.cpp @@ -333,26 +333,35 @@ namespace vkcv const size_t matrixPushConstantSize = shaderProgram.getPushConstantSize(); const vk::PushConstantRange pushConstantRange(vk::ShaderStageFlagBits::eAll, 0, matrixPushConstantSize); - vk::PipelineLayoutCreateInfo pipelineLayoutCreateInfo( // TODO: Check this. I'm not sure if this is correct + const vk::PipelineLayoutCreateInfo pipelineLayoutCreateInfo( // TODO: Check this. I'm not sure if this is correct {}, nullptr, (pushConstantRange)); - vk::PipelineLayout vkPipelineLayout{}; + vk::PipelineLayout vkPipelineLayout; if (m_Device.createPipelineLayout(&pipelineLayoutCreateInfo, nullptr, &vkPipelineLayout) != vk::Result::eSuccess) { m_Device.destroy(computeModule); return PipelineHandle(); } - // TODO: Create Compute Pipeline - vk::Pipeline vkPipeline{}; - vk::ComputePipelineCreateInfo computePipelineCreateInfo; // TODO: Set params + vk::ComputePipelineCreateInfo computePipelineCreateInfo; + computePipelineCreateInfo.stage = pipelineComputeShaderStageInfo; + computePipelineCreateInfo.layout = vkPipelineLayout; + + vk::Pipeline vkPipeline; if (m_Device.createComputePipelines(nullptr, 1, &computePipelineCreateInfo, nullptr, &vkPipeline)!= vk::Result::eSuccess) { - // TODO: Set Params + m_Device.destroy(computeModule); + return PipelineHandle(); } - return PipelineHandle(); + + m_Device.destroy(computeModule); + + const uint64_t id = m_Pipelines.size(); + m_Pipelines.push_back({ vkPipeline, vkPipelineLayout }); + + return PipelineHandle(id, [&](uint64_t id) { destroyPipelineById(id); }); } // There is an issue for refactoring the Pipeline Manager. -- GitLab