[waffle] [PATCH 3/7] egl: Allow pbuffers to back wegl_surface
Emil Velikov
emil.l.velikov at gmail.com
Tue Oct 18 23:18:20 UTC 2016
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 ?
Emil
More information about the waffle
mailing list