[Mesa-dev] [PATCH 08/10] egl/wayland: remove dri2_surf width/height double init.

Eric Engestrom eric at engestrom.ch
Tue Aug 29 17:43:17 UTC 2017


On 29 August 2017 17:33:57 BST, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> On 29 August 2017 at 15:40, Eric Engestrom <eric.engestrom at imgtec.com>
> wrote:
> > On Sunday, 2017-08-27 11:20:33 +0100, Emil Velikov wrote:
> >> From: Emil Velikov <emil.velikov at collabora.com>
> >>
> >> The dimensions are already set [to 0 or the value provided by the
> >> attributes list] by the _eglInitSurface() call further up.
> >>
> >> The values are updated, as the DRI driver calls the
> DRI2/IMAGE_LOADER'
> >> get_buffers, shortly before making use of the values.
> >>
> >> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
> >> ---
> >>  src/egl/drivers/dri2/platform_wayland.c | 3 ---
> >>  1 file changed, 3 deletions(-)
> >>
> >> diff --git a/src/egl/drivers/dri2/platform_wayland.c
> b/src/egl/drivers/dri2/platform_wayland.c
> >> index f9554fccde9..89e94e11f4f 100644
> >> --- a/src/egl/drivers/dri2/platform_wayland.c
> >> +++ b/src/egl/drivers/dri2/platform_wayland.c
> >> @@ -198,9 +198,6 @@ dri2_wl_create_window_surface(_EGLDriver *drv,
> _EGLDisplay *disp,
> >>     dri2_surf->wl_win->private = dri2_surf;
> >>     dri2_surf->wl_win->destroy_window_callback =
> destroy_window_callback;
> >>
> >> -   dri2_surf->base.Width =  -1;
> >> -   dri2_surf->base.Height = -1;
> >> -
> >
> > We actually have a local patch here that replaces this `-1`
> > initialisation with the dimensions of the wayland `window`:
> >
> > ----8<----
> > diff --git a/src/egl/drivers/dri2/platform_wayland.c
> b/src/egl/drivers/dri2/platform_wayland.c
> > index 85a11f4..7719407 100644
> > --- a/src/egl/drivers/dri2/platform_wayland.c
> > +++ b/src/egl/drivers/dri2/platform_wayland.c
> > @@ -183,8 +183,8 @@ dri2_wl_create_window_surface(_EGLDriver *drv,
> _EGLDisplay *disp,
> >     dri2_surf->wl_win->private = dri2_surf;
> >     dri2_surf->wl_win->destroy_window_callback =
> destroy_window_callback;
> >
> > -   dri2_surf->base.Width =  -1;
> > -   dri2_surf->base.Height = -1;
> > +   dri2_surf->base.Width  = window->width;
> > +   dri2_surf->base.Height = window->height;
> >
> >     config = dri2_get_dri_config(dri2_conf, EGL_WINDOW_BIT,
> >                                  dri2_surf->base.GLColorspace);
> > ---->8----
> >
> > This apparently fixes dEQP crashes caused by an assert:
> >         deRandom.hpp:93: Unknown function: Assertion `min <= max'
> failed.
> >
> > No dEQP test is mentioned on our patch, but I think this happened on
> > dEQP-EGL.functional.resize.surface_size.*
> >
> Having another look, we seems to be rather inconsistent when we set
> them - see below.
> At the same time, I doubt any !X11 dEQP resize tests work:
>  - iirc there's no wayland/drm/surfaceless support
>  - none of the three has a .query_surface hook
> 
> -Emil
> 
> X11/dri2
>  - create_*_surface, all but !pbuffer
>  - query_surface via xcb_get_geometry
> 
> X11/dri3:
>  - create_*_surface, all
>  - query_surface via xcb_get_geometry
> 
> drm
>  - create_*_surface, all (window only)
>  - query_surface - no hook
> 
> surfaceless
>  - create_*_surface, none (pbuffer only)
>  - query_surface  - no hook
> 
> wayland
>  - create_*_surface, none (window only)

>  - query_surface  - no hook

Oh, uh… I think this might also be in a local patch ^^
We have a bunch of patches like that, that I want to upstream, but
not enough bandwidth and too many high priority tasks lining up.
I'll try and have a look tomorrow for the query_surface hook.

Cheers,
  Eric


More information about the mesa-dev mailing list