[Mesa-dev] [PATCH] wayland/egl: initialize window surface size to window size

Juan A. Suarez Romero jasuarez at igalia.com
Fri Jun 1 08:12:03 UTC 2018


On Thu, 2018-05-31 at 16:57 +0100, Daniel Stone wrote:
> Hi Juan,
> Thanks for picking this up!
> 
> On 31 May 2018 at 16:44, Juan A. Suarez Romero <jasuarez at igalia.com> wrote:
> > @@ -255,6 +257,12 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
> >        goto cleanup_surf;
> >     }
> > 
> > +   dri2_surf->base.Width = window->width;
> > +   dri2_surf->base.Height = window->height;
> > +
> > +   window->attached_width = dri2_surf->base.Width;
> > +   window->attached_height = dri2_surf->base.Height;
> 
> We should definitely not initialise attached_{width,height} here,
> because no buffer has ever been attached.
> 
> > @@ -574,8 +582,8 @@ update_buffers(struct dri2_egl_surface *dri2_surf)
> >     struct dri2_egl_display *dri2_dpy =
> >        dri2_egl_display(dri2_surf->base.Resource.Display);
> > 
> > -   if (dri2_surf->base.Width != dri2_surf->wl_win->width ||
> > -       dri2_surf->base.Height != dri2_surf->wl_win->height) {
> > +   if (dri2_surf->wl_win->attached_width != dri2_surf->wl_win->width ||
> > +       dri2_surf->wl_win->attached_height != dri2_surf->wl_win->height) {
> > 
> >        dri2_wl_release_buffers(dri2_surf);
> > 
> > @@ -1629,8 +1637,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->width ||
> > -       dri2_surf->base.Height != dri2_surf->wl_win->height) {
> > +   if (dri2_surf->wl_win->attached_width != dri2_surf->wl_win->width ||
> > +       dri2_surf->wl_win->attached_height != dri2_surf->wl_win->height) {
> 
> Not initialising attached_{width,height} should not cause any problems
> with these checks. By definition there cannot have been any buffers
> allocated or attached between creation and the first draw call, so
> there are no old buffers to release.

Eric explained pretty well the reason to touch attached_{width,height};
otherwise dEQP-EGL.functional.resize.surface_size.* tests continue to fail.


	J.A.


> 
> So with that initialisation removed, this is (assuming dEQP still passes):
> Reviewed-by: Daniel Stone <daniels at collabora.com>
> 
> Cheers,
> Daniel
> 


More information about the mesa-dev mailing list