Skip to content

Revert "egl/x11: implement ANGLE_sync_control_rate"

Kenneth Graunke requested to merge kwg/mesa:revert-angle-sync-control-rate into main

This reverts commit 47526556.

There are several problems with the implementation:

  1. RRGetScreenInfo will try to re-probe the connector status, which can cause an EDID transfer for every output, which may be ~100ms for a single EDID block, according to Adam Jackson. This makes what ought to be a quick "what's the refresh rate?" question turn into a giant blocking operation.

    This resulted in a ~75% slowdown in WebGL performance in Chromium on some systems.

  2. It didn't handle multi-monitor scenarios correctly. The spec says,

    "For a multi-monitor system, the monitor used to determine MSC is the one where the surface is located. If the surface spans multiple monitors, the monitor used to determine MSC is the one with the biggest coverage in pixels."

    But the merged implementation would always return one monitor's refresh rate. To test this, I connected two monitors at 60 FPS and 30 FPS, and moved a Chromium window between them. It always returned 60 FPS no matter what.

I don't often like retracting features but this one seems to need a substantial rewrite to be non-regressing, and even more work to fix the reported timings for multi-monitor. We should just revert it and try again in future patches.

References: #6996 (closed)

References: #2930 (closed)

+@lygstate +@ajax +@majanes +@mattst88

Merge request reports