The real reason is still a mystery to me. But I suspect that this a combination of a hardware and software bug.
Modesetting is setting a display resolution, depth and refresh.
KMS is Kernel ModeSetting, where you configure a display when the kernel boots up, before the rest of your OS loads in userspace.
First I tried disabling KMS with nomodeset:
Code: Select all
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"
There was
no flicker. The display came up as 76Hz for some reason once Mate loaded. But this was also a step backwards as it broke a few other minor things and the LCD wasn't being properly probed or detected. But now I knew that 76Hz was a valid refresh rate for this display and it didn't flicker.
Removing nomodeset to re-enable KMS and adding a kernel boot option to force 76Hz seemed like the smart thing to do:
Code: Select all
GRUB_CMDLINE_LINUX_DEFAULT="1024x768@76"
No flicker but xrandr still says that 60Hz is the only option available. The display might have been briefly set to 76Hz while it was booting and Mate set it back to 60. To me this doesn't really matter and seems like the easiest fix for the flickering issue. To have more control over refresh, you would have to use modelines in xorg conf files to make the other rates available to you.