Skip to content

Implement zero copy pipeline #156

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
Jun 17, 2025
Merged

Implement zero copy pipeline #156

merged 23 commits into from
Jun 17, 2025

Conversation

ABeltramo
Copy link
Member

@ABeltramo

This comment was marked as outdated.

@alibell

This comment was marked as outdated.

@ABeltramo

This comment was marked as outdated.

@alibell

This comment was marked as outdated.

@ABeltramo

This comment was marked as outdated.

@alibell

This comment was marked as outdated.

@alibell

This comment was marked as outdated.

@alibell

This comment was marked as outdated.

@ABeltramo

This comment was marked as outdated.

@Hotcooler

This comment was marked as outdated.

@ABeltramo

This comment was marked as outdated.

@Hotcooler

This comment was marked as outdated.

@SomebodyOdd

This comment was marked as outdated.

@ABeltramo

This comment was marked as outdated.

@Hotcooler

This comment was marked as outdated.

@ulibte
Copy link

ulibte commented Jun 9, 2025

I tried on my pc and only the app Test ball worked.
logs.txt

@ABeltramo
Copy link
Member Author

ABeltramo commented Jun 9, 2025

@ulibte thanks for reporting, could you please give me a bit more info on the HW? Which GPU are you running and do you have multiple GPUs available? Even just an iGPU? Could you also share the logs with the env variables

WOLF_LOG_LEVEL=DEBUG
RUST_LOG=DEBUG

?

@ulibte
Copy link

ulibte commented Jun 9, 2025

My gpu is a RX 570, and my cpu is a Ryzen 5600, so no iGPU.
logs.txt

@kode54
Copy link
Contributor

kode54 commented Jun 9, 2025

FYI AMD GPU that old has no modifiers support. Not sure if this matters.

@kode54
Copy link
Contributor

kode54 commented Jun 9, 2025

Heck yea, fully playable 1440p60 AV1. And Oblivion Remastered is now playable instead of being a sludge fest.

@jshank
Copy link

jshank commented Jun 9, 2025

Yep, flawless 60 FPS in Steam on my AMD Ryzen 9 5950X, AMD 7900 XTX, Ubuntu 24.04 LTS.

@ABeltramo ABeltramo marked this pull request as ready for review June 11, 2025 18:34
@alibell
Copy link

alibell commented Jun 15, 2025

Tried on my computer

Configuration :

  • CPU AMD Ryzen 7 9700X
  • GPU NVIDIA 3090
  • NVIDIA Drivers 575.57.08
  • Arch Linux KDE
  • Moonlight client: moonlight-qt from AUR

Test performed on Final Fantasy VII rebirth 1080p bound to 120 fps (which are not reached)

Zero Copy Pipeline

20250615-dev-zero-copy-1101137202b0

Stable

20250615-stable-94ec077441d8

Globally

  • I play on Zero Copy branch since a while with no issue
  • No bug noticed on zero copy image
  • I do not notice major FPS difference between both image
  • CPU is globally more stressed on stable branch (around 50% versus 40-45 %)

@ABeltramo
Copy link
Member Author

ABeltramo commented Jun 15, 2025

Thanks for the feedback @alibell, could you please provide the Wolf logs with the env variable WOLF_LOG_LEVEL=DEBUG when running with the new zero copy pipeline? The differences between the two are too small (even at 1080p) I think it's not using the new pipeline.. Also, I'm pushing fixes and tweaks almost daily, have you updated the Docker image with

docker pull ghcr.io/games-on-whales/wolf:dev-zero-copy

?

@alibell
Copy link

alibell commented Jun 15, 2025

EDIT: Forget it, is doesn't display env on stable, I check what's wrong

@ABeltramo

Well that's strange, I'm pretty sure I pulled before testing but when I pulled the image it downloaded some changes, maybe I did not pulled correctly...

Well now the game doesn't display on moonlight client (Steam does display tho).
The game is rendering and I can tell according to audio that the character is moving; here are the performances :
image

The log

Wolf

[+] Running 1/1
 ✔ Container wolf-wolf-1  Removed                                                                                             0.1s 
2b3790d6b48f
f63a67df4d69
2b3790d6b48f
f63a67df4d69
[+] Pulling 1/1
 ✔ wolf Pulled                                                                                                                0.6s 
[+] Running 1/1
 ✔ Container wolf-wolf-1  Started                                                                                             0.1s 
[ali@PC-BUREAU-ARCH wolf]$ docker compose logs --follow wolf
wolf-1  | [2025-06-15 18:16:23] 
wolf-1  | [2025-06-15 18:16:23] [ /etc/cont-init.d/10-setup_user.sh: executing... ]
wolf-1  | [2025-06-15 18:16:23] **** Configure default user ****
wolf-1  | [2025-06-15 18:16:23] Container running as root. Nothing to do.
wolf-1  | [2025-06-15 18:16:23] DONE
wolf-1  | [2025-06-15 18:16:23] 
wolf-1  | [2025-06-15 18:16:23] [ /etc/cont-init.d/15-setup_devices.sh: executing... ]
wolf-1  | [2025-06-15 18:16:23] **** Configure devices ****
wolf-1  | [2025-06-15 18:16:23] Exec device groups
wolf-1  | [2025-06-15 18:16:23] Adding user 'root' to groups: gow-gid-994,root
wolf-1  | [2025-06-15 18:16:23] DONE
wolf-1  | [2025-06-15 18:16:23] 
wolf-1  | [2025-06-15 18:16:23] [ /etc/cont-init.d/30-nvidia.sh: executing... ]
wolf-1  | [2025-06-15 18:16:23] Nvidia driver volume detected
wolf-1  | [2025-06-15 18:16:23] [nvidia] Add Vulkan ICD
wolf-1  | [2025-06-15 18:16:23] [nvidia] Add EGL external platform
wolf-1  | [2025-06-15 18:16:23] [nvidia] Add egl-vendor
wolf-1  | [2025-06-15 18:16:23] [nvidia] Add gbm backend
wolf-1  | [2025-06-15 18:16:23] 
wolf-1  | [2025-06-15 18:16:23] [ /etc/cont-init.d/init-gamescope.sh: executing... ]
wolf-1  | [2025-06-15 18:16:23] Launching the container's startup script as user 'root'
wolf-1  | 0:00:00.004609480   163 0x55698db133f0 WARN             msdkcontext gstmsdkcontext.c:178:gst_msdk_context_use_vaapi: Couldn't find a drm device node to open
wolf-1  | 0:00:00.052015856   163 0x55698db133f0 WARN               cudanvrtc gstcudanvrtc.cpp:179:gst_cuda_nvrtc_load_library_once: Failed to load 'nvrtcGetCUBINSize', 'nvrtcGetCUBINSize': /usr/local/nvidia/lib/libnvrtc.so: undefined symbol: nvrtcGetCUBINSize
wolf-1  | 0:00:01.095758949   163 0x55698db133f0 WARN            nvav1encoder gstnvav1encoder.cpp:1429:gst_nv_av1_encoder_create_class_data:<cudacontext0> New preset is not supported
wolf-1  | 0:00:01.410240227   163 0x55698db133f0 WARN                 default ges-meta-container.c:238:_set_value:<GESAsset@0x55698e2c5b20> Could not set value on item: format-version
wolf-1  | 0:00:01.410255027   163 0x55698db133f0 WARN                 default ges-meta-container.c:238:_set_value:<GESAsset@0x55698e2c6450> Could not set value on item: format-version
wolf-1  | 0:00:01.410259987   163 0x55698db133f0 WARN                 default ges-meta-container.c:238:_set_value:<GESAsset@0x55698e2c6cc0> Could not set value on item: format-version
wolf-1  | 0:00:01.410394888   163 0x55698db133f0 WARN               structure gststructure.c:3372:priv_gst_structure_parse_fields: Failed to find delimiter, r=mimetype
wolf-1  | amdgpu: os_same_file_description couldn't determine if two DRM fds reference the same file description.
wolf-1  | If they do, bad things may happen!
wolf-1  | 0:00:01.433398426   163 0x55698db133f0 WARN               vadisplay gstvadisplay.c:401:gst_va_display_initialize:<vadisplaydrm1> vaInitialize: unknown libva error
wolf-1  | 0:00:01.441802068   163 0x55698db133f0 WARN                vafilter gstvafilter.c:1787:gst_va_filter_has_compose:<vafilter0> VPP does not support alpha blending
wolf-1  | 0:00:01.469644877   163 0x55698db133f0 WARN      GST_PLUGIN_LOADING gstplugin.c:546:gst_plugin_register_func: plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so" failed to initialise
wolf-1  | 0:00:01.484654746   163 0x55698db133f0 WARN              vaapiblend gstvaapiblend.c:184:gst_vaapi_blend_initialize:<vaapiblend0> VPP does not support global alpha blending
wolf-1  | 0:00:01.490255244   163 0x55698db133f0 WARN               vadisplay gstvadisplay.c:401:gst_va_display_initialize:<vadisplaydrm8> vaInitialize: unknown libva error
wolf-1  | 0:00:01.497378815   163 0x55698db133f0 WARN      GST_PLUGIN_LOADING gstplugin.c:546:gst_plugin_register_func: plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so" failed to initialise
wolf-1  | 0:00:01.498654835     1 0x55fed75ed1b0 WARN            GST_REGISTRY gstregistry.c:457:gst_registry_add_plugin:<registry0> Not replacing plugin because new one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so) is blacklisted but for a different location than existing one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so)
wolf-1  | 0:00:01.499775975   163 0x55698db133f0 WARN      GST_PLUGIN_LOADING gstplugin.c:546:gst_plugin_register_func: plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so" failed to initialise
wolf-1  | 0:00:01.501114597   163 0x55698db133f0 WARN      GST_PLUGIN_LOADING gstplugin.c:546:gst_plugin_register_func: plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so" failed to initialise
wolf-1  | 0:00:01.503800159     1 0x55fed75ed1b0 WARN            GST_REGISTRY gstregistry.c:457:gst_registry_add_plugin:<registry0> Not replacing plugin because new one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so) is blacklisted but for a different location than existing one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so)
wolf-1  | 17:16:25.256572038 INFO  | Gstreamer version: 1.26.2-0
wolf-1  | 17:16:25.257167193 DEBUG | XDG_RUNTIME_DIR=/tmp/sockets
wolf-1  | 17:16:25.257188974 INFO  | Reading config file from: /etc/wolf/cfg/config.toml
wolf-1  | 17:16:25.259047050 DEBUG | Found udpsink in default_sink, migrating to appsink
wolf-1  | 17:16:25.259053840 DEBUG | Found udpsink in default_sink, migrating to appsink
wolf-1  | 17:16:25.262964653 DEBUG | /dev/dri/renderD129 vendor: NVIDIA Corporation
wolf-1  | 0:00:01.541759765     1 0x55fed75ed1b0 WARN               cudanvrtc gstcudanvrtc.cpp:179:gst_cuda_nvrtc_load_library_once: Failed to load 'nvrtcGetCUBINSize', 'nvrtcGetCUBINSize': /usr/local/nvidia/lib/libnvrtc.so: undefined symbol: nvrtcGetCUBINSize
wolf-1  | 0:00:02.537350631     1 0x55fed75ed1b0 WARN            nvav1encoder gstnvav1encoder.cpp:1429:gst_nv_av1_encoder_create_class_data:<cudacontext0> New preset is not supported
wolf-1  | 17:16:26.577733130 INFO  | Using H264 encoder: nvcodec
wolf-1  | 17:16:26.577849601 INFO  | Using HEVC encoder: nvcodec
wolf-1  | 0:00:02.844433008     1 0x55fed75ed1b0 WARN     GST_ELEMENT_FACTORY gstelementfactory.c:712:gst_element_factory_make_with_properties: no such element factory "nvav1enc"!
wolf-1  | 17:16:26.577884191 DEBUG | Skipping QUICKSYNC encoder, not an Intel GPU (0)
wolf-1  | 17:16:26.577894032 DEBUG | Skipping VAAPI encoder, not an Intel or AMD GPU (0)
wolf-1  | 17:16:26.577903722 DEBUG | Skipping VAAPI encoder, not an Intel or AMD GPU (0)
wolf-1  | 17:16:26.578231125 INFO  | Using AV1 encoder: aom
wolf-1  | 17:16:26.578236615 WARN  | Software AV1 encoder detected
wolf-1  | 17:16:26.578386926 DEBUG | Loading server certificates from disk: /etc/wolf/cfg/cert.pem /etc/wolf/cfg/key.pem
wolf-1  | 17:16:26.579012121 INFO  | [RTP] Starting RTP ping server on ports 48100 and 48200
wolf-1  | 17:16:26.579064542 INFO  | RTSP server started on port: 48010
wolf-1  | 17:16:26.579084102 INFO  | HTTP server listening on port: 47989 
wolf-1  | 17:16:26.579110102 INFO  | Starting API server on /tmp/wolf.sock
wolf-1  | 17:16:26.579122922 INFO  | Starting mDNS service
wolf-1  | 17:16:26.579117202 INFO  | Control server started on port: 47999
wolf-1  | XDG_RUNTIME_DIR (/tmp/sockets) is not owned by us (uid 0), but by uid 1000! (This could e.g. happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)
wolf-1  | 17:16:26.579367144 DEBUG | [PULSE] Connecting...
wolf-1  | 17:16:26.579392565 DEBUG | [PULSE] Context failed
wolf-1  | 17:16:26.579397815 WARN  | [PULSE] Unable to connect, Access denied
wolf-1  | 17:16:26.579420175 INFO  | Starting PulseAudio docker container
wolf-1  | 17:16:26.579785168 INFO  | HTTPS server listening on port: 47984 
wolf-1  | 17:16:27.559533124 DEBUG | 192.168.50.166 [GET] HTTP://192.168.50.166/serverinfo
wolf-1  | 17:16:27.563600419 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/serverinfo
wolf-1  | 17:16:28.677764775 DEBUG | [PULSE] Connecting...
wolf-1  | 17:16:28.678155898 DEBUG | [PULSE] Pulse connection ready
wolf-1  | 17:16:29.979857463 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.980297777 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.980656840 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.980866502 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.982491866 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.982678047 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.983078841 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.983292023 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.984876586 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.985047118 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.985336310 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.985744414 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.987236697 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.987386378 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.987822382 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:29.987973323 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/appasset
wolf-1  | 17:16:30.566812094 DEBUG | 192.168.50.166 [GET] HTTP://192.168.50.166/serverinfo
wolf-1  | 17:16:30.569918531 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/serverinfo
wolf-1  | 17:16:33.572991596 DEBUG | 192.168.50.166 [GET] HTTP://192.168.50.166/serverinfo
wolf-1  | 17:16:33.576060752 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/serverinfo
wolf-1  | 17:16:33.578854266 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/applist
wolf-1  | 17:16:36.377306995 DEBUG | 192.168.50.166 [GET] HTTPS://192.168.50.166/launch
wolf-1  | 17:16:36.377401226 DEBUG | Host app state folder: /etc/wolf/common/Steam, creating paths
wolf-1  | 17:16:36.377451507 DEBUG | [STREAM_SESSION] Create wayland compositor
wolf-1  | 17:16:36.377498827 DEBUG | [STREAM_SESSION] Create virtual audio sink
wolf-1  | 17:16:36.377542937 DEBUG | [GSTREAMER] Starting video producer: waylanddisplaysrc name=wolf_wayland_source render_node=/dev/dri/renderD129 ! video/x-raw(memory:DMABuf), width=1920, height=1080, framerate=120/1 ! 
wolf-1  | interpipesink sync=true async=false name=9426013319624259797_video max-buffers=1
wolf-1  | 17:16:36.377628688 DEBUG | [GSTREAMER] Starting audio producer: pulsesrc device="virtual_sink_9426013319624259797.monitor" server="/tmp/sockets/pulse-socket" ! audio/x-raw, channels=2, rate=48000 ! queue leaky=downstream max-size-buffers=3 ! interpipesink name="9426013319624259797_audio" sync=true async=false max-buffers=3
wolf-1  | 17:16:36.377957111 DEBUG | [PULSE] Created virtual sink: 3
wolf-1  | 17:16:36.379229642 DEBUG | Setting up waylanddisplaysrc
wolf-1  | 
wolf-1  | (wolf:1): GStreamer-CRITICAL **: 18:16:36.379: Bus bus1 already has a GSource watch
wolf-1  | 17:16:36.381771764 DEBUG | [RTSP] found session by matching payload: 176.7.24.199
wolf-1  | 17:16:36.381780764 DEBUG | [RTSP] received command OPTIONS
wolf-1  | 17:16:36.385027322 DEBUG | [RTSP] found session by matching payload: 176.7.24.199
wolf-1  | 17:16:36.385035942 DEBUG | [RTSP] received command DESCRIBE
wolf-1  | 17:16:36.388281170 DEBUG | [RTSP] found session by matching payload: 176.7.24.199
wolf-1  | 17:16:36.388290140 DEBUG | [RTSP] received command SETUP
wolf-1  | 17:16:36.391471878 DEBUG | [RTSP] found session by matching payload: 176.7.24.199
wolf-1  | 17:16:36.391478998 DEBUG | [RTSP] received command SETUP
wolf-1  | 17:16:36.394790377 DEBUG | [RTSP] found session by matching payload: 176.7.24.199
wolf-1  | 17:16:36.394800587 DEBUG | [RTSP] received command SETUP
wolf-1  | 17:16:36.398442418 DEBUG | [RTSP] found session by matching payload: 176.7.24.199
wolf-1  | 17:16:36.398451138 DEBUG | [RTSP] received command ANNOUNCE
wolf-1  | 17:16:36.398507379 DEBUG | [RTSP] Moonlight requested video format HEVC
wolf-1  | 17:16:36.398511129 DEBUG | [RTSP] Adjusted video bitrate to 119308 Kbps
wolf-1  | 17:16:36.401804847 DEBUG | [RTSP] found session by matching payload: 176.7.24.199
wolf-1  | 17:16:36.401813217 DEBUG | [RTSP] received command PLAY
wolf-1  | 17:16:36.402025359 DEBUG | [ENET] connected client: 192.168.50.166:12466
wolf-1  | 17:16:36.402204740 DEBUG | Starting video pipeline: 
wolf-1  | interpipesrc listen-to=9426013319624259797_video is-live=true stream-sync=restart-ts max-buffers=1 block=false !
wolf-1  | glupload ! glcolorconvert ! video/x-raw(memory:GLMemory), format=NV12, chroma-site=jpeg, colorimetry=bt709 !
wolf-1  | nvh265enc gop-size=-1 bitrate=119308 aud=false rc-mode=cbr zerolatency=true preset=p1 tune=ultra-low-latency multi-pass=two-pass-quarter !
wolf-1  | h265parse !
wolf-1  | video/x-h265, profile=main, stream-format=byte-stream !
wolf-1  | rtpmoonlightpay_video name=moonlight_pay payload_size=1392 fec_percentage=20 min_required_fec_packets=2 ! appsink sync=false name=wolf_udp_sink
wolf-1  | 17:16:36.407834709 DEBUG | Setting up wolf_udp_sink
wolf-1  | 17:16:36.410243340 WARN  | Received MOUSE_MOVE_REL_PACKET but no mouse device is present
wolf-1  | 17:16:36.420376917 WARN  | Received MOUSE_MOVE_REL_PACKET but no mouse device is present
wolf-1  | 0:00:12.820485267     1 0x7f319001a2a0 WARN                basesink gstbasesink.c:1248:gst_base_sink_query_latency:<9426013319624259797_video> warning: Pipeline construction is invalid, please add queues.
wolf-1  | 0:00:12.820493327     1 0x7f319001a2a0 WARN                basesink gstbasesink.c:1248:gst_base_sink_query_latency:<9426013319624259797_video> warning: Not enough buffering available for  the processing deadline of 0:00:00.020000000, add enough queues to buffer  0:00:00.020000000 additional data. Shortening processing latency to 0:00:00.000000000.
wolf-1  | 17:16:36.554014271 DEBUG | Wayland source message: WAYLAND_DISPLAY = wayland-1
wolf-1  | 17:16:36.554031381 INFO  | Wayland display ready, listening on: wayland-1
wolf-1  | 17:16:36.559800031 DEBUG | /dev/dri/renderD129 vendor: NVIDIA Corporation
wolf-1  | 17:16:36.559816341 INFO  | Mounting nvidia driver nvidia-driver-vol:/usr/nvidia
wolf-1  | 17:16:36.559850022 DEBUG | [DOCKER] Using fake-udev, creating /etc/wolf/common/Steam/udev/data
wolf-1  | 17:16:36.563177980 DEBUG | /dev/dri/renderD129 vendor: NVIDIA Corporation
wolf-1  | 17:16:36.563252521 DEBUG | [DOCKER] Setting DeviceCgroupRules for hidraw:244 and input:13
wolf-1  | 17:16:36.563290301 DEBUG | [DOCKER] Container options: {"HostConfig":{"IpcMode":"host","CapAdd":["SYS_ADMIN","SYS_NICE","SYS_PTRACE","NET_RAW","MKNOD","NET_ADMIN"],"SecurityOpt":["seccomp=unconfined","apparmor=unconfined"],"Ulimits":[{"Name":"nofile","Hard":10240,"Soft":10240}],"Privileged":false,"DeviceCgroupRules":["c 244:* rwm","c 13:* rwm"]}}
wolf-1  | 17:16:36.678222624 INFO  | [DOCKER] Starting container: /WolfSteam_9426013319624259797
wolf-1  | 17:16:36.678268124 DEBUG | [DOCKER] Starting container: {
wolf-1  |  id: 27c55e1712c73ba5cdd1d50af7aead33f9e6ce4a48db914948e1753100c53727
wolf-1  |  name: /WolfSteam_9426013319624259797
wolf-1  |  image: ghcr.io/games-on-whales/steam:edge
wolf-1  |  status: 0
wolf-1  |  ports: []
wolf-1  |  mounts: [/tmp/sockets/pulse-socket:/tmp/sockets/pulse-socket:rw, /tmp/sockets/wayland-1:/tmp/sockets/wayland-1:rw, /etc/wolf/common/Steam:/home/retro:rw, nvidia-driver-vol:/usr/nvidia:rw, /etc/wolf/common/Steam/udev:/run/udev/:rw, /etc/wolf/fake-udev:/usr/bin/fake-udev:ro]
wolf-1  |  devices: [/dev/dri/card2:/dev/dri/card2:mrw, /dev/nvidia0:/dev/nvidia0:mrw, /dev/nvidia-modeset:/dev/nvidia-modeset:mrw, /dev/nvidia-uvm:/dev/nvidia-uvm:mrw, /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools:mrw, /dev/nvidiactl:/dev/nvidiactl:mrw, /dev/dri/renderD129:/dev/dri/renderD129:mrw]
wolf-1  |  env: ["PROTON_LOG=1", "RUN_SWAY=true", "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*", "PULSE_SOURCE=virtual_sink_9426013319624259797.monitor", "GAMESCOPE_REFRESH=120", "PUID=1000", "PULSE_SINK=virtual_sink_9426013319624259797", "WAYLAND_DISPLAY=wayland-1", "GAMESCOPE_HEIGHT=1080", "PGID=1000", "PULSE_SERVER=/tmp/sockets/pulse-socket", "XDG_RUNTIME_DIR=/tmp/sockets", "GAMESCOPE_WIDTH=1920", "PATH=/usr/games/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "UMASK=000", "UNAME=retro", "HOME=/home/retro", "TZ=Europe/London", "DEBIAN_FRONTEND=noninteractive", "NEEDRESTART_SUSPEND=1", "GAMESCOPE_VERSION=3.15.14", "BUILD_ARCHITECTURE=amd64", "DEB_BUILD_OPTIONS=noddebs"]
wolf-1  | }
wolf-1  | 0:00:12.983718186     1 0x7f317c001300 WARN                 basesrc gstbasesrc.c:4255:gst_base_src_push_segment:<interpipesrc0> segment format mismatched, ignore
wolf-1  | 17:16:36.889087534 DEBUG | Starting audio pipeline: 
wolf-1  | interpipesrc listen-to=9426013319624259797_audio is-live=true stream-sync=restart-ts max-bytes=0 max-buffers=3 block=false !
wolf-1  | queue max-size-buffers=3 leaky=downstream ! audiorate ! audioconvert !
wolf-1  | opusenc bitrate=96000 bitrate-type=cbr frame-size=5 bandwidth=fullband audio-type=restricted-lowdelay max-payload-size=1400 !
wolf-1  | rtpmoonlightpay_audio name=moonlight_pay packet_duration=5 encrypt=true aes_key="3b887c2fcf2b8174d24c6f50bb74dfe7" aes_iv="1397043345" ! appsink sync=false name=wolf_udp_sink
wolf-1  | 17:16:36.889971252 DEBUG | Setting up wolf_udp_sink
wolf-1  | 17:16:37.606139407 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:37.740101354 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:37.880253154 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:38.014900807 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:38.157483729 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:38.288237590 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 0:00:14.645357489     1 0x7f317c001900 WARN                 basesrc gstbasesrc.c:4255:gst_base_src_push_segment:<interpipesrc1> segment format mismatched, ignore
wolf-1  | 17:16:38.423792361 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:38.558429604 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:38.687711352 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:38.821275216 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:38.962505207 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:39.099732823 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:39.244024990 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:39.370666415 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:39.489566753 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:39.556133279 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:41.470768432 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:41.600164502 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:41.734125202 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:41.872972583 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:42.009759127 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:42.145798695 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:42.280801515 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:42.407183789 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:42.540611675 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:42.676501981 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:42.814396725 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:42.945584802 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:43.075044203 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:43.213661764 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:43.343519999 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:43.476497191 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:43.607501846 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:43.743098921 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:43.886394022 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:44.026807879 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:44.162759398 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:44.293299119 DEBUG | [GSTREAMER] Forcing IDR
wolf-1  | 17:16:44.414132537 DEBUG | [GSTREAMER] Forcing IDR

Steam

[2025-06-15 18:16:36] 
[2025-06-15 18:16:36] [ /etc/cont-init.d/10-setup_user.sh: executing... ]
[2025-06-15 18:16:36] **** Configure default user ****
[2025-06-15 18:16:36] Setting default user uid=1000(retro) gid=1000(retro)
userdel: ubuntu mail spool (/var/mail/ubuntu) not found
useradd: warning: the home directory /home/retro already exists.
useradd: Not copying any file from skel directory into it.
[2025-06-15 18:16:36] Setting umask to 000
[2025-06-15 18:16:36] Ensure retro home directory is writable
[2025-06-15 18:16:36] Ensure XDG_RUNTIME_DIR is writable
[2025-06-15 18:16:36] DONE
[2025-06-15 18:16:36] 
[2025-06-15 18:16:36] [ /etc/cont-init.d/15-setup_devices.sh: executing... ]
[2025-06-15 18:16:36] **** Configure devices ****
[2025-06-15 18:16:36] Exec device groups
[2025-06-15 18:16:36] Path '/dev/input/*' is not present.
[2025-06-15 18:16:36] Adding user 'retro' to groups: gow-gid-989,gow-gid-985,root
[2025-06-15 18:16:36] DONE
[2025-06-15 18:16:36] 
[2025-06-15 18:16:36] [ /etc/cont-init.d/30-nvidia.sh: executing... ]
[2025-06-15 18:16:36] Nvidia driver volume detected
[2025-06-15 18:16:36] [nvidia] Add Vulkan ICD
[2025-06-15 18:16:36] [nvidia] Add EGL external platform
[2025-06-15 18:16:36] [nvidia] Add egl-vendor
[2025-06-15 18:16:36] [nvidia] Add gbm backend
[2025-06-15 18:16:36] 
[2025-06-15 18:16:36] [ /etc/cont-init.d/init-gamescope.sh: executing... ]
[2025-06-15 18:16:36] 
[2025-06-15 18:16:36] [ /etc/cont-init.d/system-services.sh: executing... ]
*** DBus started ***
*** Bluez started ***
bluetoothd[115]: Bluetooth daemon 5.79
bluetoothd[115]: src/adapter.c:adapter_init() Failed to access management interface
bluetoothd[115]: src/main.c:main() Adapter handling initialization failed
*** NetworkManager started ***
[2025-06-15 18:16:36] Launching the container's startup script as user 'retro'
[2025-06-15 18:16:36] Steam startup.sh
[2025-06-15 18:16:36] [Sway] - Starting: `/usr/games/steam -bigpicture`
00:00:00.000 [ERROR] [sway/server.c:157] !!! Proprietary Nvidia drivers are in use !!!
Failed to connect to user scope bus via local transport: No such file or directory
2025-06-15 18:16:37 - [main.c:278] Could not find config for output WL-1 ((null))
steam.sh[183]: Running Steam on ubuntu 25.04 64-bit
steam.sh[183]: STEAM_RUNTIME is enabled automatically
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Activating service name='org.a11y.Bus' requested by ':1.2' (uid=1000 pid=174 comm="waybar -b bar-0")
setup.sh[228]: Steam runtime environment up-to-date!
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Successfully activated service 'org.a11y.Bus'
[2025-06-15 18:16:37.066] [info] Using configuration file /home/retro/.config/waybar/config.jsonc
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Activating service name='org.freedesktop.portal.Desktop' requested by ':1.1' (uid=1000 pid=174 comm="waybar -b bar-0")
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Activating service name='org.freedesktop.impl.portal.PermissionStore' requested by ':1.4' (uid=1000 pid=263 comm="/usr/libexec/xdg-desktop-portal")
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Successfully activated service 'org.freedesktop.impl.portal.PermissionStore'
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Activating service name='org.freedesktop.portal.Documents' requested by ':1.4' (uid=1000 pid=263 comm="/usr/libexec/xdg-desktop-portal")
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Successfully activated service 'org.freedesktop.portal.Documents'
fusermount3: fuse device not found, try 'modprobe fuse' first
error: fuse init failed: Can't mount path /tmp/sockets/doc
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Activating service name='org.freedesktop.impl.portal.desktop.gtk' requested by ':1.4' (uid=1000 pid=263 comm="/usr/libexec/xdg-desktop-portal")
dbus-daemon[253]: Activating service name='org.a11y.atspi.Registry' requested by ':1.1' (uid=1000 pid=284 comm="/usr/libexec/xdg-desktop-portal-gtk")
dbus-daemon[253]: Successfully activated service 'org.a11y.atspi.Registry'
SpiRegistry daemon is running with well-known name - org.a11y.atspi.Registry
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Successfully activated service 'org.freedesktop.impl.portal.desktop.gtk'

(/usr/libexec/xdg-desktop-portal:263): xdg-desktop-portal-WARNING **: 18:16:37.100: Failed to load RealtimeKit property: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.RealtimeKit1 was not provided by any .service files

(/usr/libexec/xdg-desktop-portal:263): xdg-desktop-portal-WARNING **: 18:16:37.100: Failed to load RealtimeKit property: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.RealtimeKit1 was not provided by any .service files

(/usr/libexec/xdg-desktop-portal:263): xdg-desktop-portal-WARNING **: 18:16:37.100: Failed to load RealtimeKit property: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.RealtimeKit1 was not provided by any .service files
[W][11695.448007] pw.conf      | [          conf.c: 1214 try_load_conf()] can't load config client.conf: No such file or directory
[E][11695.448011] pw.conf      | [          conf.c: 1243 pw_conf_load_conf_for_context()] can't load config client.conf: No such file or directory

(/usr/libexec/xdg-desktop-portal:263): xdg-desktop-portal-WARNING **: 18:16:37.102: Failed connect to PipeWire: Couldn't create PipeWire context
dbus-daemon[154]: [session uid=1000 pid=154 pidfd=5] Successfully activated service 'org.freedesktop.portal.Desktop'
[2025-06-15 18:16:37.103] [info] Using CSS file /home/retro/.config/waybar/style.css
basic_string::_M_create
[2025-06-15 18:16:37.109] [error] Can't open RFKILL control device
[2025-06-15 18:16:37.109] [warning] module temperature: Disabling module "temperature", Can't open /sys/class/thermal/thermal_zone0/temp
[2025-06-15 18:16:37.221] [warning] Requested height: 30 is less than the minimum height: 35 required by the modules
[2025-06-15 18:16:37.221] [info] Bar configured (width: 1920, height: 35) for output: WL-1
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 708, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Could not resolve keysym XF86KbdInputAssistPrevgrou
> Warning:          Could not resolve keysym XF86KbdInputAssistNextgrou
Errors from xkbcomp are not fatal to the X server

(/usr/libexec/xdg-desktop-portal:263): xdg-desktop-portal-WARNING **: 18:16:39.130: Realtime error: Could not get pidns: Could not fstatat ns/pid: Not a directory

(/usr/libexec/xdg-desktop-portal:263): xdg-desktop-portal-WARNING **: 18:16:39.131: Realtime error: Could not get pidns: Could not fstatat ns/pid: Not a directory
00:00:03.278 [ERROR] [wlr] [xwayland/xwm.c:1192] Failed to get window property
00:00:04.391 [ERROR] [wlr] [xwayland/xwm.c:1633] xcb error: op ConfigureWindow (no minor), code Value (no extension), sequence 344, value 0
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported maximum keycode 708, clipping.
>                   X11 cannot support keycodes above 255.
> Warning:          Could not resolve keysym XF86KbdInputAssistPrevgrou
> Warning:          Could not resolve keysym XF86KbdInputAssistNextgrou
Errors from xkbcomp are not fatal to the X server
00:00:14.244 [ERROR] [wlr] [xwayland/xwm.c:1192] Failed to get window property
00:00:14.244 [ERROR] [wlr] [xwayland/xwm.c:1192] Failed to get window property
00:00:14.244 [ERROR] [wlr] [xwayland/xwm.c:1192] Failed to get window property
00:00:14.244 [ERROR] [wlr] [xwayland/xwm.c:1192] Failed to get window property
00:00:14.244 [ERROR] [wlr] [xwayland/xwm.c:1192] Failed to get window property
00:00:14.244 [ERROR] [wlr] [xwayland/xwm.c:1633] xcb error: op ChangeProperty (no minor), code Window (no extension), sequence 401, value 6291459
00:00:14.244 [ERROR] [wlr] [xwayland/xwm.c:1633] xcb error: op DeleteProperty (no minor), code Window (no extension), sequence 402, value 6291459

@ABeltramo
Copy link
Member Author

That's probably Steam big picture tripping up for some reason, I've pushed a potential fix for ghcr.io/games-on-whales/steam:edge a few minutes ago but in the meantime you can easily fix that by enabling Windowed mode in the Steam settings, here:
image

@alibell
Copy link

alibell commented Jun 15, 2025

Actually I am up to date on ghcr.io/games-on-whales/steam:edge image and the issue remained.
I activate the Windowed big picture mode and now it's ok.

The performance are the same as reported in #156 (comment)
The log is also pretty much the same.

My docker compose :

services:
  wolf:
    image: ghcr.io/games-on-whales/wolf:stable
    environment:
      - XDG_RUNTIME_DIR=/tmp/sockets
      - NVIDIA_DRIVER_VOLUME_NAME=nvidia-driver-vol
      - HOST_APPS_STATE_FOLDER=/etc/wolf
      - WOLF_RENDER_NODE=/dev/dri/renderD129
      - RUN_SWAY=1
      - RUN_GAMESCOPE=0
      - WOLF_USE_ZERO_COPY=1
      - WOLF_LOG_LEVEL=debug
    volumes:
      - /etc/wolf:/etc/wolf:rw
      - /tmp/sockets:/tmp/sockets:rw
      - /var/run/docker.sock:/var/run/docker.sock:rw
      - /dev/:/dev/:rw
      - /var/run/wolf:/var/run/wolf
      - /run/udev:/run/udev:rw
      - nvidia-driver-vol:/usr/nvidia:rw
    devices:
      - /dev/dri
      - /dev/uinput
      - /dev/uhid
      - /dev/nvidia-uvm
      - /dev/nvidia-uvm-tools
      - /dev/nvidia-caps/nvidia-cap1
      - /dev/nvidia-caps/nvidia-cap2
      - /dev/nvidiactl
      - /dev/nvidia0
      - /dev/nvidia-modeset
    device_cgroup_rules:
      - 'c 13:* rmw'
    network_mode: host
    restart: always
volumes:
  nvidia-driver-vol:
    external: true

@ABeltramo
Copy link
Member Author

That's ok, just wanted to double-check. Thanks for testing and reporting back!

@alibell
Copy link

alibell commented Jun 15, 2025

I'm installing The Witcher 3 in order to test with another game.
My computed was limited on Final Fantast VII (could'nt reach the 120 FPS, NVIDIA linux drivers are well known to have issues on DirectX 12 games).
I will post the performances on The Witcher.

@alibell
Copy link

alibell commented Jun 15, 2025

The Witcher 3 :

Zero Copy Dev

image

Stable

image

@ABeltramo ABeltramo merged commit bc41aa6 into stable Jun 17, 2025
19 checks passed
@ABeltramo ABeltramo deleted the dev-zero-copy branch June 17, 2025 18:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants