[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