From 2ebaeebb47a6709b2a2d0948b29e9f300714dcf6 Mon Sep 17 00:00:00 2001 From: Mark Oliver Mints <mmints@uni-koblenz.de> Date: Wed, 9 Jun 2021 10:01:38 +0200 Subject: [PATCH] [#65][Add] Pipeline Layout for Compute Shadetr --- src/vkcv/PipelineManager.cpp | 16 ++++++++++++++-- src/vkcv/PipelineManager.hpp | 1 - 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp index 6a103457..ae1dc21d 100644 --- a/src/vkcv/PipelineManager.cpp +++ b/src/vkcv/PipelineManager.cpp @@ -330,8 +330,20 @@ namespace vkcv nullptr ); - // TODO: Set Compute Pipeline Layout - vk::PipelineLayout vkPipelineLayout{}; // TODO: Set params + 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 + {}, + nullptr, + (pushConstantRange)); + + 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{}; diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp index 6d9b47be..568a8d5b 100644 --- a/src/vkcv/PipelineManager.hpp +++ b/src/vkcv/PipelineManager.hpp @@ -24,7 +24,6 @@ namespace vkcv vk::Result createShaderModule(vk::ShaderModule &module, const ShaderProgram &shaderProgram, ShaderStage stage); - public: PipelineManager() = delete; // no default ctor explicit PipelineManager(vk::Device device) noexcept; // ctor -- GitLab