From b0704573664951a325139e7f3b4b6df479c00f2b Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 17 Jan 2025 23:04:17 +0100 Subject: [PATCH] [dxgi] Pass display refresh rate around in windowed mode --- src/dxgi/dxgi_swapchain.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/dxgi/dxgi_swapchain.cpp b/src/dxgi/dxgi_swapchain.cpp index d329af39f..276e8bea0 100644 --- a/src/dxgi/dxgi_swapchain.cpp +++ b/src/dxgi/dxgi_swapchain.cpp @@ -997,13 +997,14 @@ namespace dxvk { if (m_presenter2 == nullptr) return; - // Engage the frame limiter with large sync intervals even in windowed - // mode since we want to avoid double-presenting to the swap chain. + // Windowed mode is annoying because different displays might run at + // different refresh rates. Still need to engage limiter to handle + // latency sleep and to correctly deal with large sync intervals. if (SyncInterval != m_frameRateSyncInterval && m_descFs.Windowed) { m_frameRateSyncInterval = SyncInterval; m_frameRateRefresh = 0.0f; - if (SyncInterval > 1 && wsi::isWindow(m_window)) { + if (SyncInterval && wsi::isWindow(m_window)) { wsi::WsiMode mode = { }; if (wsi::getCurrentDisplayMode(wsi::getWindowMonitor(m_window), &mode)) {