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

Reply via email to