Skip to content

perf: isolate macOS render and decoder pressure - #80

Merged
tcconnally merged 3 commits into
mainfrom
perf/macos-frame-pump
Aug 29, 2026
Merged

perf: isolate macOS render and decoder pressure#80
tcconnally merged 3 commits into
mainfrom
perf/macos-frame-pump

Conversation

@tcconnally

Copy link
Copy Markdown
Owner

Summary

  • Coalesce libmpv frame-update notifications before they enter the Qt GUI queue.
  • Export bounded frame-pump counters separately from render counters.
  • Export requested/active decoder and per-resource fallback/quarantine state.
  • Add a sanitized powermetrics/sample parser and bounded profiling CLI.
  • Add the macOS M5 performance roadmap and link it from the README.

Why

The recent M5 evidence showed a real CPU/render problem, but not a decoder-only fix. The Hyperwall process averaged 2.14 CPU cores in the captured hardware trial. The corrected normalized render CPU was about 0.8275 core-equivalents for software versus 0.8313 for hardware. The frame pump therefore needs direct measurement and bounded queue behavior before another long soak.

Validation

  • python3 tests/run_all.py passes with all repository suites green.
  • Focused frame-pump, telemetry, decoder-observability, roadmap, and profile tests pass.
  • The profile CLI was exercised against the real 600-sample powermetrics artifact and a sanitized stack capture.
  • git diff --check, Python compilation, and shell checks pass.

Scope boundary

This PR does not claim that 8-cell playback is production-ready. It does not make videotoolbox-copy a global default and does not use the rejected runtime 30/25 live-transcode shaping. A short native M5 profile and measured 4/6/8-cell capacity gate remain required.

Tracking

Refs #75
Refs #76
Refs #77
Refs #78
Refs #79

@tcconnally
tcconnally merged commit b1d14a3 into main Aug 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant