Choose best present mode from available modes based on config.
353{
355
356 for (const auto& mode : available_modes) {
357 if (mode == vk_mode) {
359 }
360 }
361
363 for (const auto& mode : available_modes) {
364 if (mode == vk::PresentModeKHR::eMailbox) {
366 "Desired present mode not available, using MAILBOX");
368 }
369 }
370 for (const auto& mode : available_modes) {
371 if (mode == vk::PresentModeKHR::eImmediate) {
373 "Desired present mode not available, using IMMEDIATE");
375 }
376 }
377 }
378
380 "Desired present mode not available, falling back to FIFO (VSync)");
381 return vk::PresentModeKHR::eFifo;
382}
#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.