move steam deck hack to sdl/sdl.cpp

This commit is contained in:
Flyinghead 2022-11-14 15:59:19 +01:00
parent 993b705d8b
commit 5b8e932509
4 changed files with 21 additions and 22 deletions

View File

@ -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);

View File

@ -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
}

View File

@ -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);

View File

@ -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");