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

◆ emit_spirv_asm()

std::string MayaFlux::Portal::Graphics::detail::emit_spirv_asm ( const ShaderSpec spec)

Emit complete SPIR-V assembly text for a generated compute kernel.

Parameters
specShaderSpec produced by ShaderSpec::Assemble::build().
Returns
SPIR-V assembly string suitable for spvTextToBinary.

Definition at line 1591 of file AsmGenerator.cpp.

1592{
1593 std::string src;
1594 src += emit_header(spec);
1595 src += emit_decorations(spec);
1596 src += emit_types(spec);
1597
1598 if (spec.tmpl == KernelTemplate::Convolve2D) {
1599 src += emit_convolve2d_body(spec);
1600 return src;
1601 }
1602
1603 bool has_image = false;
1604 for (const auto& b : spec.bindings) {
1605 if (b.modality == Kakshya::DataModality::IMAGE_2D) {
1606 has_image = true;
1607 break;
1608 }
1609 }
1610
1611 if (has_image) {
1612 src += emit_image_body(spec);
1613 return src;
1614 }
1615
1616 switch (spec.tmpl) {
1617 case KernelTemplate::Reduction:
1618 src += (spec.op == KernelOp::MaxIndex) ? emit_max_index_body(spec) : emit_reduction_body(spec);
1619 break;
1620 case KernelTemplate::Scan:
1621 src += emit_scan_body(spec);
1622 break;
1623 case KernelTemplate::BitonicSort:
1624 src += emit_bitonic_body(spec);
1625 break;
1626 case KernelTemplate::Stencil:
1627 src += emit_stencil_body(spec);
1628 break;
1629 case KernelTemplate::Elementwise:
1630 case KernelTemplate::GeometryEmit:
1631 default:
1632 src += emit_elementwise_body(spec);
1633 break;
1634 }
1635 return src;
1636}
size_t b

References b, MayaFlux::Portal::Graphics::ShaderSpec::bindings, MayaFlux::Portal::Graphics::BitonicSort, MayaFlux::Portal::Graphics::Convolve2D, MayaFlux::Portal::Graphics::Elementwise, MayaFlux::Portal::Graphics::GeometryEmit, MayaFlux::Kakshya::IMAGE_2D, MayaFlux::Portal::Graphics::MaxIndex, MayaFlux::Portal::Graphics::ShaderSpec::op, MayaFlux::Portal::Graphics::Reduction, MayaFlux::Portal::Graphics::Scan, MayaFlux::Portal::Graphics::Stencil, and MayaFlux::Portal::Graphics::ShaderSpec::tmpl.

Referenced by MayaFlux::Portal::Graphics::ShaderFoundry::load_shader().

+ Here is the caller graph for this function: