Skip to content

Commit

Permalink
macOS SDL: Set the metal layer resolution properly, remove DPI hacks.
Browse files Browse the repository at this point in the history
Fixes #19183

Thanks to @schm1dtmac for the fix.

@shm1dtmac also mentions that this may have issues when moving the window between displays, but this should still be an improvement for most people.
  • Loading branch information
hrydgard committed Feb 20, 2025
1 parent c2824a0 commit 7d8c7dd
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 14 deletions.
1 change: 1 addition & 0 deletions SDL/SDLCocoaMetalLayer.mm
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
if (![view.layer isKindOfClass:[CAMetalLayer class]])
{
[view setLayer:[CAMetalLayer layer]];
[[view layer] setContentsScale:[window backingScaleFactor]];
}
return view.layer;
#else
Expand Down
16 changes: 2 additions & 14 deletions SDL/SDLMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,8 @@ static void StopSDLAudioDevice() {
}

static void UpdateScreenDPI(SDL_Window *window) {
int drawable_width, window_width;
SDL_GetWindowSize(window, &window_width, NULL);
int drawable_width, window_width, window_height;
SDL_GetWindowSize(window, &window_width, &window_height);

if (g_Config.iGPUBackend == (int)GPUBackend::OPENGL)
SDL_GL_GetDrawableSize(window, &drawable_width, NULL);
Expand All @@ -200,13 +200,6 @@ static void UpdateScreenDPI(SDL_Window *window) {
// Round up a little otherwise there would be a gap sometimes
// in fractional scaling
g_DesktopDPI = ((float) drawable_width + 1.0f) / window_width;

// Temporary hack
#if PPSSPP_PLATFORM(MAC) || PPSSPP_PLATFORM(IOS)
if (g_Config.iGPUBackend == (int)GPUBackend::VULKAN) {
g_DesktopDPI = 1.0f;
}
#endif
}

// Simple implementations of System functions
Expand Down Expand Up @@ -1438,11 +1431,6 @@ int main(int argc, char *argv[]) {
}
#endif
}
#if PPSSPP_PLATFORM(MAC) || PPSSPP_PLATFORM(IOS)
if (g_Config.iGPUBackend == (int)GPUBackend::VULKAN) {
g_ForcedDPI = 1.0f;
}
#endif

UpdateScreenDPI(window);

Expand Down

0 comments on commit 7d8c7dd

Please sign in to comment.