--- src/egl/drivers/dri2/platform_wayland.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 3c6bdd9..6f8f3b0 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -449,6 +449,10 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw) &wl_buffer_listener, dri2_surf); } + for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) + if (dri2_surf->color_buffers[i].dri_buffer) + dri2_surf->color_buffers[i].age++; + dri2_surf->back->locked = 1; dri2_surf->current = dri2_surf->back; dri2_surf->current->age = 1; @@ -481,6 +485,21 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw) return EGL_TRUE; } +static EGLint +dri2_query_buffer_age(_EGLDriver *drv, + _EGLDisplay *disp, _EGLSurface *surface) +{ + struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surface); + __DRIbuffer buffer; + + if (get_back_bo(dri2_surf, &buffer) < 0) { + _eglError(EGL_BAD_ALLOC, "dri2_query_buffer_age"); + return 0; + } + + return dri2_surf->back->age; +} + static int dri2_wayland_authenticate(_EGLDisplay *disp, uint32_t id) { @@ -618,6 +637,7 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp) drv->API.DestroySurface = dri2_destroy_surface; drv->API.SwapBuffers = dri2_swap_buffers; drv->API.Terminate = dri2_terminate; + drv->API.QueryBufferAge = dri2_query_buffer_age; dri2_dpy = calloc(1, sizeof *dri2_dpy); if (!dri2_dpy) @@ -682,6 +702,7 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp) } disp->Extensions.WL_bind_wayland_display = EGL_TRUE; + disp->Extensions.EXT_buffer_age = EGL_TRUE; dri2_dpy->authenticate = dri2_wayland_authenticate; /* we're supporting EGL 1.4 */ -- 1.7.10.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev