mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
egl/x11: Send invalidate to driver on copy_region path in swap_buffer
Similar to swap_available path send invalidate to the driver because
egl/X11 is not watching for for server's invalidate events. The
dri2_copy_region path is trigerred when server supports DRI2 version
minor 1.
Tested with piglit egl tests for regression.
V2: Move invalidate from dri2_copy_region to swap_buffer common.
Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Deepak Rawat <drawat@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Acked-by: Michel Dänzer <michel.daenzer@amd.com>
(cherry picked from commit 9a21c96126)
This commit is contained in:
parent
0d15a443fa
commit
cd1435aa9d
1 changed files with 13 additions and 10 deletions
|
|
@ -864,19 +864,22 @@ dri2_x11_swap_buffers_msc(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw,
|
|||
if (draw->Type == EGL_PIXMAP_BIT || draw->Type == EGL_PBUFFER_BIT)
|
||||
return 0;
|
||||
|
||||
if (draw->SwapBehavior == EGL_BUFFER_PRESERVED || !dri2_dpy->swap_available)
|
||||
return dri2_copy_region(drv, disp, draw, dri2_surf->region) ? 0 : -1;
|
||||
if (draw->SwapBehavior == EGL_BUFFER_PRESERVED || !dri2_dpy->swap_available) {
|
||||
swap_count = dri2_copy_region(drv, disp, draw, dri2_surf->region) ? 0 : -1;
|
||||
} else {
|
||||
dri2_flush_drawable_for_swapbuffers(disp, draw);
|
||||
|
||||
dri2_flush_drawable_for_swapbuffers(disp, draw);
|
||||
cookie = xcb_dri2_swap_buffers_unchecked(dri2_dpy->conn,
|
||||
dri2_surf->drawable, msc_hi,
|
||||
msc_lo, divisor_hi, divisor_lo,
|
||||
remainder_hi, remainder_lo);
|
||||
|
||||
cookie = xcb_dri2_swap_buffers_unchecked(dri2_dpy->conn, dri2_surf->drawable,
|
||||
msc_hi, msc_lo, divisor_hi, divisor_lo, remainder_hi, remainder_lo);
|
||||
reply = xcb_dri2_swap_buffers_reply(dri2_dpy->conn, cookie, NULL);
|
||||
|
||||
reply = xcb_dri2_swap_buffers_reply(dri2_dpy->conn, cookie, NULL);
|
||||
|
||||
if (reply) {
|
||||
swap_count = (((int64_t)reply->swap_hi) << 32) | reply->swap_lo;
|
||||
free(reply);
|
||||
if (reply) {
|
||||
swap_count = (((int64_t)reply->swap_hi) << 32) | reply->swap_lo;
|
||||
free(reply);
|
||||
}
|
||||
}
|
||||
|
||||
/* Since we aren't watching for the server's invalidate events like we're
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue