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

◆ begin_secondary_commands()

CommandBufferID MayaFlux::Portal::Graphics::ShaderFoundry::begin_secondary_commands ( vk::Format  color_format)

Begin recording a secondary command buffer for dynamic rendering.

Parameters
color_formatFormat of the color attachment (from swapchain)
Returns
Command buffer ID

With dynamic rendering, secondary buffers don't need render pass objects. They only need to know the attachment formats they'll render to.

Definition at line 718 of file ShaderFoundry.cpp.

719{
720 auto& cmd_manager = m_backend->get_command_manager();
721
723
724 vk::CommandBuffer cmd = cmd_manager.allocate_command_buffer(vk::CommandBufferLevel::eSecondary);
725
726 vk::CommandBufferInheritanceRenderingInfo inheritance_rendering;
727 inheritance_rendering.colorAttachmentCount = 1;
728 inheritance_rendering.pColorAttachmentFormats = &color_format;
729 inheritance_rendering.rasterizationSamples = vk::SampleCountFlagBits::e1;
730
731 vk::CommandBufferInheritanceInfo inheritance_info;
732 inheritance_info.pNext = &inheritance_rendering;
733
734 vk::CommandBufferBeginInfo begin_info;
735 begin_info.flags = vk::CommandBufferUsageFlagBits::eRenderPassContinue | vk::CommandBufferUsageFlagBits::eOneTimeSubmit;
736 begin_info.pInheritanceInfo = &inheritance_info;
737
738 cmd.begin(begin_info);
739
740 CommandBufferState& state = m_command_buffers[id];
741 state.cmd = cmd;
742 state.type = CommandBufferType::GRAPHICS;
743 state.level = CommandBufferLevel::SECONDARY;
744 state.is_active = true;
745
747 "Began secondary command buffer (ID: {}) for dynamic rendering", id);
748
749 return id;
750}
#define MF_RT_TRACE(comp, ctx,...)
std::unordered_map< CommandBufferID, CommandBufferState > m_command_buffers
std::shared_ptr< Core::VulkanBackend > m_backend
@ Rendering
GPU rendering operations (graphics pipeline, frame rendering)
@ Portal
High-level user-facing API layer.

References MayaFlux::Portal::Graphics::ShaderFoundry::CommandBufferState::cmd, GRAPHICS, MayaFlux::Portal::Graphics::ShaderFoundry::CommandBufferState::is_active, MayaFlux::Portal::Graphics::ShaderFoundry::CommandBufferState::level, m_backend, m_command_buffers, m_next_command_id, MF_RT_TRACE, MayaFlux::Journal::Portal, MayaFlux::Journal::Rendering, SECONDARY, and MayaFlux::Portal::Graphics::ShaderFoundry::CommandBufferState::type.