v2: fix style and wrong major version comparison. v3: fix version check in context creation. --- src/gallium/state_trackers/egl/common/egl_g3d.c | 1 + src/gallium/state_trackers/egl/common/egl_g3d_api.c | 12 ++++++++++++ 2 files changed, 13 insertions(+)
diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c b/src/gallium/state_trackers/egl/common/egl_g3d.c index d3f5e92..22b5e4a 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d.c @@ -584,6 +584,7 @@ egl_g3d_initialize(_EGLDriver *drv, _EGLDisplay *dpy) dpy->Extensions.KHR_fence_sync = EGL_TRUE; dpy->Extensions.KHR_surfaceless_context = EGL_TRUE; + dpy->Extensions.KHR_create_context = EGL_TRUE; if (dpy->Platform == _EGL_PLATFORM_DRM) { dpy->Extensions.MESA_drm_display = EGL_TRUE; diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c b/src/gallium/state_trackers/egl/common/egl_g3d_api.c index b19d899..5e900cc 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c @@ -72,6 +72,11 @@ egl_g3d_choose_st(_EGLDriver *drv, _EGLContext *ctx, break; case EGL_OPENGL_API: api = ST_API_OPENGL; + if (((ctx->ClientMajorVersion >= 4) || + (ctx->ClientMajorVersion == 3 && ctx->ClientMinorVersion >= 2)) && + ctx->Profile == EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR) { + *profile = ST_PROFILE_OPENGL_CORE; + } break; default: _eglLog(_EGL_WARNING, "unknown client API 0x%04x", ctx->ClientAPI); @@ -166,6 +171,12 @@ egl_g3d_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, if (gconf) stattribs.visual = gconf->stvis; + if (gctx->base.Flags & EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR) + stattribs.flags = ST_CONTEXT_FLAG_DEBUG; + + stattribs.major = gctx->base.ClientMajorVersion; + stattribs.minor = gctx->base.ClientMinorVersion; + gctx->stapi = egl_g3d_choose_st(drv, &gctx->base, &stattribs.profile); if (!gctx->stapi) { FREE(gctx); @@ -175,6 +186,7 @@ egl_g3d_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, gctx->stctxi = gctx->stapi->create_context(gctx->stapi, gdpy->smapi, &stattribs, &ctx_err, (gshare) ? gshare->stctxi : NULL); if (!gctx->stctxi) { + _eglError(EGL_BAD_MATCH, "eglCreateContext"); FREE(gctx); return NULL; } -- 2.0.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev