SpiecsEngine
 
Loading...
Searching...
No Matches

◆ VulkanComputePipeline()

Spices::VulkanComputePipeline::VulkanComputePipeline ( VulkanState & vulkanState,
const std::string & pipelineName,
const ShaderMap & shaders,
const PipelineConfigInfo & config )

Constructor Function. Create VkPipeline.

Parameters
[in]vulkanStateThe global VulkanState.
[in]pipelineNameThe Pipeline name.
[in]shadersThe Shader stage name and path.
[in]configPipelineConfigInfo.

Receive PipelineLayout from parameter.

Create the VulkanShaderModule.

Instance VkPipelineShaderStageCreateInfo.

Instance VkComputePipelineCreateInfo.

Note
one shader stage per compute pipeline.

Create Pipeline.

Receive PipelineLayout from parameter.

Create the VulkanShaderModule.

Instance VkPipelineShaderStageCreateInfo.

Instance VkComputePipelineCreateInfo.

Note
one shader stage per compute pipeline.

Create Pipeline.

Definition at line 335 of file VulkanPipeline.cpp.

341 :VulkanPipeline(vulkanState)
342 {
344
348 m_PipelineLayout = config.pipelineLayout;
349
353 std::vector<std::shared_ptr<VulkanShaderModule>> shaderModules;
354 for (auto& pair : shaders)
355 {
356 if (pair.first == "comp")
357 {
358 std::stringstream ss;
359 ss << pair.first << "." << pair.second[0];
360
361 shaderModules.push_back(ResourcePool<Shader>::Load<Shader>(ss.str(), pair.second[0], pair.first)->GetShaderModule());
362
363 break;
364 }
365 }
366
370 std::vector<VkPipelineShaderStageCreateInfo> shaderStages;
371 for (size_t i = 0; i < shaderModules.size(); i++)
372 {
373 shaderStages.push_back(shaderModules[i]->GetShaderStageCreateInfo());
374 }
375
380 VkComputePipelineCreateInfo pipelineInfo {};
381 pipelineInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
382 //pipelineInfo.flags = VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV;
383 pipelineInfo.layout = m_PipelineLayout;
384 pipelineInfo.stage = shaderStages[0];
385
389 VK_CHECK(vkCreateComputePipelines(m_VulkanState.m_Device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &m_Pipeline))
390 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_PIPELINE, reinterpret_cast<uint64_t>(m_Pipeline), m_VulkanState.m_Device, pipelineName)
391 }
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
Definition VulkanUtils.h:68
VulkanState & m_VulkanState
The global VulkanState Referenced from VulkanRenderBackend.
VulkanPipeline(VulkanState &vulkanState)
Constructor Function.
VkPipeline m_Pipeline
The VkPipeline.
VkPipelineLayout m_PipelineLayout
The VkPipelineLayout.

References Spices::VulkanPipeline::VulkanPipeline().