From fa81883418ebf327e5176d8603d7c04e75e807f4 Mon Sep 17 00:00:00 2001
From: Vanfanel <[EMAIL REDACTED]>
Date: Tue, 30 Mar 2021 13:25:09 +0200
Subject: [PATCH] [KMSDRM] Fake refresh rate precision on Vulkan display mode
creation.
---
src/video/kmsdrm/SDL_kmsdrmvulkan.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/video/kmsdrm/SDL_kmsdrmvulkan.c b/src/video/kmsdrm/SDL_kmsdrmvulkan.c
index dae9bde2b..c101ead55 100644
--- a/src/video/kmsdrm/SDL_kmsdrmvulkan.c
+++ b/src/video/kmsdrm/SDL_kmsdrmvulkan.c
@@ -391,7 +391,9 @@ SDL_bool KMSDRM_Vulkan_CreateSurface(_THIS,
those are often bigger than the window size, thus causing out-of-bunds scanout. */
new_mode_parameters.visibleRegion.width = window->w;
new_mode_parameters.visibleRegion.height = window->h;
- new_mode_parameters.refreshRate = window->fullscreen_mode.refresh_rate;
+ /* SDL (and DRM, if we look at drmModeModeInfo vrefresh) uses plain integer Hz for
+ display mode refresh rate, but Vulkan expects higher precision. */
+ new_mode_parameters.refreshRate = window->fullscreen_mode.refresh_rate * 1000;
display_mode_create_info.sType = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
display_mode_create_info.parameters = new_mode_parameters;
result = vkCreateDisplayModeKHR(gpu,