VARIABLE REFRESH PROPERTIES(9)
π 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"β Optionaldrm_connectorboolean property that drivers should attach withdrm_connector_attach_vrr_capable_propertyon connectors that could support variable refresh rates. Drivers should update the property value by callingdrm_connector_set_vrr_capable_property. π«Ά
Absence of the property should indicate absence of support. periodt.
"VRR_ENABLED"β Defaultdrm_crtcboolean 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 istrueon thedrm_connectorobject. 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:
Kernel file ./drivers/gpu/drm/drm_connector.c overview(9)drm_get_connector_type_name(9)drm_connector_get_cmdline_mode(9)drm_connector_init(9)drm_connector_dynamic_init(9)drm_connector_init_with_ddc(9)drmm_connector_init(9)drmm_connector_hdmi_init(9)drm_connector_attach_edid_property(9)drm_connector_attach_encoder(9)drm_connector_has_possible_encoder(9)drm_connector_cec_phys_addr_invalidate(9)drm_connector_cec_phys_addr_set(9)drm_connector_cleanup(9)drm_connector_register(9)drm_connector_dynamic_register(9)drm_connector_unregister(9)drm_get_connector_status_name(9)drm_get_connector_force_name(9)drm_connector_list_iter_begin(9)drm_connector_list_iter_next(9)drm_connector_list_iter_end(9)drm_get_subpixel_order_name(9)drm_display_info_set_bus_formats(9)drm_get_tv_mode_from_name(9)drm_get_colorspace_name(9)standard connector properties(9)drm_mode_create_dvi_i_properties(9)drm_connector_attach_dp_subconnector_property(9)HDMI connector properties(9)Analog TV Connector Properties(9)drm_connector_attach_content_type_property(9)drm_connector_attach_tv_margin_properties(9)drm_mode_create_tv_margin_properties(9)drm_mode_create_tv_properties_legacy(9)drm_mode_create_tv_properties(9)drm_mode_create_scaling_mode_property(9)drm_connector_attach_vrr_capable_property(9)drm_connector_attach_scaling_mode_property(9)drm_mode_create_aspect_ratio_property(9)standard connector properties(9)drm_mode_create_hdmi_colorspace_property(9)drm_mode_create_dp_colorspace_property(9)drm_mode_create_content_type_property(9)drm_mode_create_suggested_offset_properties(9)drm_connector_set_path_property(9)drm_connector_set_tile_property(9)drm_connector_set_link_status_property(9)drm_connector_attach_max_bpc_property(9)drm_connector_attach_hdr_output_metadata_property(9)drm_connector_attach_broadcast_rgb_property(9)drm_connector_attach_colorspace_property(9)Color format(9)drm_connector_attach_color_format_property(9)drm_connector_atomic_hdr_metadata_equal(9)drm_connector_set_vrr_capable_property(9)drm_connector_set_panel_orientation(9)drm_connector_set_panel_orientation_with_quirk(9)drm_connector_set_orientation_from_panel(9)drm_connector_create_privacy_screen_properties(9)drm_connector_attach_privacy_screen_properties(9)drm_connector_attach_privacy_screen_provider(9)drm_connector_update_privacy_screen(9)drm_connector_find_by_fwnode(9)drm_connector_oob_hotplug_event(9)drm_connector_get_color_format(9)Tile group(9)drm_mode_put_tile_group(9)drm_mode_get_tile_group(9)drm_mode_create_tile_group(9)drm_connector_attach_panel_type_property(9)
that's the whole page, bestie! source: ./drivers/gpu/drm, dated October 2026, titled Variable refresh properties(9) β mwah πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms