You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Please add intra refresh (GDR) support for the AMD AMF encoder, equivalent to the NVENC intra refresh support that was added in v2026.516.143833 (#5091). Without it, AMD users streaming to the Xbox Moonlight client get compression artifacts that slowly build up on static or slow-moving content and never clear until the scene changes.
The problem
When streaming to Moonlight on Xbox Series X|S (the UWP client from the Microsoft Store, retail mode), any part of the image that stays still for a while gradually degrades. Typical examples are dialogue scenes, menus, or just standing still in a game. Blocky, smeared artifacts start appearing on certain objects/models and get progressively worse over time. As soon as the camera moves or the scene changes, the affected area is clean again, and then the artifacts slowly start building up again.
As far as I understand it, the cause is that Sunshine streams with an effectively infinite GOP (no periodic IDR frames). On static content, the encoder sends almost no new data for unchanged regions, so tiny decoder/encoder mismatches on the Xbox accumulate over time and are never corrected. Intra refresh solves this by continuously refreshing the picture in small slices without the bitrate spikes of full keyframes.
With the NVENC change, AMD/AMF is now the gap. There is currently no AMF option in Sunshine to enable intra refresh or a periodic keyframe interval.
Proof of concept
There is already community work on this in the Vibeshine fork:
The PR author reports that with AMF GDR active, the artifacts are gone at 4K HDR 60 fps without introducing additional stutter. The review discussion there also surfaced some useful implementation details. AMF treats the intra-refresh controls as dynamic properties, so they apparently need to be applied after the encoder has been initialized rather than during static configuration. In addition, the number of CTBs/MBs per slot must be calculated from the actual frame size. Otherwise, the refresh cycle ends up far too long to have any effect. Results from that fork are still mixed, so it would be great to have a proper, maintained implementation upstream.
Proposed solution
Add intra refresh (GDR) support to the AMF encoder for H.264 and HEVC (and AV1 if AMF supports it), ideally triggered the same way as for NVENC, i.e. when the client requests it.
Alternatively or additionally, expose a config option in the AMD encoder section, e.g. amd_intra_refresh, analogous to the NVENC setting.
As a fallback, a configurable maximum GOP size / periodic IDR interval for AMF would at least allow users to work around the issue at the cost of periodic bitrate spikes.
My setup
Host: Windows [10/11], AMD Radeon RX 7900 XTX, Adrenalin [26.8.1]
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Summary
Please add intra refresh (GDR) support for the AMD AMF encoder, equivalent to the NVENC intra refresh support that was added in v2026.516.143833 (#5091). Without it, AMD users streaming to the Xbox Moonlight client get compression artifacts that slowly build up on static or slow-moving content and never clear until the scene changes.
The problem
When streaming to Moonlight on Xbox Series X|S (the UWP client from the Microsoft Store, retail mode), any part of the image that stays still for a while gradually degrades. Typical examples are dialogue scenes, menus, or just standing still in a game. Blocky, smeared artifacts start appearing on certain objects/models and get progressively worse over time. As soon as the camera moves or the scene changes, the affected area is clean again, and then the artifacts slowly start building up again.
This is a long-standing, well-documented issue:
As far as I understand it, the cause is that Sunshine streams with an effectively infinite GOP (no periodic IDR frames). On static content, the encoder sends almost no new data for unchanged regions, so tiny decoder/encoder mismatches on the Xbox accumulate over time and are never corrected. Intra refresh solves this by continuously refreshing the picture in small slices without the bitrate spikes of full keyframes.
With the NVENC change, AMD/AMF is now the gap. There is currently no AMF option in Sunshine to enable intra refresh or a periodic keyframe interval.
Proof of concept
There is already community work on this in the Vibeshine fork:
The PR author reports that with AMF GDR active, the artifacts are gone at 4K HDR 60 fps without introducing additional stutter. The review discussion there also surfaced some useful implementation details. AMF treats the intra-refresh controls as dynamic properties, so they apparently need to be applied after the encoder has been initialized rather than during static configuration. In addition, the number of CTBs/MBs per slot must be calculated from the actual frame size. Otherwise, the refresh cycle ends up far too long to have any effect. Results from that fork are still mixed, so it would be great to have a proper, maintained implementation upstream.
Proposed solution
amd_intra_refresh, analogous to the NVENC setting.My setup
The artifacts appear reliably after 2 minutes of a static scene, regardless of bitrate. I'm happy to test builds and provide logs if that helps.
Thanks for all the work on Sunshine!
All reactions