mirror of
https://github.com/games-on-whales/wolf.git
synced 2026-10-15 21:12:08 +00:00
[GH-ISSUE #502] [AMD/VAAPI] RX 9070 XT zero-copy HEVC 4K120 produces ~70 unique fps #308
Labels
No labels
🧠 1 - 🤖 999
AMD
bug
bug
cannot reproduce
documentation
duplicate
easy
enhancement
enhancement
enhancement
fixed?
fixed?
good first issue
hard
help wanted
Intel
invalid
LXC
medium
moonlight-protocol
Multi GPU
nixos
not a bug
nvidia
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/wolf#308
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @boiler4 on GitHub (Sep 16, 2026).
Original GitHub issue: https://github.com/games-on-whales/wolf/issues/502
Summary
On an RX 9070 XT, Wolf accepts a Moonlight HEVC session requested at 3840x2160@120, but I observed only about 70.5 unique encoded frame IDs/s on the GameStream video flow. A standalone reproduction using Wolf's zero-copy GStreamer/VA path in the same image measured 63.3 fps HEVC and 24.2 fps AV1 at 4K120/80 Mbps.
I am not claiming that Wolf core or GStreamer alone is proven defective. The minimal pipeline reproduces the throughput without Wolf networking or Moonlight, so the remaining boundary is the VA encode path shipped in the tested Wolf image: GstVA, the container's Mesa/libva stack, encoder settings/submission behavior, or their interaction.
Environment
1002:7550(ASRock subsystem1849:5417)amdgpuin use/dev/dri/renderD1287.0.0-31-genericghcr.io/games-on-whales/wolf:stablesha256:0d901e766e6ed288712ff994dd3b877aea7c9f22ff6e5b0efbb16bc7bb4ae9a47f416ec0f26bb4d95218af806cd1181fe5434598Library identities in the Wolf container:
The current
stablesource branch is newer than the tested revision, but I found no changes to the GStreamer base, GPU-driver Dockerfile, or VA encoder defaults between them.Real Wolf/Moonlight result
VCN_Unified: 96.08% average; this ASIC/kernel does not expose separate Encode or VPE countersZero client drops only means that received frames were delivered; it does not mean 120 distinct frames were encoded.
Standalone reproduction inside the Wolf image
This removes Wolf networking, Moonlight and parsers from the throughput path:
Thirty-second throughput was calculated from the slope of output
progressreportbuffer counts after the startup interval.VCN_Unifiedavg/maxvah265encvaav1encFor AV1 I replaced
vah265encwith:Additional isolation:
gltestsrcfrom SMPTE color bars to black did not produce an obvious speedup in short follow-up runs.videoconvertin the reproduction above.Cross-backend evidence and important caveat
A host-linked FFmpeg 8.0.1 VAAPI build on the same VM/GPU/kernel/firmware measured:
However, this is not an apples-to-apples comparison:
/dev/zeroin RAM followed byhwupload.-async_depth 8.Short output files probed as hardware-produced HEVC Main / AV1 Main at 3840x2160 with 120/1 timing. I use these results only to show that a different VA userspace/submission path can exceed 120 fps on this hardware, not as proof that Wolf core or GstVA is the sole cause or as an image-quality comparison.
AMF and Vulkan tests also used different APIs and RAM upload, so I have intentionally omitted them from the primary reproduction.
Related issues checked
I did not find an exact duplicate for negotiated zero-copy 4K120 working while unique encoded throughput remains around 70 fps on RDNA4.
Questions
vah265enc/vaav1encthroughput expected with the Mesa/GstVA versions bundled in the current Wolf image on RDNA4?I can provide the sanitized 83-test GStreamer matrix, commands and telemetry if useful.
@ABeltramo commented on GitHub (Sep 21, 2026):
There are quite a few tunables that you can play with in the Gstreamer pipeline, there's a good discussion about this on our Discord server here.
I think your AI answered all the other questions already, the ffmpeg comparison is definitely not an apples-to-apples comparison especially since you are encoding a static image (
/dev/zero) which is by itself much faster compared to a real gaming session.I'm going to close this because it doesn't sound like an actual issue, at best this could be a tuning discussion, which usually ends up in the usual dilemma: better image quality but with slower encoding or worse image but faster?