Hi Juan,
Thanks for picking this up!

On 31 May 2018 at 16:44, Juan A. Suarez Romero <jasua...@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.

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

Cheers,
Daniel
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to