From 598e9e9d51a289aa5989502f66d9fc2a8bcfb013 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Tue, 14 Oct 2025 15:54:02 +0200 Subject: [PATCH] linux-drm-syncobj-v1: allow explicit sync with any buffer type For wl_shm clients, the buffer currently has to be ready at commit time. Therefore such clients have to perform a blocking wait before committing, partially or fully negating the advantages of threaded rendering. See for example [1]. [1]: https://gitlab.freedesktop.org/mesa/mesa/-/blob/451a0bd49002713d64c4a70a292ceadcad29f943/src/vulkan/wsi/wsi_common.c#L1735-1738 Signed-off-by: Julian Orth --- .../linux-drm-syncobj/linux-drm-syncobj-v1.xml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml b/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml index 2c491ea..d93d6b4 100644 --- a/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml +++ b/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml @@ -55,7 +55,7 @@ only be done by creating a new major version of the extension. - + This global is a factory interface, allowing clients to request explicit synchronization for buffers on a per-surface basis. @@ -106,9 +106,16 @@ + + + + This event is sent immediately after binding the global to indicate that + the compositor supports explicit synchronization with any buffer type. + + - + This object represents an explicit synchronization object timeline imported by the client to the compositor. @@ -123,7 +130,7 @@ - + This object is an add-on interface for wl_surface to enable explicit synchronization. @@ -137,6 +144,10 @@ If at surface commit time the attached buffer does not support explicit synchronization, an unsupported_buffer error is raised. + In version 2 and above, the compositor can send the + supports_any_buffer_type event to indicate that it supports explicit + synchronization with any buffer type. + As long as the wp_linux_drm_syncobj_surface_v1 object is alive, the compositor may ignore implicit synchronization for buffers attached and committed to the wl_surface. The delivery of wl_buffer.release events