Fixing Steam Deck's wrong dpi caused by incorrect 60mm * 60mm EDID (#796)
This commit is contained in:
parent
c8fc873cf9
commit
0cbf6f6601
|
@ -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);
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
Loading…
Reference in New Issue