<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - weston-terminal rendering corrupted with output transform 90 and 270"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=70250#c2">Comment # 2</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - weston-terminal rendering corrupted with output transform 90 and 270"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=70250">bug 70250</a>
              from <span class="vcard"><a class="email" href="mailto:krh@bitplanet.net" title="Kristian Høgsberg <krh@bitplanet.net>"> <span class="fn">Kristian Høgsberg</span></a>
</span></b>
        <pre>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.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>