MayaFlux 1.0.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 145 of file VKComputePipeline.cpp.

148{
149 std::vector<vk::PushConstantRange> vk_push_constants;
150 vk_push_constants.reserve(config.push_constants.size());
151
152 for (const auto& pc : config.push_constants) {
153 vk::PushConstantRange range;
154 range.stageFlags = pc.stage_flags;
155 range.offset = pc.offset;
156 range.size = pc.size;
157 vk_push_constants.push_back(range);
158 }
159
160 vk::PipelineLayoutCreateInfo layout_info;
161 layout_info.setLayoutCount = static_cast<uint32_t>(config.set_layouts.size());
162 layout_info.pSetLayouts = config.set_layouts.empty() ? nullptr : config.set_layouts.data();
163 layout_info.pushConstantRangeCount = static_cast<uint32_t>(vk_push_constants.size());
164 layout_info.pPushConstantRanges = vk_push_constants.empty() ? nullptr : vk_push_constants.data();
165
166 vk::PipelineLayout layout;
167 try {
168 layout = device.createPipelineLayout(layout_info);
169 } catch (const vk::SystemError& e) {
171 "Failed to create pipeline layout: {}", e.what());
172 return nullptr;
173 }
174
176 "Pipeline layout created ({} sets, {} push constant ranges)",
177 config.set_layouts.size(), config.push_constants.size());
178
179 return layout;
180}
#define MF_ERROR(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
vk::PhysicalDevice device
Definition VKDevice.cpp:121
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.
std::vector< double > range(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Value range (max - min) per window.
Definition Analysis.cpp:452

References MayaFlux::Journal::Core, device, 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: