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.