MayaFlux 0.1.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 154 of file ComputePress.cpp.

157{
158 auto reflection = m_shader_foundry->get_shader_reflection(shader_id);
159
160 std::map<uint32_t, std::vector<DescriptorBindingConfig>> bindings_by_set;
161 for (const auto& binding : reflection.descriptor_bindings) {
162 DescriptorBindingConfig config;
163 config.set = binding.set;
164 config.binding = binding.binding;
165 config.type = binding.type;
166 bindings_by_set[binding.set].push_back(config);
167 }
168
169 std::vector<std::vector<DescriptorBindingConfig>> descriptor_sets;
170 descriptor_sets.reserve(bindings_by_set.size());
171 for (const auto& [set_index, bindings] : bindings_by_set) {
172 descriptor_sets.push_back(bindings);
173 }
174
175 size_t pc_size = push_constant_size;
176 if (pc_size == 0 && !reflection.push_constant_ranges.empty()) {
177 pc_size = reflection.push_constant_ranges[0].size;
178 }
179
181 "Auto-creating pipeline: {} descriptor sets, {} bindings total",
182 descriptor_sets.size(), reflection.descriptor_bindings.size());
183
184 return create_pipeline(shader_id, descriptor_sets, pc_size);
185}
#define MF_DEBUG(comp, ctx,...)
ComputePipelineID create_pipeline(ShaderID shader_id, const std::vector< std::vector< DescriptorBindingConfig > > &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::DescriptorBindingConfig::binding, create_pipeline(), MayaFlux::Portal::Graphics::ShaderFoundry::get_shader_reflection(), MayaFlux::Journal::GPUCompute, m_shader_foundry, MF_DEBUG, MayaFlux::Journal::Portal, MayaFlux::Portal::Graphics::DescriptorBindingConfig::set, and MayaFlux::Portal::Graphics::DescriptorBindingConfig::type.

+ Here is the call graph for this function: