MayaFlux 0.3.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 733 of file ShaderFoundry.cpp.

734{
735 auto& cmd_manager = m_backend->get_command_manager();
736
738
739 vk::CommandBuffer cmd = cmd_manager.allocate_command_buffer(vk::CommandBufferLevel::eSecondary);
740
741 vk::CommandBufferInheritanceRenderingInfo inheritance_rendering;
742 inheritance_rendering.colorAttachmentCount = 1;
743 inheritance_rendering.pColorAttachmentFormats = &color_format;
744 inheritance_rendering.rasterizationSamples = vk::SampleCountFlagBits::e1;
745
746 vk::CommandBufferInheritanceInfo inheritance_info;
747 inheritance_info.pNext = &inheritance_rendering;
748
749 vk::CommandBufferBeginInfo begin_info;
750 begin_info.flags = vk::CommandBufferUsageFlagBits::eRenderPassContinue | vk::CommandBufferUsageFlagBits::eOneTimeSubmit;
751 begin_info.pInheritanceInfo = &inheritance_info;
752
753 cmd.begin(begin_info);
754
755 CommandBufferState& state = m_command_buffers[id];
756 state.cmd = cmd;
757 state.type = CommandBufferType::GRAPHICS;
758 state.level = CommandBufferLevel::SECONDARY;
759 state.is_active = true;
760
762 "Began secondary command buffer (ID: {}) for dynamic rendering", id);
763
764 return id;
765}
#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.