[Mesa-dev] [PATCH] egl: fix OpenGL 3.1 context creation
Ian Romanick
idr at freedesktop.org
Fri Aug 2 19:39:50 UTC 2019
On 8/1/19 6:38 PM, Timothy Arceri wrote:
> From the EGL_KHR_create_context spec:
>
> "* If OpenGL 3.1 is requested, the context returned may implement
> any of the following versions:
>
> * Version 3.1. The GL_ARB_compatibility extension may or may
> not be implemented, as determined by the implementation.
> * The core profile of version 3.2 or greater."
>
> Fixes CTS tests:
>
> dEQP-EGL.functional.create_context_ext.gl_31.rgb888_depth_stencil
> dEQP-EGL.functional.create_context_ext.robust_gl_31.rgb888_depth_stencil
> dEQP-EGL.functional.create_context_ext.gl_31.rgb888_depth_no_stencil
> dEQP-EGL.functional.create_context_ext.robust_gl_31.rgb888_depth_no_stencil
> dEQP-EGL.functional.create_context_ext.gl_31.rgba8888_depth_no_stencil
> dEQP-EGL.functional.create_context_ext.gl_31.rgb888_no_depth_no_stencil
> dEQP-EGL.functional.create_context_ext.robust_gl_31.rgba8888_depth_no_stencil
> dEQP-EGL.functional.create_context_ext.robust_gl_31.rgb888_no_depth_no_stencil
> dEQP-EGL.functional.create_context_ext.gl_31.rgba8888_no_depth_no_stencil
> dEQP-EGL.functional.create_context_ext.robust_gl_31.rgba8888_no_depth_no_stencil
> dEQP-EGL.functional.create_context_ext.gl_31.rgba8888_depth_stencil
> dEQP-EGL.functional.create_context_ext.robust_gl_31.rgba8888_depth_stencil
> ---
> src/egl/drivers/dri2/egl_dri2.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
> index c712c106b06..918d61a1e9b 100644
> --- a/src/egl/drivers/dri2/egl_dri2.c
> +++ b/src/egl/drivers/dri2/egl_dri2.c
> @@ -1245,6 +1245,9 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf,
> && dri2_ctx->base.ClientMinorVersion >= 2))
> && dri2_ctx->base.Profile == EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR)
> api = __DRI_API_OPENGL_CORE;
> + else if (dri2_ctx->base.ClientMajorVersion == 3 &&
> + dri2_ctx->base.ClientMinorVersion == 1)
> + api = __DRI_API_OPENGL_CORE;
If my recollection of the way these are handled in the driver is
correct, I think this will prevent us from ever exposing
GL_ARB_compatibility when the context is created with EGL. I /think/
the API choice should be further conditioned by
dri_screen->max_gl_compat_version. Something like
else if (dri2_ctx->base.ClientMajorVersion == 3 &&
dri2_ctx->base.ClientMinorVersion == 1)
api = dri2_dpy->dri_screen->max_gl_compat_version >= 31
? __DRI_API_OPENGL : __DRI_API_OPENGL_CORE;
> else
> api = __DRI_API_OPENGL;
> break;
>
More information about the mesa-dev
mailing list