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

◆ create_sync_objects()

bool MayaFlux::Core::BackendWindowHandler::create_sync_objects ( WindowRenderContext config)
private

Create synchronization objects for a window's swapchain.

Parameters
configWindow swapchain configuration to populate
Returns
True if creation succeeded

Definition at line 378 of file BackendWindowHandler.cpp.

379{
380 auto device = m_context.get_device();
381 uint32_t image_count = config.swapchain->get_image_count();
382
383 try {
384 config.image_available.resize(image_count);
385 config.render_finished.resize(image_count);
386 config.in_flight.resize(image_count);
387 config.clear_command_buffers.resize(image_count);
388
389 vk::SemaphoreCreateInfo semaphore_info {};
390 vk::FenceCreateInfo fence_info {};
391 fence_info.flags = vk::FenceCreateFlagBits::eSignaled;
392
393 for (uint32_t i = 0; i < image_count; ++i) {
394 config.image_available[i] = device.createSemaphore(semaphore_info);
395 config.render_finished[i] = device.createSemaphore(semaphore_info);
396
397 config.clear_command_buffers[i] = m_command_manager.allocate_command_buffer(
398 vk::CommandBufferLevel::ePrimary);
399 }
400
401 for (auto& i : config.in_flight) {
402 i = device.createFence(fence_info);
403 }
404
405 config.current_frame = 0;
406
407 return true;
408 } catch (const vk::SystemError& e) {
410 "Failed to create sync objects: {}", e.what());
411 return false;
412 }
413}
#define MF_RT_ERROR(comp, ctx,...)
vk::CommandBuffer allocate_command_buffer(vk::CommandBufferLevel level=vk::CommandBufferLevel::ePrimary)
Allocate a command buffer with specified level.
vk::Device get_device() const
Get logical device.
Definition VKContext.hpp:49
@ GraphicsCallback
Graphics/visual rendering callback - frame-rate real-time.
@ Core
Core engine, backend, subsystems.

References MayaFlux::Core::WindowRenderContext::clear_command_buffers, MayaFlux::Journal::Core, MayaFlux::Core::WindowRenderContext::current_frame, MayaFlux::Journal::GraphicsCallback, MayaFlux::Core::WindowRenderContext::image_available, MayaFlux::Core::WindowRenderContext::in_flight, MF_RT_ERROR, MayaFlux::Core::WindowRenderContext::render_finished, and MayaFlux::Core::WindowRenderContext::swapchain.

Referenced by register_window().

+ Here is the caller graph for this function: