The NVIDIA EGL fallback (added for the #40077 580-series crash, bounded to
{580} by #123213) forced every 580 host onto all-CPU SwiftShader
compositing. But the same driver point release breaks one host and not
another: 580.178.04 kills the GPU process where NVIDIA drives the display,
and renders fine on hybrid hosts whose session EGL lands on the iGPU
(#124255 reporter, psukez on #123203). The all-CPU fallback then turns a
known Chromium stuck-Button-observer leak (~0 cost with GPU compositing)
into a silent 4-9 core burn.
Replace the driver-major set with a behavioral probe (option A from the
#124255 decision prep): a Linux+NVIDIA host boots with hardware GL and a
booting marker; a GPU-process death before first window reveal (reasons
crashed / launch-failure / killed — #40077 died to Chromium's health-check
SIGTERM, exit_code=15) flips the marker sticky per app version + full
driver version and relaunches once with --use-angle=swiftshader. A healthy
boot marks ok; an app or driver update re-probes once. A leftover booting
marker (the 'GPU process isn't usable' FATAL abort winning the race)
engages on the next launch. HERMES_DESKTOP_NVIDIA_SWIFTSHADER still forces
on/off; HERMES_DESKTOP_DISABLE_GPU=0 still wins. Never
disableHardwareAcceleration() — that SIGKILLs the renderer on 580 +
Electron 40 (#40119).
Healthy 580 hosts get hardware rendering back; broken ones still reach the
desktop in at most one extra restart per app/driver update.
Follow-up to #123213. The in-app notice (#123598) and the warn-once
stuck-observer log (#124275) remain complementary and are not included.
Fixes#124255