[Mesa-dev] [PATCH 2/2] egl: improve attribute checking for eglCreateContext

Emil Velikov emil.l.velikov at gmail.com
Thu Aug 13 09:34:14 PDT 2015


On 12 August 2015 at 18:53, Matt Turner <mattst88 at gmail.com> wrote:
> On Wed, Aug 12, 2015 at 8:36 AM, Frank Binns <frank.binns at imgtec.com> wrote:
>> The EGL 1.4 spec states for eglCreateContext:
>>
>>         "attribute EGL_CONTEXT_CLIENT_VERSION is only valid when the current
>>          rendering API is EGL_OPENGL_ES_API"
>>
>> Additionally, if the EGL_KHR_create_context EGL extension is supported
>> (this is mandatory in EGL 1.5) then the EGL_CONTEXT_MAJOR_VERSION_KHR,
>> which is an alias for EGL_CONTEXT_CLIENT_VERSION, and
>> EGL_CONTEXT_MINOR_VERSION_KHR attributes are also accepted by
>> eglCreateContext with the extension spec stating:
>>
>>         "The values for attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
>>          EGL_CONTEXT_MINOR_VERSION_KHR specify the requested client API
>>          version. They are only meaningful for OpenGL and OpenGL ES
>>          contexts, and specifying them for other types of contexts will
>>          generate an error."
>>
>> Add the necessary checks against the extension and rendering APIs when
>> validating these attributes as part of eglCreateContext.
>>
>> Signed-off-by: Frank Binns <frank.binns at imgtec.com>
>> ---
>>  src/egl/main/eglcontext.c | 30 +++++++++++++++++++++++++++++-
>>  1 file changed, 29 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c
>> index e767f4b..01781a9 100644
>> --- a/src/egl/main/eglcontext.c
>> +++ b/src/egl/main/eglcontext.c
>> @@ -101,11 +101,39 @@ _eglParseContextAttribList(_EGLContext *ctx, _EGLDisplay *dpy,
>>
>>        switch (attr) {
>>        case EGL_CONTEXT_CLIENT_VERSION:
>> +         /* The EGL 1.4 spec says:
>
> I'd put a  new line here.
>
>> +          *     "attribute EGL_CONTEXT_CLIENT_VERSION is only valid when the
>> +          *      current rendering API is EGL_OPENGL_ES_API"
>> +          *
>> +          * The EGL_KHR_create_context spec says:
>
> here
>
>> +          *     "EGL_CONTEXT_MAJOR_VERSION_KHR           0x3098
>> +          *      (this token is an alias for EGL_CONTEXT_CLIENT_VERSION)"
>> +          *
>> +          *     "The values for attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
>> +          *      EGL_CONTEXT_MINOR_VERSION_KHR specify the requested client API
>> +          *      version. They are only meaningful for OpenGL and OpenGL ES
>> +          *      contexts, and specifying them for other types of contexts will
>> +          *      generate an error."
>> +          */
>> +         if ((api != EGL_OPENGL_ES_API &&
>> +             (!dpy->Extensions.KHR_create_context || api != EGL_OPENGL_API))) {
>> +               err = EGL_BAD_ATTRIBUTE;
>> +               break;
>> +         }
>> +
>>           ctx->ClientMajorVersion = val;
>>           break;
>>
>>        case EGL_CONTEXT_MINOR_VERSION_KHR:
>> -         if (!dpy->Extensions.KHR_create_context) {
>> +         /* The EGL_KHR_create_context spec says:
>
> and here.
>
>> +          *     "The values for attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
>> +          *      EGL_CONTEXT_MINOR_VERSION_KHR specify the requested client API
>> +          *      version. They are only meaningful for OpenGL and OpenGL ES
>> +          *      contexts, and specifying them for other types of contexts will
>> +          *      generate an error."
>> +          */
>> +         if (!dpy->Extensions.KHR_create_context ||
>> +             (api != EGL_OPENGL_ES_API && api != EGL_OPENGL_API)) {
>>              err = EGL_BAD_ATTRIBUTE;
>>              break;
>>           }
>> --
>
> But I can do that myself before pushing.
>
> Reviewed-by: Matt Turner <mattst88 at gmail.com>
I've addressed the new line comments and pushed all this (and earlier)
set to master.

Thanks Frank !

-Emil


More information about the mesa-dev mailing list