Hi Pekka, Alexandros, Here's a patch containing all I had to do in order to test the explicit sync support Alexandros has implemented in Weston.
Thanks, Tomek On Wed, 28 Nov 2018 at 14:35, Tomek Bury <tomek.b...@gmail.com> wrote: > Hi Pekka, > > > I suppose the compositor-side copy of buffers you mentioned is for the > > lack of release fences, not acquire fences? > Yes, the lack of release fences is the very reason for the copy. I could > cook something up for the acquire fence, but that wouldn't synchronise the > buffer access anyway. The only way I can be sure the client doesn't > overwrite a buffer still in use by the GPU was to texture from a copy and > let the compositor release the original without waiting for the GPU and > without a fence. > > Cheers, > Tomek > >
From ee74382c9a9b04c0fd7ca30bee9a3b98a314e942 Mon Sep 17 00:00:00 2001 From: Tomek Bury <tomek.b...@broadcom.com> Date: Mon, 17 Dec 2018 12:33:07 +0000 Subject: [PATCH] clients: Support explicit synchronization in opaque EGL buffers Signed-off-by: Tomek Bury <tomek.b...@broadcom.com> --- libweston/compositor.c | 9 --------- libweston/gl-renderer.c | 3 --- 2 files changed, 12 deletions(-) diff --git a/libweston/compositor.c b/libweston/compositor.c index d939b833..d6860362 100644 --- a/libweston/compositor.c +++ b/libweston/compositor.c @@ -3418,15 +3418,6 @@ surface_commit(struct wl_client *client, struct wl_resource *resource) wl_resource_get_id(resource)); return; } - - if (!linux_dmabuf_buffer_get(surface->pending.buffer->resource)) { - fd_clear(&surface->pending.acquire_fence_fd); - wl_resource_post_error(surface->synchronization_resource, - ZWP_LINUX_SURFACE_SYNCHRONIZATION_V1_ERROR_UNSUPPORTED_BUFFER, - "wl_surface@%"PRIu32" unsupported buffer for synchronization", - wl_resource_get_id(resource)); - return; - } } if (surface->pending.buffer_release_ref.buffer_release && diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c index 18858949..ac490322 100644 --- a/libweston/gl-renderer.c +++ b/libweston/gl-renderer.c @@ -895,9 +895,6 @@ ensure_surface_buffer_is_ready(struct gl_renderer *gr, /* We should only get a fence if we support EGLSyncKHR, since * we don't advertise the explicit sync protocol otherwise. */ assert(gr->has_native_fence_sync); - /* We should only get a fence for zwp_linux_dmabuf buffers, since - * surface commit would have failed otherwise. */ - assert(linux_dmabuf_buffer_get(buffer->resource) != NULL); attribs[1] = dup(surface->acquire_fence_fd); if (attribs[1] == -1) { -- 2.17.1
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel