[waffle] [PATCH 3/7] egl: Allow pbuffers to back wegl_surface

Chad Versace chadversary at chromium.org
Sat Oct 29 17:32:52 UTC 2016


On Wed 19 Oct 2016, Emil Velikov wrote:
> On 18 October 2016 at 18:33, Chad Versace <chadversary at chromium.org> wrote:
> > Add function wegl_pbuffer_init(), which initializes a struct
> > wegl_surface with eglCreatePbufferSurface().
> >
> > Not yet used, but will be used later by the new surfaceless platform.
> >
> > Cc: Gurchetan Singh <gurchetansingh at chromium.org>
> > Cc: Haixia Shi <hshi at chromium.org>
> > ---
> >  src/waffle/egl/wegl_platform.c |  1 +
> >  src/waffle/egl/wegl_platform.h |  2 ++
> >  src/waffle/egl/wegl_surface.c  | 42 ++++++++++++++++++++++++++++++++++++++++++
> >  src/waffle/egl/wegl_surface.h  |  5 +++++
> >  4 files changed, 50 insertions(+)
> >
> > diff --git a/src/waffle/egl/wegl_platform.c b/src/waffle/egl/wegl_platform.c
> > index 71eb29e..331cc89 100644
> > --- a/src/waffle/egl/wegl_platform.c
> > +++ b/src/waffle/egl/wegl_platform.c
> > @@ -139,6 +139,7 @@ wegl_platform_init(struct wegl_platform *self, EGLenum egl_platform)
> >      // window
> >      RETRIEVE_EGL_SYMBOL(eglGetConfigAttrib);
> >      RETRIEVE_EGL_SYMBOL(eglCreateWindowSurface);
> > +    RETRIEVE_EGL_SYMBOL(eglCreatePbufferSurface);
> >      RETRIEVE_EGL_SYMBOL(eglDestroySurface);
> >      RETRIEVE_EGL_SYMBOL(eglSwapBuffers);
> >
> > diff --git a/src/waffle/egl/wegl_platform.h b/src/waffle/egl/wegl_platform.h
> > index d6788eb..a5092a5 100644
> > --- a/src/waffle/egl/wegl_platform.h
> > +++ b/src/waffle/egl/wegl_platform.h
> > @@ -89,6 +89,8 @@ struct wegl_platform {
> >      EGLSurface (*eglCreateWindowSurface)(EGLDisplay dpy, EGLConfig config,
> >                                           EGLNativeWindowType win,
> >                                           const EGLint *attrib_list);
> > +    EGLSurface (*eglCreatePbufferSurface)(EGLDisplay dpy, EGLConfig config,
> > +                                          const EGLint *attrib_list);
> >      EGLBoolean (*eglDestroySurface)(EGLDisplay dpy, EGLSurface surface);
> >      EGLBoolean (*eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface);
> >  };
> > diff --git a/src/waffle/egl/wegl_surface.c b/src/waffle/egl/wegl_surface.c
> > index ccd0799..0bd0857 100644
> > --- a/src/waffle/egl/wegl_surface.c
> > +++ b/src/waffle/egl/wegl_surface.c
> > @@ -74,6 +74,48 @@ fail:
> >  }
> >
> >  bool
> > +wegl_pbuffer_init(struct wegl_surface *surf,
> > +                  struct wcore_config *wc_config,
> > +                  int32_t width, int32_t height)
> > +{
> > +    struct wegl_config *config = wegl_config(wc_config);
> > +    struct wegl_display *dpy = wegl_display(wc_config->display);
> > +    struct wegl_platform *plat = wegl_platform(dpy->wcore.platform);
> > +    bool ok;
> > +
> > +    ok = wcore_window_init(&surf->wcore, wc_config);
> > +    if (!ok)
> > +        goto fail;
> > +

> This hunk (and most of the series really) will clash with a fair bit
> of cleanups I have on the list.
> In this particular case - the wcore_window_init API has 'lost' it's
> [always return true] return type.
> 
> Re-basing either way will be fun, so let's get the new platform in
> first and then consider the cleanups.

> Please ?

Yes. I'll rebase your cleanups after the new platform lands.


More information about the waffle mailing list