[Mesa-dev] [PATCH v2 18/28] glsl/lexer: Support double floats
Ian Romanick
idr at freedesktop.org
Fri Feb 6 00:40:59 PST 2015
On 02/06/2015 06:56 AM, Ilia Mirkin wrote:
> From: Dave Airlie <airlied at gmail.com>
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> src/glsl/glsl_lexer.ll | 29 +++++++++++++++++++++++++----
> 1 file changed, 25 insertions(+), 4 deletions(-)
>
> diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll
> index 57c46be..d8bdaa7 100644
> --- a/src/glsl/glsl_lexer.ll
> +++ b/src/glsl/glsl_lexer.ll
> @@ -458,6 +458,15 @@ layout {
> return FLOATCONSTANT;
> }
>
> +[0-9]+\.[0-9]+([eE][+-]?[0-9]+)?(lf|LF) |
> +\.[0-9]+([eE][+-]?[0-9]+)?(lf|LF) |
> +[0-9]+\.([eE][+-]?[0-9]+)?(lf|LF) |
> +[0-9]+[eE][+-]?[0-9]+(lf|LF) |
> +[0-9]+(lf|LF) {
This last one is not correct. We used to allow this for float
constants, but we fixed it. See commit 9d8aa88.
With that fixed, this patch is
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
> + yylval->dreal = _mesa_strtod(yytext, NULL);
> + return DOUBLECONSTANT;
> + }
> +
> true {
> yylval->n = 1;
> return BOOLCONSTANT;
> @@ -489,7 +498,7 @@ external KEYWORD(110, 100, 0, 0, EXTERNAL);
> interface KEYWORD(110, 100, 0, 0, INTERFACE);
> long KEYWORD(110, 100, 0, 0, LONG_TOK);
> short KEYWORD(110, 100, 0, 0, SHORT_TOK);
> -double KEYWORD(110, 100, 400, 0, DOUBLE_TOK);
> +double KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DOUBLE_TOK);
> half KEYWORD(110, 100, 0, 0, HALF);
> fixed KEYWORD(110, 100, 0, 0, FIXED_TOK);
> unsigned KEYWORD(110, 100, 0, 0, UNSIGNED);
> @@ -498,9 +507,21 @@ output KEYWORD(110, 100, 0, 0, OUTPUT);
> hvec2 KEYWORD(110, 100, 0, 0, HVEC2);
> hvec3 KEYWORD(110, 100, 0, 0, HVEC3);
> hvec4 KEYWORD(110, 100, 0, 0, HVEC4);
> -dvec2 KEYWORD(110, 100, 400, 0, DVEC2);
> -dvec3 KEYWORD(110, 100, 400, 0, DVEC3);
> -dvec4 KEYWORD(110, 100, 400, 0, DVEC4);
> +dvec2 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DVEC2);
> +dvec3 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DVEC3);
> +dvec4 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DVEC4);
> +dmat2 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT2X2);
> +dmat3 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT3X3);
> +dmat4 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT4X4);
> +dmat2x2 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT2X2);
> +dmat2x3 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT2X3);
> +dmat2x4 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT2X4);
> +dmat3x2 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT3X2);
> +dmat3x3 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT3X3);
> +dmat3x4 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT3X4);
> +dmat4x2 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT4X2);
> +dmat4x3 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT4X3);
> +dmat4x4 KEYWORD_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, DMAT4X4);
> fvec2 KEYWORD(110, 100, 0, 0, FVEC2);
> fvec3 KEYWORD(110, 100, 0, 0, FVEC3);
> fvec4 KEYWORD(110, 100, 0, 0, FVEC4);
>
More information about the mesa-dev
mailing list