Skip to content

libweston: Add support for zwp_linux_explicit_synchronization_unstable_v1

This MR implements the zwp_linux_explicit_synchronization_unstable_v1 protocol in libweston.

The implementation is partial, in the sense that the zwp_buffer_release_v1.fenced_release event is supported only for GL rendered surfaces, but this is still a conformant implementation since we do support the immediate_release event for other cases. Note that it's safe to emit an immediate_release when a surface is assigned to a plane, since the DRM backend releases the surface buffer only after the next page flip that doesn't use the buffers has finished (see commit 4 for more).

There are a few open concern/questions which have been marked in the commit message in the respective commits.

Commits 1-4 in this MR implement the protocol itself and are the only ones strictly required for this feature, although I would ideally like to get all the proposed commits in.

Commit 5 adds some extra, but important, tests for the per-commit behavior of the implementation.

Commit 6 extends the simple-dmabuf-egl client to support explicit synchronization if available.

Commit 7 extends the simple-dmabuf-egl client to support more complex rendering (mandelbrot fragment shader + multiple draw calls), in order to help uncover potentially synchronization issues.

Edited by Alexandros Frantzis

Merge request reports