On 2018-04-27 01:09 AM, Deepak Rawat wrote: > 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 trigered 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-sta...@lists.freedesktop.org> > Signed-off-by: Deepak Rawat <dra...@vmware.com> > Reviewed-by: Thomas Hellstrom <thellst...@vmware.com> > --- > src/egl/drivers/dri2/platform_x11.c | 23 +++++++++++++---------- > 1 file changed, 13 insertions(+), 10 deletions(-) > > diff --git a/src/egl/drivers/dri2/platform_x11.c > b/src/egl/drivers/dri2/platform_x11.c > index 6c287b4d06..60330b33df 100644 > --- a/src/egl/drivers/dri2/platform_x11.c > +++ b/src/egl/drivers/dri2/platform_x11.c > @@ -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; > - > - dri2_flush_drawable_for_swapbuffers(disp, draw); > + 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); > > - 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 >
Acked-by: Michel Dänzer <michel.daen...@amd.com> -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev