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

◆ submit_and_wait()

void MayaFlux::Portal::Graphics::ShaderFoundry::submit_and_wait ( CommandBufferID  cmd_id)

Submit command buffer and wait for completion.

Parameters
cmd_idCommand buffer ID to submit

Definition at line 820 of file ShaderFoundry.cpp.

821{
822 auto it = m_command_buffers.find(cmd_id);
823 if (it == m_command_buffers.end() || !it->second.is_active) {
824 return;
825 }
826
827 auto& cmd_manager = m_backend->get_command_manager();
828
829 it->second.cmd.end();
830
831 vk::SubmitInfo submit_info;
832 submit_info.commandBufferCount = 1;
833 submit_info.pCommandBuffers = &it->second.cmd;
834
835 vk::Queue queue;
836 switch (it->second.type) {
838 queue = m_graphics_queue;
839 break;
841 queue = m_compute_queue;
842 break;
844 queue = m_transfer_queue;
845 break;
846 }
847
848 if (queue.submit(1, &submit_info, nullptr) != vk::Result::eSuccess) {
850 "Failed to submit command buffer");
851 return;
852 }
853 queue.waitIdle();
854
855 cmd_manager.free_command_buffer(it->second.cmd);
856
857 it->second.is_active = false;
858 m_command_buffers.erase(it);
859}
#define MF_ERROR(comp, ctx,...)
std::unordered_map< CommandBufferID, CommandBufferState > m_command_buffers
std::shared_ptr< Core::VulkanBackend > m_backend
@ ShaderCompilation
Shader compilation tasks (Portal::Graphics::ShaderCompiler)
@ Portal
High-level user-facing API layer.

References COMPUTE, GRAPHICS, m_backend, m_command_buffers, m_compute_queue, m_graphics_queue, m_transfer_queue, MF_ERROR, MayaFlux::Journal::Portal, MayaFlux::Journal::ShaderCompilation, and TRANSFER.