Skip to content

Commit cebdc51

Browse files
Default AndroidPerformanceMode + AndroidLowLatencyAudio to ON for fresh installs
Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/b47fdb81-471e-4b32-bd21-242b71bf8ed3 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
1 parent db6ec3e commit cebdc51

1 file changed

Lines changed: 26 additions & 2 deletions

File tree

osu.Game/Configuration/OsuConfigManager.cs

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,32 @@ protected override void InitialiseDefaults()
239239

240240
SetDefault(OsuSetting.DashboardSortMode, UserSortCriteria.LastVisit);
241241
SetDefault(OsuSetting.DashboardDisplayStyle, OverlayPanelDisplayStyle.Card);
242-
SetDefault(OsuSetting.AndroidPerformanceMode, false);
243-
SetDefault(OsuSetting.AndroidLowLatencyAudio, false);
242+
// Android performance defaults — both ON for fresh installs.
243+
//
244+
// - AndroidPerformanceMode = true:
245+
// Begins a high-performance GC session (GCLatencyMode.SustainedLowLatency
246+
// while in foreground) for the entire app lifetime, eliminating the
247+
// Gen1/Gen2 STW pauses that are the largest source of >1ms frame spikes
248+
// on the Update/Draw threads. Sustained Performance Mode + immersive
249+
// fullscreen + highest-refresh-rate are layered on top from
250+
// OsuGameAndroid. The setting was historically default-off because the
251+
// mitigations layered on it (refresh-rate switch, surface mode change)
252+
// could race the cold-start swapchain bring-up; the deferred-by-5s
253+
// scheduler in OsuGameAndroid.LoadComplete now handles that, and
254+
// AndroidStartupSafeMode catches any device-specific regression on the
255+
// next launch — so default-on is finally safe.
256+
// - AndroidLowLatencyAudio = true:
257+
// Routes BASS through Oboe (AAudio Exclusive + MMAP + StabilizedCallback)
258+
// instead of BASS's default OpenSL ES path. Cuts output latency from
259+
// ~80-120ms to ~5-15ms on devices that support MMAP, and makes the audio
260+
// callback eligible for ADPF priority hints. Initial bind is also
261+
// deferred under AndroidDeferStartupNativeInit, so default-on does not
262+
// widen the cold-start window.
263+
// - AndroidVulkanProbe stays default-off — it's a pure diagnostic that
264+
// constructs a transient VkInstance and adds startup time without
265+
// affecting steady-state performance. Power users opt in.
266+
SetDefault(OsuSetting.AndroidPerformanceMode, true);
267+
SetDefault(OsuSetting.AndroidLowLatencyAudio, true);
244268
SetDefault(OsuSetting.AndroidVulkanProbe, false);
245269
SetDefault(OsuSetting.AndroidStartupFrameSyncMigrationApplied, false);
246270

0 commit comments

Comments
 (0)