mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 11:20:11 +01:00
loader/dri3: Also wait for front buffer fence if we triggered it
In that case, we have to wait for the fence to synchronize with the
corresponding drawing we triggered in the X server.
Fixes incorrect display with the i965 driver and some applications, e.g.
solvespace.
Bugzilla: https://bugs.freedesktop.org/108097
Fixes: aefac10fec "loader/dri3: Only wait for back buffer fences in
dri3_get_buffer"
Tested-by: Sergii Romantsov <sergii.romantsov@globallogic.com>
This commit is contained in:
parent
00bb42105d
commit
c20ba1be18
1 changed files with 5 additions and 2 deletions
|
|
@ -1736,6 +1736,7 @@ dri3_get_buffer(__DRIdrawable *driDrawable,
|
|||
struct loader_dri3_drawable *draw)
|
||||
{
|
||||
struct loader_dri3_buffer *buffer;
|
||||
bool fence_await = buffer_type == loader_dri3_buffer_back;
|
||||
int buf_id;
|
||||
|
||||
if (buffer_type == loader_dri3_buffer_back) {
|
||||
|
|
@ -1791,6 +1792,7 @@ dri3_get_buffer(__DRIdrawable *driDrawable,
|
|||
0, 0, 0, 0,
|
||||
draw->width, draw->height);
|
||||
dri3_fence_trigger(draw->conn, new_buffer);
|
||||
fence_await = true;
|
||||
}
|
||||
dri3_free_render_buffer(draw, buffer);
|
||||
} else if (buffer_type == loader_dri3_buffer_front) {
|
||||
|
|
@ -1812,13 +1814,14 @@ dri3_get_buffer(__DRIdrawable *driDrawable,
|
|||
new_buffer->linear_buffer,
|
||||
0, 0, draw->width, draw->height,
|
||||
0, 0, 0);
|
||||
}
|
||||
} else
|
||||
fence_await = true;
|
||||
}
|
||||
buffer = new_buffer;
|
||||
draw->buffers[buf_id] = buffer;
|
||||
}
|
||||
|
||||
if (buffer_type == loader_dri3_buffer_back)
|
||||
if (fence_await)
|
||||
dri3_fence_await(draw->conn, draw, buffer);
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue