Debug-signed arm64 test build, not for stores. Built from 50e8ea7.
Latency and resolution
- Every latency-saving setting is now on by default: phone performance hints, max GPU clocks, keep only the newest frame, instant mouse and pen input, and stream traffic priority.
- The stream now defaults to this phone's own resolution and top refresh rate. The presets are now two: Native (recommended) and Battery saver (native resolution at 30 fps). Any other change shows as Custom.
- Existing installs switch to native resolution with every latency setting on once, when they update. Codec, HDR, 4:4:4 and VRR choices stay as they were.
- Fast video codecs (H.264, HEVC, AV1) hand each frame to the screen at the very next refresh instead of a computed later one, which removes an intermittent extra frame of delay.
PyroWave
- PyroWave now decodes and presents on separate threads, so decoding no longer waits for the screen. This removes the ~62 fps cap and the "network loss" it caused at 120 fps.
- PyroWave skips a frame when a newer one is already waiting, so a phone that falls behind catches up at once.
- PyroWave uses mailbox presentation whenever the phone offers it.
- New opt-in switch: Settings > Advanced > Front-buffer rendering for PyroWave (experimental). It draws frames straight into the image on screen for the lowest latency, but fast motion can show a tear line. It is off by default; when it is active, the overlay's present mode reads FRONT_BUFFER.
- The overlay shows waits for free planes and screen images and how many frames were replaced by a newer one.
- PyroWave SDK 1.0 decoder (PyroWave 502a3b52, Granite fb178c80). The bitstream is unchanged, so it works with the current host.
Under the hood
- PyroWave framing now uses the shared Rust protocol crate, the same code as the host.
- moonlight-common-c f900dd4 and BouncyCastle 1.86.
- Low-latency mode label shows the chip vendor on Snapdragon's dedicated low-latency decoders.
Please test on your phone:
- That the stream starts at your phone's resolution and refresh rate, and that it feels faster than test.5.
- PyroWave at 120 fps: smooth, no "network loss". Optionally try the front-buffer switch and tell me whether the tearing is acceptable.
- AV1 over several sessions: is the occasional sluggishness gone?
Checked here: native build for all ABIs, debug and release APKs, 690 unit tests, lint (no errors), full emulator smoke test, a fresh install (native 2400x1080, latency settings on, front-buffer off) and, on the previous commit, an upgrade from the test.5 code (720p and switches off became native with switches on). On the emulator the PyroWave decoder library loads and its SDK 1.0 version check passes. Real PyroWave decoding needs Vulkan 1.3, which the emulator lacks, and streaming needs a host, so neither was tested here.