display_ram_t::snapshot() read GetTextureSubImage() using the CRTC's output viewport dimensions, not the imported plane texture's actual size. These differ when the display controller hardware-scales a plane at scanout (e.g. a game's native-resolution exclusive-fullscreen swapchain stretched to fill a higher-resolution output) -- kmsgrab imports the plane's raw pre-scale buffer via DMA-BUF, bypassing the CRTC scaler entirely, so the texture is the smaller native size while the destination buffer is sized for the full output. Reading past the texture's real bounds triggered GL_INVALID_VALUE every frame, which manifested as a black screen for the whole scaled-plane session via the existing import-failure fallback (the "Failed to bind EGLImage" log line was a stray error from this call, not the import itself). Clamps the read to the texture's real dimensions and uses GL_PACK_ROW_LENGTH so a smaller read still lands correctly in the destination buffer's top-left corner instead of shearing across rows. This does not reproduce the hardware scaling itself -- the rest of the frame is left as whatever the buffer previously contained -- but it resolves the crash/black-screen and captures the correct content at its native resolution. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ℹ️ About
Sunshine is a self-hosted game stream host for Moonlight. Offering low-latency, cloud gaming server capabilities with support for AMD, Intel, and Nvidia GPUs for hardware encoding. Software encoding is also available. You can connect to Sunshine from any Moonlight client on a variety of devices. A web UI is provided to allow configuration, and client pairing, from your favorite web browser. Pair from the local server or any mobile device.
LizardByte has the full documentation hosted on Read the Docs
🎮 Feature Compatibility
| Feature | FreeBSD | Linux | macOS | Windows |
|---|---|---|---|---|
|
What type of gamepads can be emulated on the host. Clients may support other gamepads. |
||||
| DualShock / DS4 (PlayStation 4) | ➖ | ➖ | ❌ | ✅ |
| DualSense / DS5 (PlayStation 5) | ❌ | ✅ | ❌ | ❌ |
| Nintendo Switch Pro | ✅ | ✅ | ❌ | ❌ |
| Xbox 360 | ➖ | ➖ | ❌ | ✅ |
| Xbox One/Series | ✅ | ✅ | ❌ | ❌ |
| Encoding API | GPU Vendor | FreeBSD | Linux | macOS | Windows |
|---|---|---|---|---|---|
| AMF | AMD | ➖ | ➖ | ➖ | ✅ |
| Media Foundation | Qualcomm | ➖ | ➖ | ➖ | ✅ |
| NVENC | NVIDIA | ➖ | ✅ | ➖ | ✅ |
| QuickSync | Intel | ➖ | ➖ | ➖ | ✅ |
| VAAPI | AMD | ✅ | ✅ | ➖ | ➖ |
| Intel | ✅ | ✅ | ➖ | ➖ | |
| NVIDIA | ➖ | ✅ | ➖ | ➖ | |
| Video Toolbox | Apple | ➖ | ➖ | ✅ | ➖ |
| Intel | ➖ | ➖ | ✅ | ➖ | |
| Vulkan Video | AMD | 🟡 | ✅ | ➖ | ➖ |
| Intel | 🟡 | 🟡 | ➖ | ➖ | |
| NVIDIA | ➖ | 🟡 | ➖ | ➖ | |
| Software | Any | ✅ | ✅ | ✅ | ✅ |
| Capture Method | FreeBSD | Linux | macOS | Windows |
|---|---|---|---|---|
| DXGI Desktop Duplication | ➖ | ➖ | ➖ | ✅ |
| KMS/DRM | ✅ | ✅ | ➖ | ➖ |
| NvFBC (X11 only) | ➖ | ✅ | ➖ | ➖ |
| ScreenCaptureKit | ➖ | ➖ | ✅ | ➖ |
| Wayland (wlroots) | ✅ | ✅ | ➖ | ➖ |
| Windows.Graphics.Capture | ➖ | ➖ | ➖ | 🟡 |
| ↳ Portable | ➖ | ➖ | ➖ | ✅ |
| ↳ Service | ➖ | ➖ | ➖ | ❌ |
| X11 | ✅ | ✅ | ➖ | ➖ |
| XDG Desktop Portal | ✅ | ✅ | ➖ | ➖ |
| KWin Screencast | ✅ | ✅ | ➖ | ➖ |
| Capture Method | VAAPI | Vulkan Video | NVENC (CUDA) | Software |
|---|---|---|---|---|
| KMS/DRM | ✅ | ✅ | ✅ | ✅ |
| NvFBC | ❌ | ❌ | ✅ | ❌ |
| Wayland (wlroots) | ✅ | ❌ | ✅ | ✅ |
| X11 | ✅ | ❌ | ✅ | ✅ |
| XDG Desktop Portal | ✅ | ✅ | ✅ | ✅ |
| KWin Screencast | ✅ | ✅ | ✅ | ✅ |
Legend: ✅ Supported | 🟡 Partial Support | ❌ Not Yet Supported | ➖ Not Applicable
🖥️ System Requirements
Warning
These tables are a work in progress. Do not purchase hardware based on this information.
| Component | Requirement |
|---|---|
| GPU | AMD: VCE 1.0 or higher, see: obs-amd hardware support |
|
Intel: FreeBSD/Linux: VAAPI-compatible, see: VAAPI hardware support Windows: Skylake or newer with QuickSync encoding support |
|
| Nvidia: NVENC enabled cards, see: nvenc support matrix | |
| CPU | AMD: Ryzen 3 or higher |
| Intel: Core i3 or higher | |
| RAM | 4GB or more |
| OS | FreeBSD: 14.4+ |
| Linux/Debian: 13+ (trixie) | |
| Linux/Fedora: 43+ | |
| Linux/Ubuntu: 22.04+ (jammy) | |
| macOS: 14.2+ | |
| Windows: 11+ (Windows Server does not support virtual gamepads) | |
| Network | Host: 5GHz, 802.11ac |
| Client: 5GHz, 802.11ac |
| Component | Requirement |
|---|---|
| GPU | AMD: Video Coding Engine 3.1 or higher |
|
Intel: FreeBSD/Linux: HD Graphics 510 or higher Windows: Skylake or newer with QuickSync encoding support |
|
|
Nvidia: FreeBSD/Linux: GeForce RTX 2000 series or higher Windows: Geforce GTX 1080 or higher |
|
| CPU | AMD: Ryzen 5 or higher |
| Intel: Core i5 or higher | |
| Network | Host: CAT5e ethernet or better |
| Client: CAT5e ethernet or better |
| Component | Requirement |
|---|---|
| GPU | AMD: Video Coding Engine 3.4 or higher |
| Intel: HD Graphics 730 or higher | |
| Nvidia: Pascal-based GPU (GTX 10-series) or higher | |
| CPU | AMD: Ryzen 5 or higher |
| Intel: Core i5 or higher | |
| Network | Host: CAT5e ethernet or better |
| Client: CAT5e ethernet or better |
❓ Support
Our support methods are listed in our LizardByte Docs.
💲 Sponsors and Supporters
👥 Contributors
Thank you to all the contributors who have helped make Sunshine better!
GitHub
CrowdIn
| Previous | Next |
|---|---|
| Getting Started |