
Open-source developer Mario Kleiner who came up with this new "AsyncFlipSecondaries" feature sums up the problem as:
Whenever an unredirected fullscreen window uses pageflipping for a DRI3/Present PresentPixmap() operation and the X-Screen has more than one active output, multiple crtc's need to execute pageflips. Only after the last flip has completed can the PresentPixmap operation as a whole complete.
If a sync_flip is requested for the present, then the current implementation will synchronize each pageflip to the vblank of its associated crtc. This provides tear-free image presentation across all outputs, but introduces a different artifact, if not all outputs run at the same refresh rate with perfect synchrony: The slowest output throttles the presentation rate, and present completion is delayed to flip completion of the "latest" output to complete. This means degraded performance, e.g., a dual-display setup with a 144 Hz monitor and a 60 Hz monitor will always be throttled to at most 60 fps. It also means non-constant present rate if refresh cycles drift against each other, creating complex "beat patterns", tremors, stutters and periodic slowdowns - quite irritating!
Mario devised the AsyncFlipSecondaries option in allowing for a vblank-synced flip on the primary display while all other displays will try to flip async/immediately and not synchronized to the central vblank. So the secondary displays may have potential tearing but that trade-off should be better than the status quo for at least some users.
More details via this commit . The AsyncFlipSecondaries addition will be part of the upcoming X.Org Server 21.1 release.