From e89a4589c06adbaa6546e170dbcd0034c45ea287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Tue, 4 Sep 2018 12:18:19 +0200 Subject: [PATCH] loader/dri3: Only wait for back buffer fences in dri3_get_buffer We don't need to wait before drawing to the fake front buffer, as front buffer rendering by definition is allowed to produce artifacts. Fixes hangs in some cases when re-using the fake front buffer, due to it still being busy (i.e. in use for presentation). Cc: mesa-stable@lists.freedesktop.org Bugzilla: https://bugs.freedesktop.org/106404 Bugzilla: https://bugs.freedesktop.org/107757 Tested-by: Olivier Fourdan Reviewed-by: Thomas Hellstrom (cherry picked from commit aefac10fecc9ec70feb5923ce3200902f67182ba) --- src/loader/loader_dri3_helper.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c index 9b787bb1751..076045a72bc 100644 --- a/src/loader/loader_dri3_helper.c +++ b/src/loader/loader_dri3_helper.c @@ -1736,7 +1736,9 @@ dri3_get_buffer(__DRIdrawable *driDrawable, buffer = new_buffer; draw->buffers[buf_id] = buffer; } - dri3_fence_await(draw->conn, draw, buffer); + + if (buffer_type == loader_dri3_buffer_back) + dri3_fence_await(draw->conn, draw, buffer); /* * Do we need to preserve the content of a previous buffer?