v0.21.0
LizardByte/Sunshinev0.21.0Oct 16, 2023by LizardByte-bot
AI Summary
A feature release adding DS4 emulation enhancements, AV1 encoding, and IPv6 support.
Key Highlights
- DS4 emulation: touchpad, motion sensors, battery state, LED control
- Implemented AV1 encoding
- Implemented IPv6 support
- Added option to automatically select controller type based on physical controller
- Added support for Applications (context menu) key
New Features
- Reduce latency by implementing input batching
- Added port configuration table
- Added Steam app shortcut modernization
- Added pen and touch support on Windows
- Added support for capturing rotated displays
Full Release Notes
**Added** - (Input) Add support for automatically selecting the emulated controller type based on the physical controller connected to the client - (Input/Windows) Add support for Applications (context menu) key - (Input/Windows) Implement touchpad, motion sensors, battery state, and LED control for the emulated DualShock 4 controller - (Input) Advertise support for new input features to clients - (Linux/Debian) Added Debian Bookworm package - (Prep-Commands) Expose connection environment variables - (Input/Windows) Implement pen and touch support - (Capture/Windows) Add standalone NVENC encoder - (Capture) Implement AV1 encoding - (Network) Implement IPv6 support - (Capture/Windows) Add option to disable realtime hags - (Graphics/NVIDIA) Add an option to decrease GPU scheduling priority to workaround HAGS video hang - (Capture/Linux) Add FFmpeg powerpc64le architecture for self compiling Sunshine - (Capture/Windows) Add support for capturing rotated displays - (System Tray) Implement streaming event notifications - (UI) Add port configuration table - (Applications) Added option to automatically treat launcher type apps as detached commands - (Input/Gamepad) Allow the Misc button to work as Guide on emulated Xbox 360 controllers **Changed** - (Input) Reduce latency by implementing input batching - (Logging) Move input packet debug prints off the control stream thread - (Input) Refactor gamepad emulation code to use DS4 extended report format - (Graphics/NVIDIA) Modify and restore NVIDIA control panel settings before and after stream, respectively - (Graphics/NVIDIA) New config page for NVENC - (Graphics/Windows) Refactor DX shaders - (Input/Windows) Use our own keycode mapping to avoid installing the US English keyboard layout **Fixed** - (UI) Fix update notifications - (Dependencies/Linux) Replace libboost chrono and thread with standard chrono and thread - (Input) Increase maximum gamepad limit to 16 - (Network) Allow use of multiple ENet channels - (Network) Consider link-local addresses on LAN - (Input) Fixed issue where button may sometimes stick on Windows - (Input) Fix "ControllerNumber not allocated" warning when a gamepad is removed - (Input) Fix handling of gamepad feedback with multiple clients connected - (Input) Fix clamping mouse position to aspect ratio adjusted viewport - (Graphics/AMD) Fix crash during startup on some older AMD GPUs - (Logging) Fix crash when non-ASCII characters are logged - (Prep-Commands) Fix resource exhaustion bug which could occur when many prep commands were used - (Subprocesses) Fix race condition when inserting new processes - (Logging) Log error if encoder doesn't produce IDR frame on demand - (Audio) Improve audio capture logic and logging - (Logging) Fix AMF logging to match configured log level - (Logging) Log FFmpeg to log file instead of stdout - (Capture) Reject codecs that are not supported by display device - (Capture) Add fallbacks for unsupported codec settings - (Capture) Avoid probing HEVC or AV1 codecs in some cases - (Caputre) Remove DwmFlush() - (Capture/Windows) Improvements to capture sleeps for better frame stability - (Capture/Windows) Adjust capture rate to better match with display - (Linux/ArchLinux) Fix package version in PKGBUILD and precompiled package - (UI) Highlight fatal log messages in web ui - (Commands) Allow stream if prep command fails - (Capture/Linux) Fix KMS grab VRAM capture with libva 2.20 - (Capture/macOS) Fix video capture backend - (Misc/Windows) Don't start the session monitor window when launched in command mode - (Linux/AppImage) Use the linuxdeploy GTK plugin to correctly deploy GTK3 dependencies - (Input/Windows) Fix reWASD not recognizing emulated DualShock 4 input **Dependencies** - Bump bootstrap from 5.2.3 to 5.3.2 - Bump third-party/moonlight-common-c from c9426a6 to 7a6d12f - Bump gcc-10 in Ubuntu 20.04 docker image - Bump furo from 2023.5.20 to 2023.9.10 - Bump sphinx from 7.0.1 to 7.2.6 - Bump cmake from 3.26 to 3.27 in Fedora docker images - Move third-party/nv-codec-headers from sdk/11.1 branch to sdk/12.0 branch - Automatic bump ffmpeg - Bump actions/checkout from 3 to 4 - Bump boost from 1.80 to 1.81 in Macport manifest - Bump @fortawesome/fontawesome-free from 6.4.0 to 6.4.2 **Misc** - (Docs) Force badges to use svg - (Docs) Add Linux SSH example - (Docs) Add information about mesa for Linux - (CI) Free additional space on Docker, Flatpak, and AppImage builds due to internal changes on GitHub runners - (Docs/Logging/UI) Corrected various typos - (Docs) Add blurb about Gamescope compatibility - (Installer/Windows) Use system proxy to download ViGEmBus - (CI) Ignore third-party directory for clang-format - (Docs/Linux) Add Plasma-Compatible resolution example - (Docs) Add Sunshine website available at https://app.lizardbyte.dev/Sunshine - (Build/Windows) Fix audio code build with new MinGW headers - (Build/Windows) Fix QoS code build with new MinGW headers - (CI/Windows) Prevent winget action from creating an update when running in a fork - (CI/Windows) Change winget job to ubuntu-latest runner - (CI) Add CodeQL analysis - (CI/Docker) Fix ArchLinux image caching issue - (Windows) Manifest improvements - (CI/macOS) Simplify macport build - (Docs) Remove deprecated options from readthedocs config - (CI/Docs) Lint rst files - (Docs) Update localization information (after consolidating Crowdin projects) - (Cmake) Split CMakelists into modules - (Docs) Add Linux Headless/SSH Guide