forked from mirrors/linux
		
	drm: Document variable refresh properties
These include the drm_connector 'vrr_capable' and the drm_crtc 'vrr_enabled' properties. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Acked-by: Pekka Paalanen <pekka.paalanen@collabora.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
		
							parent
							
								
									1398958cfd
								
							
						
					
					
						commit
						ab7a664f7a
					
				
					 2 changed files with 75 additions and 0 deletions
				
			
		|  | @ -575,6 +575,13 @@ Explicit Fencing Properties | ||||||
| .. kernel-doc:: drivers/gpu/drm/drm_atomic_uapi.c | .. kernel-doc:: drivers/gpu/drm/drm_atomic_uapi.c | ||||||
|    :doc: explicit fencing properties |    :doc: explicit fencing properties | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | Variable Refresh Properties | ||||||
|  | --------------------------- | ||||||
|  | 
 | ||||||
|  | .. kernel-doc:: drivers/gpu/drm/drm_connector.c | ||||||
|  |    :doc: Variable refresh properties | ||||||
|  | 
 | ||||||
| Existing KMS Properties | Existing KMS Properties | ||||||
| ----------------------- | ----------------------- | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1271,6 +1271,74 @@ int drm_mode_create_scaling_mode_property(struct drm_device *dev) | ||||||
| } | } | ||||||
| EXPORT_SYMBOL(drm_mode_create_scaling_mode_property); | EXPORT_SYMBOL(drm_mode_create_scaling_mode_property); | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * DOC: Variable refresh properties | ||||||
|  |  * | ||||||
|  |  * 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. | ||||||
|  |  * | ||||||
|  |  * 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. | ||||||
|  |  * | ||||||
|  |  * 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. | ||||||
|  |  * | ||||||
|  |  * 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. | ||||||
|  |  * | ||||||
|  |  * 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. | ||||||
|  |  * | ||||||
|  |  * 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. | ||||||
|  |  * | ||||||
|  |  * "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. | ||||||
|  |  * | ||||||
|  |  *	The semantics for the vertical blank timestamp differ when | ||||||
|  |  *	variable refresh rate is active. The vertical blank timestamp | ||||||
|  |  *	is defined to be an estimate using the current mode's fixed | ||||||
|  |  *	refresh rate timings. The semantics for the page-flip event | ||||||
|  |  *	timestamp remain the same. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * drm_connector_attach_vrr_capable_property - creates the |  * drm_connector_attach_vrr_capable_property - creates the | ||||||
|  * vrr_capable property |  * vrr_capable property | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Nicholas Kazlauskas
						Nicholas Kazlauskas