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 <ofourdan@redhat.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
(cherry picked from commit aefac10fec)
This commit is contained in:
Michel Dänzer 2018-09-04 12:18:19 +02:00 committed by Dylan Baker
parent eb6abe40f0
commit e89a4589c0

View file

@ -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?