macOS

Safari WebRTC video window black when external eGPU connected on macOS 13.6

Environment

Environment

MacBook Pro 16" 2019 running macOS 13.6, external eGPU (Radeon RX 5700 in Thunderbolt 3 enclosure) connected via TB3, Safari 16.6 and Chrome tested, built-in FaceTime camera and USB UVC external cameras both show the black square only when eGPU is active.

Symptoms

Symptoms

When the eGPU is connected and active, in Safari-based WebRTC calls (Webex web client, BigBlueButton), remote and local video panes render as a solid black rectangle while audio continues to work. When eGPU is unplugged, video renders normally. The issue reproduces only in browsers; native apps that use AVFoundation (QuickTime) record video fine while eGPU is present.

Observations

Observations

Console logs show repeated GPU-related messages from WindowServer mentioning IOFramebuffer and accelerated compositing resets; Safari's WebRTC logs indicate video frames being decoded but not composited. Disabling 'Prefer External GPU' for Safari in Finder > Get Info did not change behavior. Chrome shows same black window, but when forcing software rendering (via chrome://flags) video appears correctly. Video hardware acceleration is enabled in both browsers by default.

Already attempted

Already attempted

Restarted macOS with eGPU attached and detached; toggled 'Prefer External GPU' for browsers and for system; reset NVRAM and SMC; updated eGPU enclosure firmware and AMD driver components where available; tested with two different USB UVC webcams and the internal camera; tested with an HDMI monitor attached to eGPU and to laptop display only — black video persists as long as eGPU is active.

Question

Question

What debugging steps should I follow to isolate whether this is a macOS compositor/eGPU driver regression, a browser-specific hardware acceleration issue, or a camera pipeline problem? What safe mitigations let me continue using the eGPU without losing browser WebRTC video?

COMMUNITY RESPONSES

Verified community troubleshooting

0 replies

No answers yet..

Showing 0 of 0 community responses
AI DIAGNOSTICS

Incident analysis

Updated 1w ago• Trouble ID

Most likely causes

macOS GPU driver/regression causing WindowServer accelerated compositing to fail for sandboxed browser GPU processes when eGPU is active. 90%
Browser GPU process using a different GL/Metal device id when eGPU is present, causing incompatible layer backing and failing compositing. 75%
Camera frames being copied using CPU path but browser expects GPU-backed pixel buffers, and buffer transfer to eGPU fails. 40%

Summary

The problem is limited to GPU-accelerated browser compositing when the system uses the eGPU. Native capture/recording works, and forcing software rendering in Chrome resolves the issue, indicating the capture pipeline is fine but compositing with the eGPU-backed acceleration fails. Console WindowServer framebuffer logs imply the OS is switching GPU contexts or failing to composite accelerated layers for sandboxed browser tabs. This can be due to driver bugs, mismatched GPU process acceleration, or GPU affinity changes when eGPU is the active accelerator.

Suggested Fixes

Diagnostic step 1
Reproduce with minimal variables: boot into safe mode (disables third-party kexts) and test; if video works, third-party drivers or extensions are suspect.
Diagnostic step 2
In Safari/Chrome, disable hardware video acceleration and confirm video appears; if so, keep acceleration off for those apps until vendor fixes are available.
Diagnostic step 3
Collect logs: run 'log show --predicate "process == \"WindowServer\" || process == \"Safari\"' --last 1h' while reproducing and capture browser internals (about:gpu or WebRTC logs) to correlate failures.

Continue troubleshooting

Matched from the title, description and tags