Recently I bought an eVGA DisplayPort hub, meant to take advantage of the Multi-Stream Transport capabilities of the DisplayPort port on my main workstation magnus. Using debian stretch means that MST is supported - all I had to do was plug it in.
The two monitors I plugged into were not the exact same model, but both were Dell and ran at 1080p. I saw problems right away - the right monitor flickered. Sometimes almost constantly, sometimes not at all.
I switched out DisplayPort cables and the problem remained. I borrowed another monitor from a collegue and tried that - no flickering was seen! Thinking my right monitor was bad, I tested it on its own through the hub for a long while but never saw any flickering.
What was the problem? Here’s the Xrandr output when it worked with my left monitor and the borrowed right monitor:
DP-1-2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 297mm
DP-1-1-2 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 527mm x 297mm
and when it did not work using my left monitor and my right monitor:
DP-1-2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 297mm
DP-1-1-2 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 527mm x 296mm
(DP-1-2 is on the left, and DP-1-1-2 is on the right)
The only difference was the fbmm:
--fbmm widthxheight
Sets the reported values for the physical size of the screen.
Normally, xrandr resets the reported physical size values to keep
the DPI constant. This overrides that computation.
It didn’t seem right that the fbmm of both monitors had to match because then any muliple monitor configuration with monitors of different physical size would not work.
Could it be that the “larger” fbmm on the first port was causing problems? I swapped the monitors so that the 296mm monitor was on the first port (left), and the flickering stopped. It’s been rock solid ever since, and I have no idea why this fixed it :)