These changes have been ported from AMD GPU DDX driver.
This patch adds support for setting the CRTC variable refresh property for suitable windows flipping via the Present extension.
The "VariableRefresh" Option is added to modesetting backend in this patch. This option defaults to false, and must be set to "true" in an X conf file for variable refresh support in the driver. Also DRM connector should be VRR capable.
In order for a window to be suitable for variable refresh it must have the _VARIABLE_REFRESH property set.
Then the window must pass the checks required to be suitable for Present extension flips - it must cover the entire X screen and no other window may already be flipping.
With these conditions met every CRTC for the X screen will have their variable refresh property set to true.
Kernel Changes to support this feature in I915 driver is under development.
window wrappers gets the notification when the window properties changes.
Tested with DOTA2, Xonotic and custom GLX apps.