Mesa (master): wayland/egl: Resize EGL surface on update buffer for swrast

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 6 13:00:29 UTC 2018


Module: Mesa
Branch: master
Commit: 55af17ffed289bdcc1396829e461245644175ed4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=55af17ffed289bdcc1396829e461245644175ed4

Author: Olivier Fourdan <ofourdan at redhat.com>
Date:   Thu Oct 25 14:48:15 2018 +0200

wayland/egl: Resize EGL surface on update buffer for swrast

After commit a9fb331ea ("wayland/egl: update surface size on window
resize"), the surface size is updated as soon as the resize is done, and
`update_buffers()` would resize only if the surface size differs from
the attached size.

However, in the case of swrast, there is no resize callback and the
attached size is updated in `dri2_wl_swrast_commit_backbuffer()` prior
to the `swrast_update_buffers()` so the attached size is always up to
date when it reaches `swrast_update_buffers()` and the surface is never
resized.

This can be observed with "totem" using the GDK backend on Wayland (the
default) when running on software rendering:

  $ LIBGL_ALWAYS_SOFTWARE=true CLUTTER_BACKEND=gdk totem

Resizing the window would leave the EGL surface size unchanged.

To avoid the issue, partially revert the part of commit a9fb331ea for
`swrast_update_buffers()` and resize on the win size and not the
attached size.

Fixes: a9fb331ea - wayland/egl: update surface size on window resize
Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
CC: Daniel Stone <daniel at fooishbar.org>
CC: Juan A. Suarez Romero <jasuarez at igalia.com>
CC: mesa-stable at lists.freedesktop.org
Reviewed-by: Juan A. Suarez <jasuarez at igalia.com>

---

 src/egl/drivers/dri2/platform_wayland.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
index eb9f5e2b1e..dc16a69dfb 100644
--- a/src/egl/drivers/dri2/platform_wayland.c
+++ b/src/egl/drivers/dri2/platform_wayland.c
@@ -1661,8 +1661,8 @@ swrast_update_buffers(struct dri2_egl_surface *dri2_surf)
    if (dri2_surf->back)
       return 0;
 
-   if (dri2_surf->base.Width != dri2_surf->wl_win->attached_width ||
-       dri2_surf->base.Height != dri2_surf->wl_win->attached_height) {
+   if (dri2_surf->base.Width != dri2_surf->wl_win->width ||
+       dri2_surf->base.Height != dri2_surf->wl_win->height) {
 
       dri2_wl_release_buffers(dri2_surf);
 




More information about the mesa-commit mailing list