From: Gustavo Padovan <gustavo.pado...@collabora.co.uk>

Document IN_FENCE_FD and OUT_FENCE_PTR properties.

Signed-off-by: Gustavo Padovan <gustavo.padovan at collabora.co.uk>
---
 Documentation/gpu/drm-kms.rst |  6 ++++++
 drivers/gpu/drm/drm_atomic.c  | 31 +++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git a/Documentation/gpu/drm-kms.rst b/Documentation/gpu/drm-kms.rst
index 568f3c2..cdc9539 100644
--- a/Documentation/gpu/drm-kms.rst
+++ b/Documentation/gpu/drm-kms.rst
@@ -287,6 +287,12 @@ Tile Group Property
 .. kernel-doc:: drivers/gpu/drm/drm_connector.c
    :doc: Tile group

+Explicit Fencing Properties
+---------------------------
+
+.. kernel-doc:: drivers/gpu/drm/drm_atomic.c
+   :doc: explicit fencing properties
+
 Existing KMS Properties
 -----------------------

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index b476ec5..7f33031 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -1809,6 +1809,37 @@ void drm_atomic_clean_old_fb(struct drm_device *dev,
 }
 EXPORT_SYMBOL(drm_atomic_clean_old_fb);

+/**
+ * DOC: explicit fencing properties
+ *
+ * Explicit fencing allows userspace to control the buffer synchronization
+ * between devices. A Fence or a group of fences are trasnfered to/from
+ * userspace using Sync File fds and there are two DRM properties for that.
+ * IN_FENCE_FD on each DRM Plane to send fences to the kernel and
+ * OUT_FENCE_PTR on each DRM CRTC to receive fences from the kernel.
+ *
+ * "IN_FENCE_FD”:
+ *     Use this property to pass a fence that DRM should wait on before
+ *     proceeding with the Atomic Commit request and show the framebuffer for
+ *     the plane on the screen. The fence can be either a normal fence or a
+ *     merged one, the sync_file framework will handle both case and use a
+ *     fence_array if a merged fence is received. Passing -1 here means no
+ *     fences to wait on.
+ *
+ * "OUT_FENCE_PTR”:
+ *     Use this property to pass a file descriptor pointer to DRM. Once the
+ *     Atomic Commit request call returns OUT_FENCE_PTR will be filled with
+ *     the file descriptor number of a Sync File. This Sync File contains the
+ *     CRTC fence that will be signaled when all framebuffers present on the
+ *     Atomic Commit * request for that given CRTC are scanned out on the
+ *     screen.
+ *
+ *     The Atomic Commit request fails if a invalid pointer is passed. If the
+ *     Atomic Commit request fails for any other reason the out fence fd
+ *     returned will be -1. On a Atomic Commit with the
+ *     DRM_MODE_ATOMIC_TEST_ONLY flag the out fence will also be set to -1.
+ */
+
 static struct dma_fence *get_crtc_fence(struct drm_crtc *crtc)
 {
        struct dma_fence *fence;
-- 
2.5.5

Reply via email to