From 5b8e932509a43cca751c671d7bb804b5b1b73445 Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Mon, 14 Nov 2022 15:59:19 +0100 Subject: [PATCH] move steam deck hack to sdl/sdl.cpp --- core/rend/vulkan/vulkan_context.cpp | 12 +----------- core/sdl/sdl.cpp | 18 ++++++++++++++++++ core/sdl/sdl.h | 1 + core/wsi/sdl.cpp | 12 +----------- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/core/rend/vulkan/vulkan_context.cpp b/core/rend/vulkan/vulkan_context.cpp index cf299e81a..e0d5a2fd6 100644 --- a/core/rend/vulkan/vulkan_context.cpp +++ b/core/rend/vulkan/vulkan_context.cpp @@ -734,17 +734,7 @@ bool VulkanContext::init() if (!SDL_GetDisplayDPI(SDL_GetWindowDisplayIndex(sdlWin), nullptr, &hdpi, &vdpi)) settings.display.dpi = roundf(std::max(hdpi, vdpi)); -#ifdef __linux__ - // Fixing Steam Deck's incorrect 60mm * 60mm EDID - if (settings.display.dpi > 500) - { - int displayIndex = SDL_GetWindowDisplayIndex(sdlWin); - SDL_DisplayMode mode; - SDL_GetDisplayMode(displayIndex, 0, &mode); - if ( displayIndex == 0 && (strcmp(SDL_GetDisplayName(displayIndex), "ANX7530 U 3\"") == 0 || strcmp(SDL_GetDisplayName(displayIndex), "XWAYLAND0 3\"") == 0) && mode.w == 1280 && mode.h == 800 ) - settings.display.dpi = 206; - } -#endif + sdl_fix_steamdeck_dpi(sdlWin); #elif defined(_WIN32) vk::Win32SurfaceCreateInfoKHR createInfo(vk::Win32SurfaceCreateFlagsKHR(), GetModuleHandle(NULL), (HWND)window); surface = instance->createWin32SurfaceKHRUnique(createInfo); diff --git a/core/sdl/sdl.cpp b/core/sdl/sdl.cpp index 4cfef38e7..89f8edea9 100644 --- a/core/sdl/sdl.cpp +++ b/core/sdl/sdl.cpp @@ -663,3 +663,21 @@ void sdl_window_destroy() SDL_DestroyWindow(window); SDL_QuitSubSystem(SDL_INIT_VIDEO); } + +void sdl_fix_steamdeck_dpi(SDL_Window *window) +{ +#ifdef __linux__ + // Fixing Steam Deck's incorrect 60mm * 60mm EDID + if (settings.display.dpi > 500) + { + int displayIndex = SDL_GetWindowDisplayIndex(window); + SDL_DisplayMode mode; + SDL_GetDisplayMode(displayIndex, 0, &mode); + if (displayIndex == 0 + && (strcmp(SDL_GetDisplayName(displayIndex), "ANX7530 U 3\"") == 0 + || strcmp(SDL_GetDisplayName(displayIndex), "XWAYLAND0 3\"") == 0) + && mode.w == 1280 && mode.h == 800) + settings.display.dpi = 206; + } +#endif +} diff --git a/core/sdl/sdl.h b/core/sdl/sdl.h index d8f9acde0..a79f85f22 100644 --- a/core/sdl/sdl.h +++ b/core/sdl/sdl.h @@ -9,3 +9,4 @@ void sdl_window_create(); void sdl_window_set_text(const char* text); void sdl_window_destroy(); bool sdl_recreate_window(u32 flags); +void sdl_fix_steamdeck_dpi(SDL_Window *window); diff --git a/core/wsi/sdl.cpp b/core/wsi/sdl.cpp index e3bb72abf..4ef7854ba 100644 --- a/core/wsi/sdl.cpp +++ b/core/wsi/sdl.cpp @@ -85,17 +85,7 @@ bool SDLGLGraphicsContext::init() if (!SDL_GetDisplayDPI(SDL_GetWindowDisplayIndex(sdlWindow), nullptr, &hdpi, &vdpi)) settings.display.dpi = roundf(std::max(hdpi, vdpi)); -#ifdef __linux__ - // Fixing Steam Deck's incorrect 60mm * 60mm EDID - if (settings.display.dpi > 500) - { - int displayIndex = SDL_GetWindowDisplayIndex(sdlWindow); - SDL_DisplayMode mode; - SDL_GetDisplayMode(displayIndex, 0, &mode); - if ( displayIndex == 0 && (strcmp(SDL_GetDisplayName(displayIndex), "ANX7530 U 3\"") == 0 || strcmp(SDL_GetDisplayName(displayIndex), "XWAYLAND0 3\"") == 0) && mode.w == 1280 && mode.h == 800 ) - settings.display.dpi = 206; - } -#endif + sdl_fix_steamdeck_dpi(sdlWindow); INFO_LOG(RENDERER, "Created SDL Window and GL Context successfully");