Skip to main content
blogsigler

Gaming with Arch Linux part 2

In a previous post, I talked about how I set up Arch Linux and had been doing some gaming on it. I encountered another issue, so I felt compelled to write about it.

I began to notice what I am calling a 'brightness flickering' problem. It's subtle, but looking closely at the screen, I can see that certain frames are brighter and whiter than others, so it looks like the screen is flashing. I recall seeing this a year ago when trying to play Baldur's Gate 3 on Linux. Unfortunately, I wasn't diligent about writing down my problems or solutions so I had to start from scratch. After some trial and error, I figured out that the issue only happened when the game was fullscreen--additionally, I was able to reproduce the problem on the desktop by setting Variable refresh rate in the KDE display settings to Always, which confirmed that the issue occurred when variable refresh rate was on.

I found a thread on Reddit which sounds like my problem. It seems that KDE has a bug where, whenever VRR is enabled, instead of running the monitor's refresh rate at whatever framerate your game is running at, it'll jump around between 48, 90, and 144 hz. The refresh rate of one's monitor affects its brightness, which your monitor must then compensate for (or so I am told), so jumping around between 48-144hz at this rate causes annoying brightness flickers. There is some pedantry about how this is maybe expected on the desktop, because if nothing on your screen is moving, the framerate will be low and the monitor will drop to the bottom of its VRR range (commonly 48hz) until something happens on screen (like your mouse moving). However, that doesn't explain why it would happen when playing a game, running at a stable 143 fps. Additionally, I would sort of expect that, if running your desktop with VRR, it should do what it can, including 'rendering' the desktop at 144fps if needed, to avoid a brightness flicker from bothering the user.

I did a lot of experiments to confirm what I had already gathered from reading, which is that there are 3 possibilities:

I think normally I would just enable VSync, because at 144hz the latency isn't as noticeable as it is at 60hz, but I specifcally bought a FreeSync monitor to use VRR, so I don't know if I can accept not having it. Luckily, it turns out the much-maligned GNOME desktop environment appears to support VRR correctly.