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