ValveSoftware / ValveSoftware/SteamOS
RX 9070 XT: games running across suspend lose VRAM to GTT on resume, performance collapses until restart
Nobody has claimed this yet.
- Dominant language
- No language data
- Stars
- 2.6k
- Forks
- 83
- Avg merge
- 4m
- Merged PRs (30d)
- 3
Description
Your system information
- Steam client version: 1789086785 (steamdeck_publicbeta)
- SteamOS version: 3.9.0 (build 20260828.100), kernel 7.2.0-valve1. Also reproduced on 3.8.26 (20260827.1), kernel 6.18.46-valve1
- Opted into Steam client beta?: Yes
- Opted into SteamOS beta?: Yes (Preview)
- Have you checked for updates in Settings > System?: Yes
Hardware: desktop, ASRock B850I Lightning WiFi (BIOS 4.43), Ryzen 7 7800X3D, XFX RX 9070 XT (Navi 48, 1002:7550), HDMI to a 4K HDR 120Hz TV. Raphael iGPU is also bound to amdgpu.
Graphics stack: vulkan-radeon 26.2.0_devel.222131.steamos_26.05.16, mesa 26.1.2, linux-firmware-neptune 20260827.1, gamescope 3.16.26.
Please describe your issue in as much detail as possible:
Expected: a game left running when the system goes to sleep performs the same after wake as before.
Actual: after wake the game is severely degraded until it is restarted. A game launched after wake runs normally. Reproduced with:
- Onimusha: Way of the Sword
- The Witcher 3
- Counter-Strike 2 (native Linux/Vulkan)
I have two OS versions I've tested that fail differently:
3.9.0: frame rate collapses (Onimusha drops from 60fps to about 12fps). The game's VRAM is evicted to GTT at suspend and never comes back:
- Before suspend, Onimusha's fdinfo shows
drm-resident-vramat about 7.4 GiB andmem_info_vram_usedat 8.6 GiB. - After wake, Onimusha shows
drm-resident-vramat about 190 MiB anddrm-resident-gttat about 7.9 GiB.mem_info_vram_usedis about 1.0 GiB andmem_info_gtt_usedabout 8.3 GiB. - CS2 after wake:
mem_info_vram_usedis 1.8 GiB andmem_info_gtt_used8.5 GiB, almost all of it CS2's. CS2 relaunched after the same wake holds a solid 60fps withmem_info_vram_usedat 9.8 GiB andmem_info_gtt_usedat 0.5 GiB. - It stays that way for as long as the game runs. The GPU reports 100% busy, but power drops from about 230-266W to about 140-170W.
- No kernel errors are logged.
3.8.26: VRAM does return, but the game hitches badly on camera movement. Both measurements below were taken while the game was running after wake:
- The game's gfx engine time is about 2.8x its pre-suspend value, and power falls to about 120W at 100% busy.
- amdgpu fires about 85k IRQs per second. kworkers on the
sdma1,gfx_0.0.0andcomp_1.1.0workqueues stay busy. mem_info_vram_used/mem_info_gtt_usedchange between 20Hz samples about half the time (±30 MiB).
Both kernels log amdgpu 0000:03:00.0: MODE1 reset at suspend entry.
On 3.9.0 I ruled out each of the following with a separate suspend cycle; the result was identical every time:
- my own GPU tuning, both the undervolt/power cap/fan curve and OverDrive disabled at module load via stock
ppfeaturemask - dmemcg-booster, with both units masked and the dmem controller not enabled
- Steam background game recording
- the iGPU: the game's memory stays behind the dGPU's GTT, and the iGPU holds about 14 MiB
Sleep/wake worked on this system at some point, but I don't know which version last worked.
Steps for reproducing this issue:
- On an RX 9070 XT, launch Counter-Strike 2 (offline practice map, 4K), Onimusha: Way of the Sword, or The WItcher 3 and play briefly.
- Put the system to sleep with the game still running, then wake it.
- Return to the game: on 3.9.0 performance collapses and
/sys/class/drm/card0/device/mem_info_vram_usedstays around 1-2 GiB with the game's memory in GTT; on 3.8.26 it hitches on camera movement. Restarting the game restores normal performance.
Other Notes
I haven't found others with this specific issue, so it could be something specific to my setup. That being said, I have pretty well-supported hardware and am running pretty much stock SteamOS besides a small undervolt and power limit settings (bug manifested with that disabled though, so that's not the problem). This bug in particular is a huge bummer for me because sleep/resume is the most important feature for me in SteamOS. I would appreciate any guidance/advice/possible fixes!
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue with Counter-Strike 2, Onimusha: Way of the Sword, or The Witcher 3 across suspend and resume. Start by checking /sys/class/drm/card0/device/mem_info_vram_used and mem_info_gtt_used, then compare the MODE1 reset and amdgpu workqueue behavior on SteamOS 3.9.0 and 3.8.26. Done means the resumed game retains normal VRAM placement and performance without requiring a restart.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux
- Domain
- operating-systems, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100