From: Axel Davy Date: Tue, 3 Dec 2013 16:04:10 +0000 (+0100) Subject: Enable throttling in SwapBuffers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=afcce46fd505da51883000249ef29dd69f1d7791;p=mesa.git Enable throttling in SwapBuffers flush_with_flags, when available, allows the driver to throttle. Using this suppress input lag issues that can be observed in heavy rendering situations on non-intel cards. Signed-off-by: Axel Davy Cc: "10.0" mesa-stable@lists.freedesktop.org --- diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 8f462c02c76..b1ac4b779b1 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -557,6 +557,8 @@ dri2_swap_buffers_with_damage(_EGLDriver *drv, { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw); + struct dri2_egl_context *dri2_ctx; + _EGLContext *ctx; int i, ret = 0; while (dri2_surf->frame_callback && ret != -1) @@ -610,7 +612,17 @@ dri2_swap_buffers_with_damage(_EGLDriver *drv, } } - (*dri2_dpy->flush->flush)(dri2_surf->dri_drawable); + if (dri2_dpy->flush->base.version >= 4) { + ctx = _eglGetCurrentContext(); + dri2_ctx = dri2_egl_context(ctx); + (*dri2_dpy->flush->flush_with_flags)(dri2_ctx->dri_context, + dri2_surf->dri_drawable, + __DRI2_FLUSH_DRAWABLE, + __DRI2_THROTTLE_SWAPBUFFER); + } else { + (*dri2_dpy->flush->flush)(dri2_surf->dri_drawable); + } + (*dri2_dpy->flush->invalidate)(dri2_surf->dri_drawable); wl_surface_commit(dri2_surf->wl_win->surface);