Environment
- App: Codex Desktop v26.513.31313 (Electron 42.0.1)
- OS: macOS 13 Ventura (Darwin 22.6.0)
- Hardware: MacBook Pro 2017 (MacBookPro14,3)
- Intel Core i7 (3.1 GHz, 4-core)
- Intel HD Graphics 630 (integrated, 1.5 GB shared VRAM)
- AMD Radeon Pro 560 (discrete, 4 GB)
- Angle backend: defaults to OpenGL; also reproducible with
--use-angle=metal
Symptom
After launching Codex, the home page and plugins page show transparent/blurry areas where the desktop background is visible through the window. The affected areas correspond to elements using backdrop-filter: blur() (frosted glass / blur effects).
The bug does NOT occur when:
- Running on Apple Silicon Macs (M1/M2/M3)
- Running with
--in-process-gpu (but this causes significant UI lag)
Root Cause
backdrop-filter: blur() triggers the GPU compositor to capture background content via IOSurface for the blur effect. On Intel HD Graphics 630 under macOS 13, this IOSurface transfer between GPU process and renderer process fails or returns empty data, resulting in transparent pixels.
This is a Chromium/Electron GPU compositor bug specific to the Intel HD 630 driver + macOS 13 + IOSurface IPC path. It is not specific to Codex — any Electron app using backdrop-filter on this hardware combination would be affected.
Steps to Reproduce
- Launch Codex on an Intel Mac (2017 or similar) running macOS 13
- Navigate to the home page or plugins page
- Observe transparent/blurry areas where
backdrop-filter: blur() is used
Workaround
We developed a CDP (Chrome DevTools Protocol) runtime injection approach:
- Launch Codex with
--remote-debugging-port=9222
- After the page loads, inject
* { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } via Runtime.evaluate
- This eliminates the transparent areas with zero performance impact
Known trade-off: Rounded corner anti-aliasing quality is slightly reduced on Intel GPU (because backdrop-filter was accidentally creating compositor layers that improved border-radius rendering).
Full fix repository: https://github.com/Uncle-Gao/codex-gpu-fix
Suggested Fix (for Codex team)
Option A (quick): Detect Intel GPU at runtime and skip backdrop-filter effects, falling back to opaque backgrounds. The visual difference is minimal — mainly affects the frosted glass sidebar, which could use a solid rgba() background as fallback.
Option B (deeper): Ship a Chromium patch that works around the Intel HD 630 IOSurface bug. Alternatively, use --disable-gpu-rasterization selectively for backdrop-filter compositing only.
Option C (Chromium upstream): This is ultimately a Chromium bug. The Intel HD 630 macOS driver's IOSurface implementation is buggy, but Chromium could add a workaround (e.g., fall back to CPU readback for backdrop-filter on affected GPUs).
Related
Environment
--use-angle=metalSymptom
After launching Codex, the home page and plugins page show transparent/blurry areas where the desktop background is visible through the window. The affected areas correspond to elements using
backdrop-filter: blur()(frosted glass / blur effects).The bug does NOT occur when:
--in-process-gpu(but this causes significant UI lag)Root Cause
backdrop-filter: blur()triggers the GPU compositor to capture background content via IOSurface for the blur effect. On Intel HD Graphics 630 under macOS 13, this IOSurface transfer between GPU process and renderer process fails or returns empty data, resulting in transparent pixels.This is a Chromium/Electron GPU compositor bug specific to the Intel HD 630 driver + macOS 13 + IOSurface IPC path. It is not specific to Codex — any Electron app using
backdrop-filteron this hardware combination would be affected.Steps to Reproduce
backdrop-filter: blur()is usedWorkaround
We developed a CDP (Chrome DevTools Protocol) runtime injection approach:
--remote-debugging-port=9222* { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }viaRuntime.evaluateKnown trade-off: Rounded corner anti-aliasing quality is slightly reduced on Intel GPU (because
backdrop-filterwas accidentally creating compositor layers that improved border-radius rendering).Full fix repository: https://github.com/Uncle-Gao/codex-gpu-fix
Suggested Fix (for Codex team)
Option A (quick): Detect Intel GPU at runtime and skip
backdrop-filtereffects, falling back to opaque backgrounds. The visual difference is minimal — mainly affects the frosted glass sidebar, which could use a solidrgba()background as fallback.Option B (deeper): Ship a Chromium patch that works around the Intel HD 630 IOSurface bug. Alternatively, use
--disable-gpu-rasterizationselectively for backdrop-filter compositing only.Option C (Chromium upstream): This is ultimately a Chromium bug. The Intel HD 630 macOS driver's IOSurface implementation is buggy, but Chromium could add a workaround (e.g., fall back to CPU readback for backdrop-filter on affected GPUs).
Related