[Mesa-dev] [PATCH] egl: Fix OpenGL ES version checks in _eglParseContextAttribList()

Ian Romanick idr at freedesktop.org
Fri Aug 1 16:12:32 PDT 2014


On 06/18/2014 05:49 PM, Anuj Phogat wrote:
> Fixes gles3 Khronos CTS test:
> egl_create_context.egl_create_context
> 
> Cc: <mesa-stable at lists.freedesktop.org>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
>  src/egl/main/eglcontext.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c
> index 70277ab..b8b30cb 100644
> --- a/src/egl/main/eglcontext.c
> +++ b/src/egl/main/eglcontext.c
> @@ -322,10 +322,15 @@ _eglParseContextAttribList(_EGLContext *ctx, _EGLDisplay *dpy,
>           break;
>  
>        case 3:
> -      default:
> -         /* Don't put additional version checks here.  We don't know that
> -          * there won't be versions > 3.0.
> +         /* Update this condition if new OpenGL ES 3.x (x > 1) version is
> +          * announced.
>            */
> +         if (ctx->ClientMinorVersion > 1)
> +            err = EGL_BAD_MATCH;

I dug around in our EGL code and in the test case a bit more.  I think
if you delete the preceeding if-statement and add the following to the
commit message:

    We would generate EGL_BAD_CONFIG because _eglGetContextAPIBit
    returns zero for the combination of EGL_OPENGL_ES_API and a major
    version > 3.  By just returning zero, the caller can't tell the
    difference between a bad version (which should generate
    EGL_BAD_MATCH) and a bad API (which should generate
    EGL_BAD_CONFIG).  This patch causes us to filter out major
    versions > 3 at a point where we can generate the correct error.

The patch will be

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

We could also fix this a couple other ways, but I think they're all more
intrusive and not worth the effort.

> +         break;
> +
> +      default:
> +         err = EGL_BAD_MATCH;
>           break;
>        }
>     }



More information about the mesa-dev mailing list