From b811b78c09ea651a6db3019a6f775b6473b2485d Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sat, 13 Feb 2021 21:24:58 +1000 Subject: [PATCH] Add refresh rate to window/mode info --- src/common/vulkan/swap_chain.cpp | 10 +++++++--- src/common/window_info.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/common/vulkan/swap_chain.cpp b/src/common/vulkan/swap_chain.cpp index d47d5d616..1738021f5 100644 --- a/src/common/vulkan/swap_chain.cpp +++ b/src/common/vulkan/swap_chain.cpp @@ -10,6 +10,7 @@ #include "util.h" #include #include +#include Log_SetChannel(Vulkan::SwapChain); #if defined(VK_USE_PLATFORM_XLIB_KHR) @@ -131,11 +132,14 @@ static VkSurfaceKHR CreateDisplaySurface(VkInstance instance, VkPhysicalDevice p const VkDisplayModePropertiesKHR* matched_mode = nullptr; for (const VkDisplayModePropertiesKHR& mode : modes) { - Log_DevPrintf(" Mode %ux%u @ %u", mode.parameters.visibleRegion.width, mode.parameters.visibleRegion.height, - mode.parameters.refreshRate); + const float refresh_rate = static_cast(mode.parameters.refreshRate) * 1000.0f; + Log_DevPrintf(" Mode %ux%u @ %f", mode.parameters.visibleRegion.width, mode.parameters.visibleRegion.height, + refresh_rate); + if (!matched_mode && ((wi.surface_width == 0 && wi.surface_height == 0) || - (mode.parameters.visibleRegion.width == wi.surface_width && mode.parameters.visibleRegion.height))) + (mode.parameters.visibleRegion.width == wi.surface_width && mode.parameters.visibleRegion.height && + (wi.surface_refresh_rate == 0.0f || std::abs(refresh_rate - wi.surface_refresh_rate) < 0.1f)))) { matched_mode = &mode; } diff --git a/src/common/window_info.h b/src/common/window_info.h index 3cad6c3af..29194c75c 100644 --- a/src/common/window_info.h +++ b/src/common/window_info.h @@ -30,6 +30,7 @@ struct WindowInfo void* window_handle = nullptr; u32 surface_width = 0; u32 surface_height = 0; + float surface_refresh_rate = 0.0f; float surface_scale = 1.0f; SurfaceFormat surface_format = SurfaceFormat::RGB8;