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

◆ create_pipeline_auto()

ComputePipelineID MayaFlux::Portal::Graphics::ComputePress::create_pipeline_auto ( ShaderID  shader_id,
size_t  push_constant_size = 0 
)

Create pipeline with auto-reflection.

Definition at line 160 of file ComputePress.cpp.

163{
164 auto reflection = m_shader_foundry->get_shader_reflection(shader_id);
165
166 std::map<uint32_t, std::vector<DescriptorBindingInfo>> bindings_by_set;
167 for (const auto& binding : reflection.descriptor_bindings) {
168 DescriptorBindingInfo config;
169 config.set = binding.set;
170 config.binding = binding.binding;
171 config.type = binding.type;
172 bindings_by_set[binding.set].push_back(config);
173 }
174
175 std::vector<std::vector<DescriptorBindingInfo>> descriptor_sets;
176 descriptor_sets.reserve(bindings_by_set.size());
177 for (const auto& [set_index, bindings] : bindings_by_set) {
178 descriptor_sets.push_back(bindings);
179 }
180
181 size_t pc_size = push_constant_size;
182 if (pc_size == 0 && !reflection.push_constant_ranges.empty()) {
183 pc_size = reflection.push_constant_ranges[0].size;
184 }
185
187 "Auto-creating pipeline: {} descriptor sets, {} bindings total",
188 descriptor_sets.size(), reflection.descriptor_bindings.size());
189
190 return create_pipeline(shader_id, descriptor_sets, pc_size);
191}
#define MF_DEBUG(comp, ctx,...)
ComputePipelineID create_pipeline(ShaderID shader_id, const std::vector< std::vector< DescriptorBindingInfo > > &descriptor_sets={}, size_t push_constant_size=0)
Create compute pipeline.
ShaderReflectionInfo get_shader_reflection(ShaderID shader_id)
Get reflection info for compiled shader.
@ GPUCompute
GPU compute operations (shaders, GPGPU tasks)
@ Portal
High-level user-facing API layer.
std::vector< PushConstantRangeInfo > push_constant_ranges

References MayaFlux::Portal::Graphics::DescriptorBindingInfo::binding, create_pipeline(), MayaFlux::Portal::Graphics::ShaderFoundry::get_shader_reflection(), MayaFlux::Journal::GPUCompute, m_shader_foundry, MF_DEBUG, MayaFlux::Journal::Portal, MayaFlux::Portal::Graphics::DescriptorBindingInfo::set, and MayaFlux::Portal::Graphics::DescriptorBindingInfo::type.

+ Here is the call graph for this function: