Fixing Steam Deck's wrong dpi caused by incorrect 60mm * 60mm EDID (#796)

This commit is contained in:
vkedwardli 2022-10-28 04:00:22 +08:00 committed by GitHub
parent c8fc873cf9
commit 0cbf6f6601
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 0 deletions

View File

@ -728,6 +728,18 @@ bool VulkanContext::init()
float hdpi, vdpi;
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 && mode.w == 1280 && mode.h == 800 )
settings.display.dpi = 206;
}
#endif
#elif defined(_WIN32)
vk::Win32SurfaceCreateInfoKHR createInfo(vk::Win32SurfaceCreateFlagsKHR(), GetModuleHandle(NULL), (HWND)window);
surface = instance->createWin32SurfaceKHRUnique(createInfo);

View File

@ -84,6 +84,18 @@ bool SDLGLGraphicsContext::init()
float hdpi, vdpi;
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 && mode.w == 1280 && mode.h == 800 )
settings.display.dpi = 206;
}
#endif
INFO_LOG(RENDERER, "Created SDL Window and GL Context successfully");