Solarflare is a fork of Sunshine, the self-hosted game stream host for Moonlight, extended with support for PyroWave — a GPU-only intra-frame wavelet video codec that runs entirely in Vulkan compute. PyroWave trades the inter-frame compression of H.264/HEVC/AV1 for extremely low, fixed encode latency and total independence from hardware video encoders, which makes it a strong fit for LAN game streaming and for devices whose encoder blocks are weak, broken, or missing entirely (the AMD BC-250 being the canonical example).
Everything Sunshine does is still here: hardware encoding on AMD, Intel, and Nvidia GPUs, software encoding, a web UI for configuration and pairing, and compatibility with standard Moonlight clients. PyroWave is an additional encoder you can select or force, negotiated only with clients that support it — the Aurora PC client and Aurora for Android.
- PyroWave encoder (vendored from the WiVRn fork of Hans-Kristian Arntzen's PyroWave): Vulkan compute encode with RDO rate control, zero-copy DRM-PRIME capture import on Linux/KMS, and GPU color conversion.
- Conditional replenishment: unchanged 32x32 blocks are skipped on the wire and refreshed on a rolling schedule, cutting bitrate drastically on mostly-static content; the freed budget is spent on image quality.
- Loss resilience: RTP-payload-aligned packetization, self-recovering client-side parsing, and refresh requests answered with full frames.
- Adaptive FEC and adaptive bitrate (client opt-in), with capped overhead.
- HDR10 (BT.2020 + PQ) and 4:4:4 chroma PyroWave modes.
- Phase-locked frame pacing cooperating with client present-wait feedback.
- Web UI additions: a dedicated PyroWave tab under Configuration, PyroWave in the forceable encoder list, and encoder-aware Advanced settings.
- Rebranding: Solarflare name and artwork throughout; config lives in
~/.config/solarflare(solarflare.conf,solarflare_state.json,solarflare.log); upstream update checks and donation prompts removed.
Build exactly like upstream Sunshine (see the Sunshine docs), with PyroWave enabled via:
cmake -DSUNSHINE_ENABLE_PYROWAVE=ON ...A Vulkan SDK is required. Shader generation needs python3 and glslangValidator on the PATH.
- Sunshine by LizardByte — the project this fork is based on; all host, capture, and streaming infrastructure comes from there.
- PyroWave by Hans-Kristian Arntzen — the codec design and reference implementation.
- WiVRn — the PyroWave fork vendored here, plus the original encoder integration this port follows.
- Moonlight — the streaming protocol and client ecosystem.
GPL-3.0, same as upstream Sunshine. Original copyright and attribution notices are retained.
