On 04/09/17 09:27 PM, Thomas Hellstrom wrote: > The copySubBuffer functionality always attempted a server side blit from > back to fake front if a fake front was present, and we weren't displaying > on a remote GPU. > > Now that we always have local blit capability on modern drivers, first > attempt a local blit, and only if that fails, try the server blit. > > Signed-off-by: Thomas Hellstrom <thellst...@vmware.com> > --- > src/loader/loader_dri3_helper.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c > index e3120f5..c0a6e0d 100644 > --- a/src/loader/loader_dri3_helper.c > +++ b/src/loader/loader_dri3_helper.c > @@ -635,14 +635,6 @@ loader_dri3_copy_sub_buffer(struct loader_dri3_drawable > *draw, > back->image, > 0, 0, back->width, back->height, > 0, 0, __BLIT_FLAG_FLUSH); > - /* We use blit_image to update our fake front, > - */ > - if (draw->have_fake_front) > - (void) loader_dri3_blit_image(draw, > - dri3_fake_front_buffer(draw)->image, > - back->image, > - x, y, width, height, > - x, y, __BLIT_FLAG_FLUSH); > } > > loader_dri3_swapbuffer_barrier(draw); > @@ -656,7 +648,13 @@ loader_dri3_copy_sub_buffer(struct loader_dri3_drawable > *draw, > /* Refresh the fake front (if present) after we just damaged the real > * front. > */ > - if (draw->have_fake_front && !draw->is_different_gpu) { > + if (draw->have_fake_front && > + !loader_dri3_blit_image(draw, > + dri3_fake_front_buffer(draw)->image, > + back->image, > + x, y, width, height, > + x, y, __BLIT_FLAG_FLUSH) && > + !draw->is_different_gpu) { > dri3_fence_reset(draw->conn, dri3_fake_front_buffer(draw)); > dri3_copy_area(draw->conn, > back->pixmap, >
Reviewed-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