glcpp: Set extension defines after resolving the GLSL version.
authorMatt Turner <mattst88@gmail.com>
Fri, 17 Jan 2014 22:22:49 +0000 (14:22 -0800)
committerMatt Turner <mattst88@gmail.com>
Thu, 23 Jan 2014 19:33:22 +0000 (11:33 -0800)
commitb2d1c579bb84a88179072a6a783f8827e218db55
tree73a8bd10f1452150783d97716223e2001cbe88c0
parentc907595ba77a0c74b18b6908f71fafc3c08e2886
glcpp: Set extension defines after resolving the GLSL version.

Instead of defining preprocessor macros in glcpp_parser_create based on
the GL API, wait until the shader version has been resolved. Doing this
allows us to correctly set (and not set) preprocessor macros for
extensions allowed by the API but not the shader, as in the case of
ARB_ES3_compatibility.

The shader version has been resolved when the preprocessor encounters
the first preprocessor token, since the GLSL spec says

   "The #version directive must occur in a shader before anything else,
    except for comments and white space."

Specifically, if a #version token is found the version is known
explicitly, and if any other preprocessor token is found then the GLSL
version is implicitly 1.10.

Cc: mesa-stable@lists.freedesktop.org
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71630
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/glsl/glcpp/glcpp-parse.y
src/glsl/glcpp/glcpp.h
src/glsl/glcpp/pp.c