KMS capture always streams the portrait monitor even though the correct connector is selected

オープン
#6,002 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
1〜2日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
cpp, linux

調査の方向性

Start by tracing the KMS capture path that uses the selected connector and cursor plane, then compare which CRTC supplies the captured image. The report identifies connectors 80 and 88, with the same portrait monitor appearing for both; use the provided output names and logs to reproduce. Done when selecting output_name 1 streams the ultrawide on DP-2 while output_name 0 still streams the portrait monitor.

索引モデルが issue の本文から書いたものです。

説明

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?

I'm too lazy to test

Describe the Bug

With capture = kms and two monitors on one AMD GPU, the stream always shows the same monitor (the portrait one, as displayed) regardless of output_name. The debug log shows Sunshine choosing the correct, different connector for each output_name value, so connector selection appears correct but the captured image does not come from the chosen connector's CRTC. capture = x11 streams the correct monitor.

Possibly related: #3642 (KMS streams wrong monitor, X11 correct).

Layout (X11, Cinnamon):

X output Kernel connector Connector ID Mode Rotation X CRTC
DisplayPort-1 (primary) card2-DP-2 80 3440x1440+1200+159 normal 0
DisplayPort-2 card2-DP-3 88 1200x1920+0+0 left 1

KMS display list order from the debug log: DP-3 DP-2.

output_name Log: connector / cursor plane Streamed image
0 88 / 64 portrait monitor (as displayed)
1 80 / 61 portrait monitor (as displayed); expected: ultrawide

The machine also has an Intel UHD 630 iGPU (card1, i915) with nothing connected; all monitors are on the RX 580 (card2).

Expected Behavior

output_name = 1 (connector 80, DP-2) should stream the 3440x1440 ultrawide.

Additional Context

The streamed image is always the content of the rotated portrait monitor (CRTC 1), whichever connector is selected. The rotation may be relevant, but I haven't tested without it. Happy to run more diagnostics (e.g. modetest -p output) if useful.

Config (~/.config/sunshine/sunshine.conf):

gamepad = xone
capture = kms
output_name = 1
sunshine_name = Magrathea
min_log_level = debug

Host Operating System

Linux

Operating System Version

Linux Mint 22 (Ubuntu 24.04 base), Cinnamon on X11

Architecture

amd64/x86_64

Package

Linux - deb

GPU Type

AMD

GPU Model

AMD Radeon RX 580 (Polaris 10)

GPU Driver/Mesa Version

Mesa 25.2.8-0ubuntu0.24.04.2 (radeonsi, polaris10, ACO, DRM 3.64), kernel 7.0.0-38-generic, amdgpu with Display Core enabled

Capture Method

KMS (Linux)

Apps

Log output
Info: Detected display: DisplayPort-1 (id: 0)DisplayPort-1 connected: true
Info: Detected display: DisplayPort-2 (id: 1)DisplayPort-2 connected: true
Debug: Final KMS display_names return list: DP-3 DP-2
Info: Screencasting with KMS
Info: /dev/dri/card2 -> amdgpu
Info: Found monitor for DRM screencasting
Info: Found connector ID [80]
Info: Found cursor plane [61]

With output_name = 0 the same lines show "Found connector ID [88]" and "Found cursor plane [64]", but the streamed image is identical.
Online logs

No response

主要言語
C++
スター
43k
フォーク
2.4k
平均マージ
1日 13時間
マージ済み PR(30日)
111

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

LizardByte/Sunshine のほかの issue

LizardByte/Sunshine の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。