On 11 February 2016 at 16:34, Derek Foreman <[email protected]> wrote: > Since commit d1314de293e9e4a63c35f094c3893aaaed8580b4 we ignore > damage passed to SwapBuffersWithDamage. > > Wayland 1.10 now has functionality that allows us to properly > process those damage rectangles, and a way to query if it's > available. > > Now we can use wl_surface.damage_buffer and interpret the incoming > damage as being in buffer co-ordinates. > > Signed-off-by: Derek Foreman <[email protected]> > --- > src/egl/drivers/dri2/platform_wayland.c | 32 +++++++++++++++++++++++++++++--- > 1 file changed, 29 insertions(+), 3 deletions(-) > > diff --git a/src/egl/drivers/dri2/platform_wayland.c > b/src/egl/drivers/dri2/platform_wayland.c > index c2438f7..b5a5b59 100644 > --- a/src/egl/drivers/dri2/platform_wayland.c > +++ b/src/egl/drivers/dri2/platform_wayland.c > @@ -653,6 +653,30 @@ create_wl_buffer(struct dri2_egl_surface *dri2_surf) > &wl_buffer_listener, dri2_surf); > } > > +static EGLBoolean > +try_damage_buffer(struct dri2_egl_surface *dri2_surf, > + const EGLint *rects, > + EGLint n_rects) > +{ > +#ifdef WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION > + int i; > + > + if (wl_proxy_get_version((struct wl_proxy *) dri2_surf->wl_win->surface) > + < WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION) > + return EGL_FALSE; > + > + for (i = 0; i < n_rects; i++) { > + const int *rect = &rects[i * 4]; > + > + wl_surface_damage_buffer(dri2_surf->wl_win->surface, > + rect[0], > + dri2_surf->base.Height - rect[1] - rect[3], > + rect[2], rect[3]); > + } > + return EGL_TRUE; > +#endif
I'm slightly worried about keeping this compile time. For example if we compile against old wayland, and then run against a capable one... this code won't exist thus will never get executed. Thus leading to a handful of "wtf" moments. I would just ensure it's defined at the top. #ifndef WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION #define WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION foo #endif Cheers, Emil _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
