[Mesa-dev] [PATCH v2] glx: update to updated version of EXT_create_context_es2_profile
Ilia Mirkin
imirkin at alum.mit.edu
Sun Jan 31 13:58:29 PST 2016
ping? I haven't heard anything other than a suggestion that GLES2 and
GLES3 should be merged (which is something that ought to be done
separately from this change)...
On Fri, Jan 22, 2016 at 1:46 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Thu, Jan 21, 2016 at 11:58 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> The EXT spec has been updated to:
>> - logically combine the es2_profile and es_profile exts
>> - allow any legal version to be requested
>>
>> dEQP tests request a specific ES version when using GLX, so this allows
>> dEQP upstream to run against GLX with the appropriate X server patch
>> (which had similar disabling logic).
>>
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> Reviewed-by: Matt Turner <mattst88 at gmail.com> (v1)
>>
>> v1 -> v2:
>> - distinguish between DRI_API_GLES{,2,3}
>> - add GLX_EXT_create_context_es_profile client-side support
>> ---
>> src/glx/dri2_glx.c | 11 ++++++++---
>> src/glx/dri3_glx.c | 7 ++++++-
>> src/glx/dri_common.c | 28 ++++++++++++----------------
>> src/glx/drisw_glx.c | 4 +++-
>> src/glx/glxextensions.c | 1 +
>> src/glx/glxextensions.h | 1 +
>> 6 files changed, 31 insertions(+), 21 deletions(-)
>>
>> diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
>> index 651915a..97bf49c 100644
>> --- a/src/glx/dri2_glx.c
>> +++ b/src/glx/dri2_glx.c
>> @@ -1102,9 +1102,14 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv,
>> __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
>> __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
>>
>> - if ((mask & (1 << __DRI_API_GLES2)) != 0)
>> - __glXEnableDirectExtension(&psc->base,
>> - "GLX_EXT_create_context_es2_profile");
>> + if ((mask & (1 << (__DRI_API_GLES |
>> + __DRI_API_GLES2 |
>> + __DRI_API_GLES3))) != 0) {
>
> Of course both here and below, this should be
>
> (1 << __DRI_API_GLES ) |
> (1 << __DRI_API_GLES2) |
> (1 << __DRI_API_GLES3)
>
> oops :)
>
>> + __glXEnableDirectExtension(&psc->base,
>> + "GLX_EXT_create_context_es_profile");
>> + __glXEnableDirectExtension(&psc->base,
>> + "GLX_EXT_create_context_es2_profile");
>> + }
>> }
>>
>> for (i = 0; extensions[i]; i++) {
>> diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
>> index 8bdbb9c..9952e7e 100644
>> --- a/src/glx/dri3_glx.c
>> +++ b/src/glx/dri3_glx.c
>> @@ -665,9 +665,14 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv,
>> __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
>> __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
>>
>> - if ((mask & (1 << __DRI_API_GLES2)) != 0)
>> + if ((mask & (1 << (__DRI_API_GLES |
>> + __DRI_API_GLES2 |
>> + __DRI_API_GLES3))) != 0) {
>> + __glXEnableDirectExtension(&psc->base,
>> + "GLX_EXT_create_context_es_profile");
>> __glXEnableDirectExtension(&psc->base,
>> "GLX_EXT_create_context_es2_profile");
>> + }
>>
>> for (i = 0; extensions[i]; i++) {
>> /* when on a different gpu than the server, the server pixmaps
>> diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c
>> index 8a56385..6728d38 100644
>> --- a/src/glx/dri_common.c
>> +++ b/src/glx/dri_common.c
>> @@ -547,9 +547,18 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
>> case GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB:
>> *api = __DRI_API_OPENGL;
>> break;
>> - case GLX_CONTEXT_ES2_PROFILE_BIT_EXT:
>> - *api = __DRI_API_GLES2;
>> - break;
>> + case GLX_CONTEXT_ES_PROFILE_BIT_EXT:
>> + if (*major_ver >= 3)
>> + *api = __DRI_API_GLES3;
>> + else if (*major_ver == 2 && *minor_ver == 0)
>> + *api = __DRI_API_GLES2;
>> + else if (*major_ver == 1 && *minor_ver < 2)
>> + *api = __DRI_API_GLES;
>> + else {
>> + *error = __DRI_CTX_ERROR_BAD_API;
>> + return false;
>> + }
>> + break;
>> default:
>> *error = __DRI_CTX_ERROR_BAD_API;
>> return false;
>> @@ -580,19 +589,6 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
>> return false;
>> }
>>
>> - /* The GLX_EXT_create_context_es2_profile spec says:
>> - *
>> - * "... If the version requested is 2.0, and the
>> - * GLX_CONTEXT_ES2_PROFILE_BIT_EXT bit is set in the
>> - * GLX_CONTEXT_PROFILE_MASK_ARB attribute (see below), then the context
>> - * returned will implement OpenGL ES 2.0. This is the only way in which
>> - * an implementation may request an OpenGL ES 2.0 context."
>> - */
>> - if (*api == __DRI_API_GLES2 && (*major_ver != 2 || *minor_ver != 0)) {
>> - *error = __DRI_CTX_ERROR_BAD_API;
>> - return false;
>> - }
>> -
>> *error = __DRI_CTX_ERROR_SUCCESS;
>> return true;
>> }
>> diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c
>> index 76cc321..241ac7f 100644
>> --- a/src/glx/drisw_glx.c
>> +++ b/src/glx/drisw_glx.c
>> @@ -623,9 +623,11 @@ driswBindExtensions(struct drisw_screen *psc, const __DRIextension **extensions)
>> __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
>> __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
>>
>> - /* DRISW version >= 2 implies support for OpenGL ES 2.0.
>> + /* DRISW version >= 2 implies support for OpenGL ES.
>> */
>> __glXEnableDirectExtension(&psc->base,
>> + "GLX_EXT_create_context_es_profile");
>> + __glXEnableDirectExtension(&psc->base,
>> "GLX_EXT_create_context_es2_profile");
>> }
>>
>> diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c
>> index 3b29aef..22b078c 100644
>> --- a/src/glx/glxextensions.c
>> +++ b/src/glx/glxextensions.c
>> @@ -146,6 +146,7 @@ static const struct extension_info known_glx_extensions[] = {
>> { GLX(EXT_fbconfig_packed_float), VER(0,0), Y, Y, N, N },
>> { GLX(EXT_framebuffer_sRGB), VER(0,0), Y, Y, N, N },
>> { GLX(EXT_create_context_es2_profile), VER(0,0), Y, N, N, N },
>> + { GLX(EXT_create_context_es_profile), VER(0,0), Y, N, N, N },
>> { GLX(MESA_copy_sub_buffer), VER(0,0), Y, N, N, N },
>> { GLX(MESA_multithread_makecurrent),VER(0,0), Y, N, Y, N },
>> { GLX(MESA_query_renderer), VER(0,0), Y, N, N, Y },
>> diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h
>> index 3a9bc82..906b3fc 100644
>> --- a/src/glx/glxextensions.h
>> +++ b/src/glx/glxextensions.h
>> @@ -45,6 +45,7 @@ enum
>> EXT_import_context_bit,
>> EXT_framebuffer_sRGB_bit,
>> EXT_fbconfig_packed_float_bit,
>> + EXT_create_context_es_profile_bit,
>> EXT_create_context_es2_profile_bit,
>> MESA_copy_sub_buffer_bit,
>> MESA_depth_float_bit,
>> --
>> 2.4.10
>>
More information about the mesa-dev
mailing list