diff --git a/include/vkcv/Core.hpp b/include/vkcv/Core.hpp index 817c3f5840895158f621ae0c022df07c3c97978a..decf51ae8c546814b93a87aac42bb9e60c3471e0 100644 --- a/include/vkcv/Core.hpp +++ b/include/vkcv/Core.hpp @@ -31,6 +31,7 @@ namespace vkcv // forward declarations class PassManager; class PipelineManager; + class ComputePipelineManager; class DescriptorManager; class BufferManager; class SamplerManager; @@ -66,6 +67,7 @@ namespace vkcv std::unique_ptr<PassManager> m_PassManager; std::unique_ptr<PipelineManager> m_PipelineManager; + std::unique_ptr<ComputePipelineManager> m_ComputePipelineManager; std::unique_ptr<DescriptorManager> m_DescriptorManager; std::unique_ptr<BufferManager> m_BufferManager; std::unique_ptr<SamplerManager> m_SamplerManager; @@ -162,7 +164,7 @@ namespace vkcv * @return True if pipeline creation was successful, False if not */ [[nodiscard]] - PipelineHandle createComputePipeline( + ComputePipelineHandle createComputePipeline( const ShaderProgram &shaderProgram, const std::vector<vk::DescriptorSetLayout> &descriptorSetLayouts); @@ -266,7 +268,7 @@ namespace vkcv void recordComputeDispatchToCmdStream( CommandStreamHandle cmdStream, - PipelineHandle computePipeline, + ComputePipelineHandle computePipeline, const uint32_t dispatchCount[3], const std::vector<DescriptorSetUsage> &descriptorSetUsages, const PushConstants& pushConstants); @@ -279,7 +281,7 @@ namespace vkcv void recordComputeIndirectDispatchToCmdStream( const CommandStreamHandle cmdStream, - const PipelineHandle computePipeline, + const ComputePipelineHandle computePipeline, const vkcv::BufferHandle buffer, const size_t bufferArgOffset, const std::vector<DescriptorSetUsage>& descriptorSetUsages, diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp index 1998a789e1af02456d76cb83498408684fe01cac..6585c0bb6cba55920593c0e85a6d40d729d77011 100644 --- a/src/vkcv/Core.cpp +++ b/src/vkcv/Core.cpp @@ -95,6 +95,7 @@ namespace vkcv m_window(window), m_PassManager{std::make_unique<PassManager>(m_Context.m_Device)}, m_PipelineManager{std::make_unique<PipelineManager>(m_Context.m_Device)}, + m_ComputePipelineManager{std::make_unique<ComputePipelineManager>(m_Context.m_Device)}, m_DescriptorManager(std::make_unique<DescriptorManager>(m_Context.m_Device)), m_BufferManager{std::unique_ptr<BufferManager>(new BufferManager())}, m_SamplerManager(std::unique_ptr<SamplerManager>(new SamplerManager(m_Context.m_Device))), @@ -140,11 +141,11 @@ namespace vkcv return m_PipelineManager->createPipeline(config, *m_PassManager); } - PipelineHandle Core::createComputePipeline( + ComputePipelineHandle Core::createComputePipeline( const ShaderProgram &shaderProgram, const std::vector<vk::DescriptorSetLayout>& descriptorSetLayouts) { - return m_PipelineManager->createComputePipeline(shaderProgram, descriptorSetLayouts); + return m_ComputePipelineManager->createComputePipeline(shaderProgram, descriptorSetLayouts); } PassHandle Core::createPass(const PassConfig &config) @@ -468,16 +469,16 @@ namespace vkcv void Core::recordComputeDispatchToCmdStream( CommandStreamHandle cmdStreamHandle, - PipelineHandle computePipeline, + ComputePipelineHandle computePipeline, const uint32_t dispatchCount[3], const std::vector<DescriptorSetUsage>& descriptorSetUsages, const PushConstants& pushConstants) { auto submitFunction = [&](const vk::CommandBuffer& cmdBuffer) { - const auto pipelineLayout = m_PipelineManager->getVkPipelineLayout(computePipeline); + const auto pipelineLayout = m_ComputePipelineManager->getVkPipelineLayout(computePipeline); - cmdBuffer.bindPipeline(vk::PipelineBindPoint::eCompute, m_PipelineManager->getVkPipeline(computePipeline)); + cmdBuffer.bindPipeline(vk::PipelineBindPoint::eCompute, m_ComputePipelineManager->getVkPipeline(computePipeline)); for (const auto& usage : descriptorSetUsages) { cmdBuffer.bindDescriptorSets( vk::PipelineBindPoint::eCompute, @@ -546,7 +547,7 @@ namespace vkcv void Core::recordComputeIndirectDispatchToCmdStream( const CommandStreamHandle cmdStream, - const PipelineHandle computePipeline, + const ComputePipelineHandle computePipeline, const vkcv::BufferHandle buffer, const size_t bufferArgOffset, const std::vector<DescriptorSetUsage>& descriptorSetUsages, @@ -554,9 +555,9 @@ namespace vkcv auto submitFunction = [&](const vk::CommandBuffer& cmdBuffer) { - const auto pipelineLayout = m_PipelineManager->getVkPipelineLayout(computePipeline); + const auto pipelineLayout = m_ComputePipelineManager->getVkPipelineLayout(computePipeline); - cmdBuffer.bindPipeline(vk::PipelineBindPoint::eCompute, m_PipelineManager->getVkPipeline(computePipeline)); + cmdBuffer.bindPipeline(vk::PipelineBindPoint::eCompute, m_ComputePipelineManager->getVkPipeline(computePipeline)); for (const auto& usage : descriptorSetUsages) { cmdBuffer.bindDescriptorSets( vk::PipelineBindPoint::eCompute,