Choose best present mode from available modes based on config.
352{
354
355 for (const auto& mode : available_modes) {
356 if (mode == vk_mode) {
358 }
359 }
360
362 for (const auto& mode : available_modes) {
363 if (mode == vk::PresentModeKHR::eMailbox) {
365 "Desired present mode not available, using MAILBOX");
367 }
368 }
369 for (const auto& mode : available_modes) {
370 if (mode == vk::PresentModeKHR::eImmediate) {
372 "Desired present mode not available, using IMMEDIATE");
374 }
375 }
376 }
377
379 "Desired present mode not available, falling back to FIFO (VSync)");
380 return vk::PresentModeKHR::eFifo;
381}
#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.