fix(desktop/windows): cut Memories-page GPU usage by removing backdrop-filter behind the brain graph#8902
Merged
Conversation
…h to cut GPU usage The BrainGraph WebGL canvas on the Memories page was wrapped in a .surface-card (.glass) container that applies backdrop-filter: blur. Layering a hardware-accelerated WebGL canvas over a blurred surface forces the Chromium/DWM compositor to re-blend the graph texture on every unrelated UI repaint, pinning GPU at 50-60% even when the graph is idle. Replace the glass wrapper with a flat solid-tint + hairline border that preserves the card aesthetic without the blur. fixes #8438
Git-on-my-level
approved these changes
Jul 3, 2026
Git-on-my-level
left a comment
Collaborator
There was a problem hiding this comment.
Approving. Clean, well-scoped fix — the diagnosis (WebGL canvas layered over backdrop-filter forces compositor re-blend on every repaint) is correct and verified against globals.css. bg-black/40 faithfully reproduces --glass-bg (rgba(0,0,0,0.42)), rounded-2xl is preserved, and leaving frameloop="always" alone is the right call given the continuous pulse animation.
Two immaterial notes for completeness:
- The new wrapper drops
.glass'sbox-shadow, which has no visible effect here since the graph fills the card. border-white/[0.08]is marginally lighter than.glass'srgba(255,255,255,0.10)border — consistent with the existingglass-subtleidiom.
Thanks for the clear write-up and the link to issue #8438.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
On the Windows desktop Memories page, the
BrainGraph(React Three Fiber WebGL canvas) was wrapped in a.surface-cardcontainer, which applies.glass→backdrop-filter: blur(...). This PR replaces that glass wrapper with a flat solid-tint + hairline border, keeping the card look but removing the blur behind the canvas.Why
From the issue (#8438):
The reporter (@thesohamdatta) attached a screen recording showing the sustained GPU load.
Scope
This implements solution #1 from the issue (isolate the WebGL canvas from
backdrop-filter), which is the actual compositor root cause and needs no product decision.--glass-bgisrgba(0,0,0,0.42), sobg-black/40reproduces the surface tint without the blur;border-white/[0.08]+rounded-2xlmatch the existing card idiom already used across the renderer.I intentionally left the graph's R3F loop alone. The issue's solution #2 assumes
frameloop="demand", butBrainGraph.tsxdeliberately usesframeloop="always"to drive its continuous pulsing/shine animation — reworking that is a separate, design-affecting change and out of scope here.Verified
npm run typecheck:web(tsc) — passes clean.eslinton the touched file — no new errors/warnings introduced (only pre-existing ones remain); the added lines are prettier-conformant.backdrop-filterthe issue identifies as the cause.Auto-generated from issue feedback by the mini issues-improver. Review before merge.