protonscr

[Pipewire] Steam -steamos3 parameter has issues with pipewire 0.3.68

steamclosed AudioDistro Family: SteamOS
ValveSoftware/steam-for-linux#9337 · opened 2023-04-11 by ruineka · updated 2023-04-11 · 1 comments · github
Rruineka 2023-04-11 github

Your system information

  • Steam client version N/A
  • Distribution ChimeraOS V42 (unstable)
  • Opted into Steam client beta?: N/A
  • Have you checked for system updates?: N/A

Please describe your issue in as much detail as possible:

A recent update to pipewire changes how virtual sinks are handled and it breaks compatibility with the -steamos3 parameter. I bisected the issue and have it reported here https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3145#note_1861847

Steps for reproducing this issue:

  1. Upgrade to 0.3.68 pipewire
  2. Use a laptop with a Ryzen APU or handheld (Probably breaks the Steam Deck as well)
  3. Run steam with the options: steam -steamos3 and try to play an audio source with firefox or something. It won't work.

This completely breaks the gamescope-session/gamepadui experience people enjoy with distros such as ChimeraOS so I hope Valve would be willing to help us here if it's something that Steam needs to change and not the upstream pipewire project.

Desktops with audio through HDMI/DP don't seem to have the same issue integrated devices seem to have. I was able to replicate the issue on an HP Dev One running EndeavourOS.

Downgrading to pipewire 0.3.67 or reverting the pipewire commit 9664787cffb3eec096b257f52f7420afc6e381f6 restores the audio.

9664787cffb3eec096b257f52f7420afc6e381f6 is the first bad commit
commit 9664787cffb3eec096b257f52f7420afc6e381f6
Author: Wim Taymans <[email protected]>
Date:   Mon Apr 3 17:00:49 2023 +0200

    context: Only activate runnable nodes
    
    Rework the runnable state calculation. It works in 2 steps now:
    
    1. Collect all nodes linked to a driver in some way. Mark nodes that
       are reachable with a non-passive link as runnable.
    2, Go through all runnable nodes and set all linked nodes to the
       runnable state as well, up to the driver.
    
    Step 2 is new. Previously if there was just one runnable node, *all*
    nodes would be set to runnable. With the addition of step 2, some nodes
    might remain idle when they are not used.
    
    This has the effect that virtual sinks without inputs stay idle when
    the driver is otherwise running. Grouped nodes (like the RTP session)
    will now also only run the linked nodes.

 src/pipewire/context.c | 108 +++++++++++++++++++++
Rruineka 2023-04-11 github

Seems we were able to get the fix done on the pipewire side of things, this commit appears to have resolved the issue I was seeing.

Nothing extracted yet.