loader/dri3: fix piglit egl-copy-buffer test

In the test no front buffer has been allocated on the client
side, so we get a segfault when access it directly.

eglCopyBuffers() just need to do server side copy, so we don't
really need to create a client side front buffer to perform
the copy.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13868>
This commit is contained in:
Qiang Yu 2021-11-19 09:24:38 +08:00 committed by Marge Bot
parent 391569e911
commit 24aa03e9e8
1 changed files with 9 additions and 3 deletions

View File

@ -894,13 +894,19 @@ loader_dri3_copy_drawable(struct loader_dri3_drawable *draw,
{
loader_dri3_flush(draw, __DRI2_FLUSH_DRAWABLE, __DRI2_THROTTLE_COPYSUBBUFFER);
dri3_fence_reset(draw->conn, dri3_fake_front_buffer(draw));
struct loader_dri3_buffer *front = dri3_fake_front_buffer(draw);
if (front)
dri3_fence_reset(draw->conn, front);
dri3_copy_area(draw->conn,
src, dest,
dri3_drawable_gc(draw),
0, 0, 0, 0, draw->width, draw->height);
dri3_fence_trigger(draw->conn, dri3_fake_front_buffer(draw));
dri3_fence_await(draw->conn, draw, dri3_fake_front_buffer(draw));
if (front) {
dri3_fence_trigger(draw->conn, front);
dri3_fence_await(draw->conn, draw, front);
}
}
void