VARIABLE REFRESH PROPERTIES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– Variable refresh properties(9) πŸ’–

okay so bestie, this page is literally Variable refresh properties(9) from the Kernel API Manual β€” and it's giving "how does variable refresh rate actually work in the kernel" energy. let's go πŸŽ€

Variable refresh rate capable displays can dynamically adjust their refresh rate by extending the duration of their vertical front porch until page flip or timeout occurs. This can reduce or remove stuttering and latency in scenarios where the page flip does not align with the vblank interval. ✨ slay.

An example scenario would be an application flipping at a constant rate of 48Hz on a 60Hz display. The page flip will frequently miss the vblank interval and the same contents will be displayed twice. This can be observed as stuttering for content with motion. 😭 no cap.

If variable refresh rate was active on a display that supported a variable refresh range from 35Hz to 60Hz no stuttering would be observable for the example scenario. The minimum supported variable refresh rate of 35Hz is below the page flip frequency and the vertical front porch can be extended until the page flip occurs. The vblank interval will be directly aligned to the page flip rate. πŸ”₯ iconic.

Not all userspace content is suitable for use with variable refresh rate. Large and frequent changes in vertical front porch duration may worsen perceived stuttering for input sensitive applications. πŸ™ˆ highkey important.

Panel brightness will also vary with vertical front porch duration. Some panels may have noticeable differences in brightness between the minimum vertical front porch duration and the maximum vertical front porch duration. Large and frequent changes in vertical front porch duration may produce observable flickering for such panels. πŸ’€ yikes but noted.

Userspace control for variable refresh rate is supported via properties on the drm_connector and drm_crtc objects. πŸ‘‘

  • "vrr_capable" β€” Optional drm_connector boolean property that drivers should attach with drm_connector_attach_vrr_capable_property on connectors that could support variable refresh rates. Drivers should update the property value by calling drm_connector_set_vrr_capable_property. 🫢

Absence of the property should indicate absence of support. periodt.

  • "VRR_ENABLED" β€” Default drm_crtc boolean property that notifies the driver that the content on the CRTC is suitable for variable refresh rate presentation. The driver will take this property as a hint to enable variable refresh rate support if the receiver supports it, ie. if the "vrr_capable" property is true on the drm_connector object. The vertical front porch duration will be extended until page-flip or timeout when enabled. ⭐

The minimum vertical front porch duration is defined as the vertical front porch duration for the current mode. 🌸

The maximum vertical front porch duration is greater than or equal to the minimum vertical front porch duration. The duration is derived from the minimum supported variable refresh rate for the connector. 🌈

The driver may place further restrictions within these minimum and maximum bounds. πŸ’…


πŸ‘€ SEE ALSO πŸ‘€

okay these are the linked besties, no skips:

that's the whole page, bestie! source: ./drivers/gpu/drm, dated October 2026, titled Variable refresh properties(9) β€” mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from