MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ create_pipeline_layout()

vk::PipelineLayout MayaFlux::Core::VKComputePipeline::create_pipeline_layout ( vk::Device  device,
const ComputePipelineConfig config 
)
private

Create pipeline layout from configuration.

Parameters
deviceLogical device
configPipeline configuration
Returns
Pipeline layout handle, or null on failure

Definition at line 141 of file VKComputePipeline.cpp.

144{
145 std::vector<vk::PushConstantRange> vk_push_constants;
146 vk_push_constants.reserve(config.push_constants.size());
147
148 for (const auto& pc : config.push_constants) {
149 vk::PushConstantRange range;
150 range.stageFlags = pc.stage_flags;
151 range.offset = pc.offset;
152 range.size = pc.size;
153 vk_push_constants.push_back(range);
154 }
155
156 vk::PipelineLayoutCreateInfo layout_info;
157 layout_info.setLayoutCount = static_cast<uint32_t>(config.set_layouts.size());
158 layout_info.pSetLayouts = config.set_layouts.empty() ? nullptr : config.set_layouts.data();
159 layout_info.pushConstantRangeCount = static_cast<uint32_t>(vk_push_constants.size());
160 layout_info.pPushConstantRanges = vk_push_constants.empty() ? nullptr : vk_push_constants.data();
161
162 vk::PipelineLayout layout;
163 try {
164 layout = device.createPipelineLayout(layout_info);
165 } catch (const vk::SystemError& e) {
167 "Failed to create pipeline layout: {}", e.what());
168 return nullptr;
169 }
170
172 "Pipeline layout created ({} sets, {} push constant ranges)",
173 config.set_layouts.size(), config.push_constants.size());
174
175 return layout;
176}
#define MF_ERROR(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
void push_constants(vk::CommandBuffer cmd, vk::ShaderStageFlags stage_flags, uint32_t offset, uint32_t size, const void *data) const
Update push constants.
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.

References MayaFlux::Journal::Core, MayaFlux::Journal::GraphicsBackend, MF_DEBUG, MF_ERROR, MayaFlux::Core::ComputePipelineConfig::push_constants, and MayaFlux::Core::ComputePipelineConfig::set_layouts.

Referenced by create().

+ Here is the caller graph for this function: