From: Dave Airlie <airl...@gmail.com>

Signed-off-by: Dave Airlie <airl...@redhat.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Reviewed-by: Matt Turner <matts...@gmail.com>
---
 src/glsl/glsl_lexer.ll | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll
index 48ba463..8dc3d10 100644
--- a/src/glsl/glsl_lexer.ll
+++ b/src/glsl/glsl_lexer.ll
@@ -458,6 +458,17 @@ 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)           {
+                           if (!yyextra->is_version(400, 0) &&
+                               !yyextra->ARB_gpu_shader_fp64_enable)
+                               return ERROR_TOK;
+                           yylval->dreal = _mesa_strtod(yytext, NULL);
+                           return DOUBLECONSTANT;
+                       }
+
 true                   {
                            yylval->n = 1;
                            return BOOLCONSTANT;
@@ -489,7 +500,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 +509,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);
-- 
2.0.5

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to