LizardByte / LizardByte/Sunshine

KWin ScreenCast: "no more input formats" on Steam Deck LCD (rotated eDP-1 panel) — persists across encoders, OS versions, output_name, and maxBitsPerColor overrides

Open
#5,499 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
41.4k
Forks
2.1k
Avg merge
23h 47m
Merged PRs (30d)
124

Description

Is there an existing issue for this?
  • I have searched the existing issues
Is your issue described in the documentation?
  • I have read the documentation
Is your issue present in the latest beta/pre-release?

This issue is present in the latest pre-release

Describe the Bug

Environment

  • Sunshine version: 2026.516.143833 (flatpak, installed both via Flathub and via direct GitHub release bundle — identical behavior on both)
  • OS: SteamOS 3.8.16 (also reproduced identically on 3.8.16 → rolled back to 3.8.14 via RAUC slot switch, confirmed via /etc/os-release)
  • Desktop session: KDE Plasma Wayland (plasma-wayland-persistent via steamos-session-select)
  • KWin version: 6.4.3-2 (xdg-desktop-portal-kde)
  • GPU: AMD Van Gogh APU (Steam Deck LCD), amdgpu/radeonsi driver, Mesa 25.3.0.213835
  • PipeWire: 1.6.4
  • Display: internal panel eDP-1, native 800x1280, transform: Rotated270 (portrait panel rotated in software), reported as HDR: incapable, Wide Color Gamut: incapable, but Color resolution: automatic (10) per kscreen-doctor -o

Describe the Bug

KWin direct ScreenCast capture (kwingrab) on the Steam Deck's internal panel consistently fails to produce any video frames. The stream connects to PipeWire successfully but immediately fails format negotiation and loops indefinitely (~1.5s cycle) with:

  1. Latest pre-release build: Tested against v2026.808.164219 (pre-release, includes fix(wayland): support DMA-BUF modifiers for wlroots capture #5132 and feat(linux/pipewire): add fallback to node id if connection via object serial fails #5302). The underlying "no more input formats" PipeWire error still occurs identically during the encoder-probing phase. However, once probing settled on the Vulkan encoder path (h264_vulkan), the actual live Moonlight stream connected and produced a solid green frame instead of black — suggesting a YUV color/chroma format mismatch on the decode side, while the background capture loop continued failing with the same PipeWire error independently. It went from black screen to green screen
Expected Behavior

Expected the Moonlight stream to display the live desktop/game content from the Steam Deck, allowing normal remote play. Instead, the connection succeeds (pairing works, ports bind, client shows "connected") but no usable video frame is ever rendered — either a solid black frame (older build) or a solid green frame (pre-release build v2026.808.164219), with the underlying PipeWire capture continuously failing and retrying in the background.

Additional Context

No response

Host Operating System

Linux

Operating System Version

Linux cachyos 6.19.8-arch1-3-surface #1 SMP PREEMPT_DYNAMIC Sat, 09 May 2026 10:41:21 +0000 x86_64 GNU/Linux

Architecture

amd64/x86_64

Package

Linux - flathub/flatpak

GPU Type

AMD

GPU Model

AMD Van Gogh (Steam Deck LCD APU, integrated Radeon RDNA2)

GPU Driver/Mesa Version

Mesa 25.3.0.213835 (radeonsi_25.3.0-4.1)

Capture Method

wlroots (FreeBSD/Linux)

Apps

Log output
[2026-08-11 20:44:29.029]: Info: [kwingrab] Found output: eDP-1 order: 0 position: 0x0 resolution: 800x1280
[2026-08-11 20:44:29.029]: Info: Screencasting with KWin ScreenCast
[2026-08-11 20:44:29.029]: Info: [pipewire] Requested frame rate [60fps]
[2026-08-11 20:44:29.029]: Info: [wayland] Found display [wayland-0]
[2026-08-11 20:44:29.046]: Info: [kwingrab] Pipewire stream created: node=138
[2026-08-11 20:44:29.046]: Info: [kwingrab] Screencasting output name eDP-1 position 0x0 resolution 800x1280
[2026-08-11 20:44:29.046]: Info: [pipewire] Streaming display 'eDP-1' offset: 0x0 resolution: 800x1280
[2026-08-11 20:44:29.046]: Info: [wayland] Found display [wayland-0]
[2026-08-11 20:44:29.046]: Info: [wayland] Found interface: zxdg_output_manager_v1(32) version 3
[2026-08-11 20:44:29.046]: Info: [wayland] Found interface: zwp_linux_dmabuf_v1(57) version 5
[2026-08-11 20:44:29.047]: Info: [wayland] Found interface: wl_output(65) version 4
[2026-08-11 20:44:29.047]: Info: [wayland] Resolution: 800x1280
[2026-08-11 20:44:29.047]: Info: [wayland] Offset: 0x0
[2026-08-11 20:44:29.047]: Info: [wayland] Logical size: 1280x800
[2026-08-11 20:44:29.047]: Info: [wayland] Name: eDP-1
[2026-08-11 20:44:29.047]: Info: [wayland] Found monitor: Valve Corporation ANX7530 U
[2026-08-11 20:44:29.052]: Info: [pipewire] PipeWire stream state: unconnected -> connecting
[2026-08-11 20:44:29.053]: Info: [pipewire] Connected to pipewire version 1.6.4
[2026-08-11 20:44:29.082]: Info: [pipewire] PipeWire stream state: connecting -> paused
[2026-08-11 20:44:29.128]: Info: [pipewire] PipeWire stream error 'no more input formats' on state: paused -> error
[2026-08-11 20:44:29.128]: Info: [pipewire] Pipewire Error, id:2 seq:16 message: no more input formats
[2026-08-11 20:44:30.569]: Warning: [pipewire] PipeWire stream disconnected. Forcing session reset.

--- This exact cycle repeats every ~1.5 seconds indefinitely. Full log with every repetition (spanning the whole troubleshooting session) provided via gist link below. ---
Online logs

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The payload names the kwingrab capture path and PipeWire stream negotiation but no source files or tests. Start by tracing that entry point while reproducing capture on the rotated eDP-1 output, then compare the negotiated formats with the Vulkan encoder path. Done means the capture loop stops retrying and Moonlight renders live content instead of a black or green frame.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
audio-video-rtc, desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.