Choose best present mode from available modes based on config.
345{
347
348 for (const auto& mode : available_modes) {
349 if (mode == vk_mode) {
351 }
352 }
353
355 for (const auto& mode : available_modes) {
356 if (mode == vk::PresentModeKHR::eMailbox) {
358 "Desired present mode not available, using MAILBOX");
360 }
361 }
362 for (const auto& mode : available_modes) {
363 if (mode == vk::PresentModeKHR::eImmediate) {
365 "Desired present mode not available, using IMMEDIATE");
367 }
368 }
369 }
370
372 "Desired present mode not available, falling back to FIFO (VSync)");
373 return vk::PresentModeKHR::eFifo;
374}
#define MF_WARN(comp, ctx,...)
vk::PresentModeKHR to_vk_present_mode(GraphicsSurfaceInfo::PresentMode mode)
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.
std::vector< double > mode(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Mode per window via tolerance-bucketed frequency count.
@ MAILBOX
Triple buffering, no tear.
@ IMMEDIATE
No vsync, tear possible.