[Mesa-dev] [PATCH] egl: fix OpenGL 3.1 context creation

Ian Romanick idr at freedesktop.org
Fri Aug 2 19:44:35 UTC 2019


On 8/2/19 12:39 PM, Ian Romanick wrote:
> 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

It looks like dri2_convert_glx_attribs (src/glx/dri_common.c) has the
old behavior too... which makes me wonder how creating an OpenGL 3.1
context has ever worked.

Either way, EGL and GLX should behave the same for this kind of thing.

> 
>       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;
>>
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 



More information about the mesa-dev mailing list