From e278d3a66835c300bb01886317c529f11033db77 Mon Sep 17 00:00:00 2001 From: avarayr <7735415+avarayr@users.noreply.github.com> Date: Wed, 24 Sep 2025 13:27:16 -0400 Subject: [PATCH] Fix: Disable window shadows on macOS Tahoe to prevent GPU performance issues (#267724) * fix: disable window shadows on macOS Tahoe to prevent GPU performance issues Fixes #267022 macOS Darwin 25.x (Tahoe) has a WindowServer bug that causes windows with shadows to consume 80%+ GPU resources. This change disables window shadows specifically for Darwin 25.x to work around the performance regression. The fix is applied in defaultBrowserWindowOptions to ensure all VSCode windows are affected consistently. * chore: clarify comment * chore: cleanup --------- Co-authored-by: deepak1556 --- src/vs/base/common/platform.ts | 4 ++++ src/vs/platform/windows/electron-main/windows.ts | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/vs/base/common/platform.ts b/src/vs/base/common/platform.ts index cf76f7ce0e1..8c0d6c319e9 100644 --- a/src/vs/base/common/platform.ts +++ b/src/vs/base/common/platform.ts @@ -278,3 +278,7 @@ export const isAndroid = !!(userAgent && userAgent.indexOf('Android') >= 0); export function isBigSurOrNewer(osVersion: string): boolean { return parseFloat(osVersion) >= 20; } + +export function isTahoe(osVersion: string): boolean { + return parseFloat(osVersion) === 25; +} diff --git a/src/vs/platform/windows/electron-main/windows.ts b/src/vs/platform/windows/electron-main/windows.ts index 57d8b534e68..52317939863 100644 --- a/src/vs/platform/windows/electron-main/windows.ts +++ b/src/vs/platform/windows/electron-main/windows.ts @@ -4,10 +4,11 @@ *--------------------------------------------------------------------------------------------*/ import electron, { Display, Rectangle } from 'electron'; +import { release } from 'os'; import { Color } from '../../../base/common/color.js'; import { Event } from '../../../base/common/event.js'; import { join } from '../../../base/common/path.js'; -import { IProcessEnvironment, isLinux, isMacintosh, isWindows } from '../../../base/common/platform.js'; +import { IProcessEnvironment, isLinux, isMacintosh, isTahoe, isWindows } from '../../../base/common/platform.js'; import { URI } from '../../../base/common/uri.js'; import { IAuxiliaryWindow } from '../../auxiliaryWindow/electron-main/auxiliaryWindow.js'; import { IConfigurationService } from '../../configuration/common/configuration.js'; @@ -186,6 +187,14 @@ export function defaultBrowserWindowOptions(accessor: ServicesAccessor, windowSt if (windowSettings?.clickThroughInactive === false) { options.acceptFirstMouse = false; } + + // Mac OS 26.?.? has a `WindowServer` bug that causes (some?) windows with shadows + // to cause 80%+ GPU load. + // See: https://github.com/electron/electron/issues/48311 + // TODO: once the bug is fixed in the OS, lock this into a specific version. + if (isTahoe(release())) { + options.hasShadow = false; + } } if (overrides?.disableFullscreen) {