From: Chad Versace <c...@kiwitree.net> wegl_context_create() ignored wcore_config_attrs::context_profile and never set EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR. The default value of EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR. Therefore, for context versions >= 3.2, wegl_context_create() always created a core context.
This patch fixes wegl_context_create() to inspect wcore_config_attrs::context_profile and set EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR accordingly. (Whoo! Waffle has an issue tracker now, and the 'Fixes' tag below will automatically close the issue when patch hits master!) Fixes: https://github.com/waffle-gl/waffle/issues/1 Reported-by: Jordan Justen <jordan.l.jus...@intel.com> Signed-off-by: Chad Versace <chad.vers...@linux.intel.com> --- Jordan, this patch is untested because I have access to no Linux computer this weekend. When you validate the patch, I'll commit it. The patch lives on my personal branch issues/1/fix-egl-compat-profile [1], exact commit at https://github.com/chadversary/waffle/commit/ba6e561. [1] https://github.com/chadversary/waffle/tree/issues/1/fix-egl-compat-profile src/waffle/egl/wegl_context.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/waffle/egl/wegl_context.c b/src/waffle/egl/wegl_context.c index 50b31c6..e189ffd 100644 --- a/src/waffle/egl/wegl_context.c +++ b/src/waffle/egl/wegl_context.c @@ -70,6 +70,7 @@ create_real_context(struct wegl_config *config, int32_t waffle_context_api = attrs->context_api; EGLint attrib_list[64]; EGLint context_flags = 0; + EGLint profile_mask = 0; int i = 0; if (attrs->context_debug) { @@ -118,6 +119,27 @@ create_real_context(struct wegl_config *config, return EGL_NO_CONTEXT; } + switch (attrs->context_profile) { + case WAFFLE_NONE: + profile_mask = 0; + break; + case WAFFLE_CONTEXT_CORE_PROFILE: + profile_mask = EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR; + break; + case WAFFLE_CONTEXT_COMPATIBILITY_PROFILE: + profile_mask = EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; + break; + default: + wcore_error_internal("attrs->context_profile has bad value %#x", + attrs->context_profile); + return EGL_NO_CONTEXT; + } + + if (profile_mask != 0) { + attrib_list[i++] = EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR; + attrib_list[i++] = profile_mask; + } + if (context_flags != 0) { attrib_list[i++] = EGL_CONTEXT_FLAGS_KHR; attrib_list[i++] = context_flags; -- 1.8.5.3 _______________________________________________ waffle mailing list waffle@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/waffle