watchthelight labs

NVIDIA on macOS: what moved, 2026-10-15 to 2026-10-22

Target: NvGfx, our NullMoth fork for a Legion 5 15IAX10 (RTX 5070 Laptop, GB206, 165 Hz eDP panel on the NVIDIA GPU, macOS 26.7.1 25G241). The fork's default branch is nvgfx-2.4.3. Confidence uses High / Medium / Low / Unverified.

Actionable

NullMoth 2.4.4 fixes a hang reported on our exact machine (High). Upstream #322: Terminal and iTerm2 hang after vk: completion witness missing, reported on a Legion 5 15IAX10 with the RTX 5070 Laptop (10DE:2D18) at 3360x2100 165 Hz on 25G241. The fix is in 2.4.4. The fork is on 2.4.3, so it doesn't have it yet.

Opt-in flip latch for high refresh panels (High that it exists, Unverified on our panel). 2.5.2 adds debug.nvrmfb_flip_latch=2 (upstream #300). The reporter measured the per-submit cost fall from 3.14 ms to 0.22 ms on a 240 Hz panel. It's a sysctl, so it can be tried on 2.5.x without a rebuild. The default stays at 1 because it flickered on some machines.

Two upstream routes for Discord's lag (our I-071) (Medium).

  • 2.5.1 uploads CPU-drawn surfaces from the IOSurface's own pages with the copy engine (upstream #296). It overlaps the fork's async upload at bind time, and the two may stack: theirs removes the page-fault cost, ours removes the wait. NVMTL_ASYNC_TEX_UPLOAD=1 (off by default) makes texture uploads async too.
  • Open PR #348 puts Discord on ANGLE Metal instead of GL, which skips Apple's GL-on-Metal entirely. NVMTL_ANGLE_METAL=1 does the same per app today. Upstream reverted Electron on ANGLE Metal once before over corruption on RTX 30/50 cards, so test it on GB206 first.

Move the fork to 2.5.3, as a staged port (Medium).

  • 2.5.0 moves the NVIDIA base from 610.57.04 to 615.78.08 and puts gamma on 615's output-LUT surface. The fork's NVRM changes (power-source refresh, brightness) will conflict.
  • 2.5.0 to 2.5.2 panic at boot when any nvregdwords= boot-arg is set; 2.5.3 fixes it.
  • The fork's boot-hold cap is now upstream as nvrmholdcap (merged in 2.5.2, with authorship kept), so that change can be dropped.
  • Other gains: the 2.4.3 fix for the thread_call group 'high' reached max thread cap panic, 2.4.4's earlier Metal device on laptops (about 8 s instead of 60 s), and the window-drag app kills fixed in 2.5.1.
  • Licence: PolyForm Noncommercial 1.0.0, same as the fork.

Brightness: compare before porting (Medium). Open PR #312 keeps 0 to 65535 logical brightness targets across power requests and delays the NVRAM save; NullMoth said it will merge once panels are checked. Diff it against the fork's own brightness handling before the port.

Notable

  • Work from our side landed upstream (High). The submit-ahead pass (PR 289) shipped in 2.3.7, the AIR digest change in 2.4.3, table-called functions in 2.4.4 and the boot-hold cap in 2.5.2. NvGfx #6 can likely close after a re-measure.
  • Scaled modes (High). 2.5.1 moves scaled modes to the head scaler (#273), relevant to NvGfx #5. HiDPI above half native (#341) is still open upstream.
  • Early slow drags (Medium). Nothing upstream covers NvGfx #11. The fork's change that runs the ahead pass on its own queue is still fork-only and could be offered upstream.
  • Another RTX 5070 laptop on NullMoth (High that it exists; ideas only, no licence). BelikPePe-UA/legion5-15irx10-hackintosh runs 2.4.3 on a Legion 5 15IRX10.
    • A one-byte patch raises NVMTL's 32 MiB staging-buffer threshold, because a 3840x2400 HiDPI surface is 36.9 MB. WindowServer CPU fell from about 108% to 46%.
    • It also patches NVRM's viewport scale for HiDPI.
    • Worth checking whether the fork's 2560x1600 HiDPI modes cross the same threshold.
  • HP OMEN 16 on Tahoe (High). Game-5040/hackintosh-hp-8f06-macos26 (MIT) runs 2.5.2 with an RTX 5070 Laptop and uses nvrmacpibl=1 for brightness.
  • NullMoth's installer bundles four of our kexts (High). nullmoth/1401 commit bba6075de pins LegionCbmrFix, LegionCpuPower, LegionI2CArrowLake and LegionITEKbdFix by hash and credits them correctly in its NOTICE. It still reports MT7925 as having no driver.
  • Freezes after login on 2.4.3 and 2.5.2 (Low). Upstream #328, on another Legion, is still open.
  • metal2vulkan on ANV (Medium). steelbrain/reims-vgpu moved its translator to builds that cut ANV cold compiles from about 14 s to 4 s and size oversized pipelines to fit ANV. The translator shares a base with ours; this matters to the xe branch.

Noise

NVIDIA open-gpu-kernel-modules 615.71.10 and 580.196.07 are datacenter releases with nothing for GB206 or laptops. nullmoth/1401-probe only renamed a script comment. Five discovery hits (an EFI builder, an Apple Silicon Triton backend, a game port, a G14 EFI, an OpenCore audit skill) don't touch this project.