watchthelight labs

System Settings panes burn CPU re-hashing shader AIR (Displays pane: 7.7 s CPU per 12 s) #6

openarea:gpukind:upstreamseverity:mediumfound-by:featuretest
watchthelight 2026-10-18

Opening the Displays pane makes DisplaysExt spend 7.6-8.0 s of CPU in the first 12 s on stock 2.3.7. The plugin never keeps a module's AIR digest: the cacheability test ![ll isKindOfClass:[NSMutableString class]] is false for every CF-backed string, so every reflection, specialization and variant lookup hashes the module again.

Upstream PR: nullmoth/nvidia-macos-driver#294 (3.6-3.8 s with the fix). The fork's full change (dcc4ab4, on nvgfx-2.3.7) reaches 2.7-2.9 s.

Tested on RTX 5070 Laptop (GB206, 10DE:2D18), Lenovo Legion 5 15IAX10, macOS 26.7.1 (25G241). Evidence: project-legion evidence/native/pr-settings-2.3.7/README.md, project-legion evidence/native/featuretest-2026-10-18/A/desk.panes.txt.

watchthelight 2026-10-18

Guided check on stock 2.3.7: Launchpad icons take a long time to appear the first time (Bash). Same per-call shader work as the Settings panes; to be re-checked with the fork on 2.3.7 (pass B).

watchthelight 2026-10-19

Fork 2.3.7-nvgfx.1: Displays pane 3.21 s CPU per 12 s (stock 7.72 s). Settings pane icons still appear late (placeholder squares at 3 s, complete by 15 s), so the remaining first-load cost is worth a look after PR 294.

watchthelight 2026-10-22

Upstream scout, 2026-10-22: the AIR digest change from this issue went into NullMoth upstream in 2.4.3, and the fork's own copy was dropped in favour of it (�49dca4d7). Worth re-measuring the Displays pane on 2.4.3-nvgfx; if the CPU burn is gone, this can close.

Write-up: https://github.com/watchthelight-labs/research/blob/main/scout/nvgfx/2026-10-22.md

Reply on GitHub