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

◆ build()

ShaderSpec MayaFlux::Portal::Graphics::ShaderSpec::Assemble::build ( )
inline

Finalise and return the ShaderSpec.

Definition at line 529 of file ShaderSpec.hpp.

530 {
531 const uint32_t pc_bytes = push_constant_layout(m_pc_fields).size;
532
533 if (m_kernel.has_value() && m_kernel->param_names.empty()) {
534 auto& names = m_kernel->param_names;
535 names.reserve(m_bindings.size() + m_pc_fields.size() + 1);
536 for (const auto& b : m_bindings)
537 names.push_back(b.name);
538 for (const auto& f : m_pc_fields)
539 names.push_back(f.name);
540 names.emplace_back("i");
541 }
542
543 return ShaderSpec {
544 .tmpl = m_tmpl,
545 .op = m_op,
546 .bindings = std::move(m_bindings),
547 .pc_fields = std::move(m_pc_fields),
548 .workgroup_size = m_workgroup,
549 .push_constant_bytes = pc_bytes,
550 .functions = std::move(m_functions),
551 .kernel = std::move(m_kernel),
552 };
553 }
size_t b
std::string name
Definition VKDevice.cpp:123
std::vector< PushConstantField > m_pc_fields
Kakshya::GpuBlockLayout push_constant_layout(const std::vector< PushConstantField > &fields)
Offsets and total size of a push constant block, under std430.

References b, m_bindings, m_functions, m_kernel, m_op, m_pc_fields, m_tmpl, m_workgroup, MayaFlux::Portal::Graphics::push_constant_layout(), MayaFlux::Kakshya::GpuBlockLayout::size, and MayaFlux::Portal::Graphics::ShaderSpec::tmpl.

Referenced by MayaFlux::Nodes::Network::GpuFieldOperator::build_spec(), MayaFlux::Yantra::VisionGpuExecutor::config(), and MayaFlux::Buffers::RelaxationSpecs::jacobi_diffusion().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: