Flicker fixin' the WX7100

We talked about properly enabling the Command key so that Power Mac users could feel at home, so let's talk about flicker fixing so that Amiga users will feel at home. ;)

A gaming pet peeve of mine on modern systems is that full screen is still often the default. This is a workstation, damn it, not a freaking DOS box. There are other things running! But while working on a forthcoming article about Linux gaming on the Talos II (spoiler alert: it's a thing), my pet peeve was compounded upon returning to my usual display resolution when the AMD WX7100 workstation card started randomly flickering.

The first time this happened I solved it with a power cycle, but obviously I don't want to do this every time if I accidentally start a game with the wrong options. Apparently this regression in amdgpu was introduced somewhere around kernel 4.15. My best guess from tinkering a little with the low-level settings is that this issue is triggered by weird switches in refresh rates and seems to have something to do with rapid changes in memory frequency. Raptor sells this card as a BTO option for all models in the T2 line, so this is likely to be a source of annoyance for other Talos owners using their supported card. Unfortunately, it's not at all clear when it might get actually fixed.

If this happens to you, there are a few solutions. The one that works reliably for me is to hard-reselect my monitor's refresh rate with xrandr. My screen likes 60Hz and allows 50Hz, so I do (assuming your uid is in the right groups for this) xrandr -r 50 ; xrandr -r 60 to zap the screen back. This seems to do the job even when xrandr thinks I'm already at 60Hz. If the game didn't fix your resolution, you might add something like -s "1920x1080" or your geometry of choice.

If that doesn't work, disabling auto power management on the card seems to also help, though this may cause unexpected heat, power or performance changes. Something like (as root) echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level (or low, instead of auto) also fixed the issue on my system, suggesting the same root cause. You can also try limiting the memory clock to a fixed frequency, such as (as root) echo 2 > /sys/class/drm/card0/device/pp_dpm_mclk which pegs the clock at 2000MHz.

Now, if you'll excuse me, I have a date with shooting Nazis. In a window.


  1. Great to hear gaming is a thing, because if gaming works, chances are the 3D apps I need to run will also work and that's the dealbreaker for me. I'm anxious to see your article and thanks for your work so far.


Post a Comment

Comments are subject to moderation. Be nice.