https://bugs.freedesktop.org/show_bug.cgi?id=70250
--- Comment #2 from Kristian Høgsberg <[email protected]> --- This is something that we discussed on the list when we talked about buffer transforms (scaling or rotation). The problem is that EGL sends damage requests and is supposed to send in the surface coordinate system. EGL only knows the buffer coordinate system and doesn't know if there is a buffer transform and sends damage in buffer space. This means that for 90 or 270 rotated buffers, we swap width and height in the damage requests. One workaround is to just damage a really big area so that we're sure to damage the entire surface: diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/plat index c0de16b..3d39113 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -550,6 +550,9 @@ dri2_swap_buffers_with_damage(_EGLDriver *drv, if (n_rects == 0) { wl_surface_damage(dri2_surf->wl_win->surface, 0, 0, dri2_surf->base.Width, dri2_surf->base.Height); + + wl_surface_damage(dri2_surf->wl_win->surface, 0, 0, 2 << 16, 2 << 16); + } else { for (i = 0; i < n_rects; i++) { const int *rect = &rects[i * 4]; For EGL_swap_buffers_with_damage, we push the problem higher up the stack where the caller of eglSwapBuffersWithDamage should be able to pass in damage coordinates in surface space. -- You are receiving this mail because: You are the assignee for the bug.
_______________________________________________ Wayland-bugs mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-bugs
