Linux Support for Variable Refresh Rates On Gen12+ Intel GPUs Is On The Way
Intel developer Manasi Navare has submitted a series of patches for the Linux kernel that brings support for variable refresh rates on Intel's latest graphics chips to the Linux kernels i915 driver. The feature is only enabled on Tiger Lake, Sapphire Rapids and newer Intel graphics chips.
written by 윤채경 (Yoon Chae-kyung). published 2020-10-23 - last edited 2020-10-24
Variable Refresh Rate is a technology that's primarily useful when it's gaming time. It allows the GPU to make the display adjust it's refresh-rate depending on how many frames it manages to produce. Some Wayland compositors support it but there's not much else supporting it on GNU/Linux. There is the gl-gsync-demo in case you have a AMD graphics card and a monitor with support for variable refresh rates and you'd like to try it by enabling VRR with a X.org configuration file like:
amdgpu kernel driver has had support for variable refresh rate since Linux 5.0.
You do not need a special "Freesync" monitor to use adaptive vertical synchronization, Freesync is just a marketing term used by AMD. The DisplayPort specification has included variable refresh rate (VRR) as an option feature since DP 1.4 and there are many monitors with support for it that are not marketed as "Freesync" or "gaming" monitors. Monitors that are marketed as "Freesync" support the standard DisplayPort VRR protocol so you don't need to use a AMD graphics card to get the benefits of a Freesync monitor. You will soon be able to use one of the very latest Intel CPU's with integrated graphics or one of Intel's upcoming dedicated graphics cards with Freesync monitors on Linux.
"This patch series adds support for DP 1.4 feature of Adaptive Sync also called as Variable Refresh rate which is used to match the display rate with the render rate by stretching or shrinking the blanking time of the frame."
A close-up inspection of the patches for
intel_dp.c reveal that the vast majority of those who own some kind of Intel graphics chips won't be able to enjoy this upcoming variable refresh rate support:
@@ -7080,6 +7085,9 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT; } + + if (INTEL_GEN(dev_priv) >= 12) + drm_connector_attach_vrr_capable_property(connector); } static void intel_dp_init_panel_power_timestamps(struct intel_dp *intel_dp)
Intel's 12th generation graphics is so far only found on their Tiger Lake processors.
It should also be noted that HDMI won't be supported, not with these patches anyway.
One of the patches in the series notes that "panels do not work reliably with PSR and VRR together" so the Panel Self-Refresh (PSR) power-saving feature is disabled when Variable Refresh Rates are used.
It is extremely unlikely that these patches will make it into Linux 5.10. The merge window will close this weekend and and the code in these patches doesn't even compile when they are applied against the current Linux git master tree. These patches will, in a best-case scenario, make it into Linux 5.11. It's also possible that the patch-set will go through revision after revision for a year before it is finally accepted - like the AMD Fusion Hub driver patch-set did before Jiri Kosina finally accepted it to