On Mon, Jan 14, 2013 at 03:50:22PM +0200, Ander Conselvan de Oliveira wrote: > On 01/09/2013 04:45 PM, Kristian Høgsberg wrote: > >--- > > src/egl/drivers/dri2/platform_wayland.c | 25 ++++++++++++++++++++++++- > > 1 file changed, 24 insertions(+), 1 deletion(-) > > > >diff --git a/src/egl/drivers/dri2/platform_wayland.c > >b/src/egl/drivers/dri2/platform_wayland.c > >index 5b5c849..e9a66af 100644 > >--- a/src/egl/drivers/dri2/platform_wayland.c > >+++ b/src/egl/drivers/dri2/platform_wayland.c > >@@ -286,6 +286,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf, > >__DRIbuffer *buffer) > > __DRI_BUFFER_BACK_LEFT, 32, > > dri2_surf->base.Width, > > dri2_surf->base.Height); > >+ dri2_surf->back->age = 0; > > } > > if (dri2_surf->back->dri_buffer == NULL) > > return -1; > >@@ -445,7 +446,7 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, > >_EGLSurface *draw) > > { > > struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); > > struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw); > >- int ret = 0; > >+ int i, ret = 0; > > > > while (dri2_surf->frame_callback && ret != -1) > > ret = wl_display_dispatch_queue(dri2_dpy->wl_dpy, > > dri2_dpy->wl_queue); > >@@ -458,6 +459,11 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, > >_EGLSurface *draw) > > wl_proxy_set_queue((struct wl_proxy *) dri2_surf->frame_callback, > > dri2_dpy->wl_queue); > > > >+ for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) > >+ if (dri2_surf->color_buffers[i].age > 0) > >+ dri2_surf->color_buffers[i].age++; > >+ > >+ dri2_surf->back->age = 1; > > dri2_surf->current = dri2_surf->back; > > dri2_surf->back = NULL; > > > >@@ -496,6 +502,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) > > { > >@@ -633,6 +654,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) > >@@ -697,6 +719,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 */ > > > > > Reviewed-by: Ander Conselvan de Oliveira <conselv...@gmail.com>
Thanks Ander, both patches now committed. Kristian _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev