|
@@ -1496,6 +1496,14 @@ EXPORT_SYMBOL(drm_atomic_set_fb_for_plane);
|
|
|
* Otherwise, if &drm_plane_state.fence is not set this function we just set it
|
|
|
* with the received implicit fence. In both cases this function consumes a
|
|
|
* reference for @fence.
|
|
|
+ *
|
|
|
+ * This way explicit fencing can be used to overrule implicit fencing, which is
|
|
|
+ * important to make explicit fencing use-cases work: One example is using one
|
|
|
+ * buffer for 2 screens with different refresh rates. Implicit fencing will
|
|
|
+ * clamp rendering to the refresh rate of the slower screen, whereas explicit
|
|
|
+ * fence allows 2 independent render and display loops on a single buffer. If a
|
|
|
+ * driver allows obeys both implicit and explicit fences for plane updates, then
|
|
|
+ * it will break all the benefits of explicit fencing.
|
|
|
*/
|
|
|
void
|
|
|
drm_atomic_set_fence_for_plane(struct drm_plane_state *plane_state,
|