[Mesa-dev] [Mesa-stable] [PATCH] wayland/egl: Resize EGL surface on update buffer for swrast

Juan A. Suarez Romero jasuarez at igalia.com
Tue Nov 6 13:00:42 UTC 2018


On Tue, 2018-11-06 at 09:53 +0100, Olivier Fourdan wrote:
> Hi
> 
> On Thu, Oct 25, 2018 at 5:51 PM Juan A. Suarez Romero
> <jasuarez at igalia.com> wrote:
> > On Thu, 2018-10-25 at 14:48 +0200, Olivier Fourdan wrote:
> > > 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
> > > ---
> > 
> > I've been checking why this happened. Turns out that in the original patch, we
> > update the size in the resize_callback(), so we need to do the changes in
> > update_buffers() accordingly.
> > 
> > But turns out that with swrast we are not invoking resize_callback(), so we need
> > to keep the old code in swrast_update_buffers().
> 
> Yeap, that's what I tried to explain in the commit message.
> 
> > Thanks for finding this.
> > 
> > Reviewed-by: Juan A. Suarez <jasuarez at igalia.com>
> 
> Thanks Juan!
> 
> Could someone with commit access push that for me? Would be great to
> have it fixed in the stable and forthcoming 18.3 branches as well.
> 

Pushed! 

	J.A.

> > >  Resending because I got the "mesa-dev" address wrong! And a reply to the
> > >  previous email won't fly with patchwork... Sorry!
> > > 
> > >  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 03a3e0993b..69a51e64fd 100644
> > > --- a/src/egl/drivers/dri2/platform_wayland.c
> > > +++ b/src/egl/drivers/dri2/platform_wayland.c
> > > @@ -1652,8 +1652,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);
> > > 
> 
> Cheers,
> Olivier
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-stable



More information about the mesa-dev mailing list