On Wed, Aug 12, 2015 at 8:36 AM, Frank Binns <[email protected]> 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 <[email protected]>
> ---
> 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 <[email protected]>
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev