Hi Bas, On 15 April 2016 at 22:04, Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> wrote: > EGL 1.5 also supports the EGL_CONTEXT_OPENGL_ROBUST_ACCESS > attribute without any extensions for both ES and non-ES. > > Signed-off-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> > --- > src/waffle/egl/wegl_config.c | 9 ++++++--- > src/waffle/egl/wegl_context.c | 9 +++++++-- > src/waffle/egl/wegl_display.c | 3 +-- > src/waffle/egl/wegl_display.h | 2 ++ > 4 files changed, 16 insertions(+), 7 deletions(-) > > diff --git a/src/waffle/egl/wegl_config.c b/src/waffle/egl/wegl_config.c > index 1c3f416..08e06fb 100644 > --- a/src/waffle/egl/wegl_config.c > +++ b/src/waffle/egl/wegl_config.c > @@ -56,17 +56,20 @@ check_context_attrs(struct wegl_display *dpy, > } > > if (attrs->context_robust && !dpy->EXT_create_context_robustness && > + dpy->major_version == 1 && dpy->minor_version < 5 && > attrs->context_api != WAFFLE_CONTEXT_OPENGL) { > wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM, > - "EGL_EXT_create_context_robustness is required in order > to " > - "request a robust access context for OpenGL ES"); > + "EGL_EXT_create_context_robustness or EGL 1.5 is " > + "required in order to request a robust access context " > + "for OpenGL ES"); > return false; > } > > if (attrs->context_robust && !dpy->KHR_create_context && > + dpy->major_version == 1 && dpy->minor_version < 5 && > attrs->context_api == WAFFLE_CONTEXT_OPENGL) { > wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM, > - "EGL_KHR_create_context is required in order to " > + "EGL_KHR_create_context or EGL 1.5 is required in order > to " > "request a robust access context for OpenGL"); > return false; > } > diff --git a/src/waffle/egl/wegl_context.c b/src/waffle/egl/wegl_context.c > index 67cbc04..4b208fa 100644 > --- a/src/waffle/egl/wegl_context.c > +++ b/src/waffle/egl/wegl_context.c > @@ -96,8 +96,13 @@ create_real_context(struct wegl_config *config, > } > > if (attrs->context_robust) { > - assert(dpy->KHR_create_context); > - context_flags |= EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR; > + if (dpy->major_version > 1 || dpy->minor_version >= 5) { > + attrib_list[i++] = EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT; We want EGL_CONTEXT_OPENGL_ROBUST_ACCESS (note missing _EXT) here. For whatever reason the two differ 0x31B2 vs 0x30BF (according to the includes in mesa).
> + attrib_list[i++] = EGL_TRUE; > + } else { > + assert(dpy->KHR_create_context); > + context_flags |= > EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR; > + } > } > > if (wcore_config_attrs_version_ge(attrs, 32)) { > diff --git a/src/waffle/egl/wegl_display.c b/src/waffle/egl/wegl_display.c > index 16af142..a5e3429 100644 > --- a/src/waffle/egl/wegl_display.c > +++ b/src/waffle/egl/wegl_display.c > @@ -64,7 +64,6 @@ wegl_display_init(struct wegl_display *dpy, > { > struct wegl_platform *plat = wegl_platform(wc_plat); > bool ok; > - EGLint major, minor; > > ok = wcore_display_init(&dpy->wcore, wc_plat); > if (!ok) > @@ -76,7 +75,7 @@ wegl_display_init(struct wegl_display *dpy, > goto fail; > } > > - ok = plat->eglInitialize(dpy->egl, &major, &minor); > + ok = plat->eglInitialize(dpy->egl, &dpy->major_version, > &dpy->minor_version); > if (!ok) { > wegl_emit_error(plat, "eglInitialize"); > goto fail; > diff --git a/src/waffle/egl/wegl_display.h b/src/waffle/egl/wegl_display.h > index b82a2ec..0d03ec8 100644 > --- a/src/waffle/egl/wegl_display.h > +++ b/src/waffle/egl/wegl_display.h > @@ -39,6 +39,8 @@ struct wegl_display { > EGLDisplay egl; > bool EXT_create_context_robustness; > bool KHR_create_context; > + EGLint major_version; > + EGLint minor_version; While working on a similar version specific EGL bits, I've added a single boolean as it seemed easer/shorter to check (yes I'm that lazy). Just throwing the idea out there, unless others insist you don't have to do any of that. With the s/_EXT//g issue above Reviewed-by: Emil Velikov <emil.l.veli...@gmail.com> -Emil _______________________________________________ waffle mailing list waffle@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/waffle