diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp index 6a10345742b3fb7b98d4b18856ce15ef9747a964..ae1dc21d579caeeb9e5698fbf962c31a068e4467 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 6d9b47be8201de4d2c9904ce7bc887eab91f669b..568a8d5b8933355b0eb516a997c3df94f54edb89 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