[Mesa-dev] [PATCH v2 17/28] glsl/parser: Support double floats

Ian Romanick idr at freedesktop.org
Fri Feb 6 00:36:39 PST 2015


This patch is

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

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>
> Reviewed-by: Matt Turner <mattst88 at gmail.com>
> ---
>  src/glsl/glsl_parser.yy | 33 +++++++++++++++++++++++++++++----
>  1 file changed, 29 insertions(+), 4 deletions(-)
> 
> diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
> index 7fb8c38..596e432 100644
> --- a/src/glsl/glsl_parser.yy
> +++ b/src/glsl/glsl_parser.yy
> @@ -94,6 +94,7 @@ static bool match_layout_qualifier(const char *s1, const char *s2,
>  %union {
>     int n;
>     float real;
> +   double dreal;
>     const char *identifier;
>  
>     struct ast_type_qualifier type_qualifier;
> @@ -128,14 +129,17 @@ static bool match_layout_qualifier(const char *s1, const char *s2,
>     } selection_rest_statement;
>  }
>  
> -%token ATTRIBUTE CONST_TOK BOOL_TOK FLOAT_TOK INT_TOK UINT_TOK
> +%token ATTRIBUTE CONST_TOK BOOL_TOK FLOAT_TOK INT_TOK UINT_TOK DOUBLE_TOK
>  %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
> -%token BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 UVEC2 UVEC3 UVEC4 VEC2 VEC3 VEC4
> +%token BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 UVEC2 UVEC3 UVEC4 VEC2 VEC3 VEC4 DVEC2 DVEC3 DVEC4
>  %token CENTROID IN_TOK OUT_TOK INOUT_TOK UNIFORM VARYING SAMPLE
>  %token NOPERSPECTIVE FLAT SMOOTH
>  %token MAT2X2 MAT2X3 MAT2X4
>  %token MAT3X2 MAT3X3 MAT3X4
>  %token MAT4X2 MAT4X3 MAT4X4
> +%token DMAT2X2 DMAT2X3 DMAT2X4
> +%token DMAT3X2 DMAT3X3 DMAT3X4
> +%token DMAT4X2 DMAT4X3 DMAT4X4
>  %token SAMPLER1D SAMPLER2D SAMPLER3D SAMPLERCUBE SAMPLER1DSHADOW SAMPLER2DSHADOW
>  %token SAMPLERCUBESHADOW SAMPLER1DARRAY SAMPLER2DARRAY SAMPLER1DARRAYSHADOW
>  %token SAMPLER2DARRAYSHADOW SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW
> @@ -162,6 +166,7 @@ static bool match_layout_qualifier(const char *s1, const char *s2,
>  %type <identifier> any_identifier
>  %type <interface_block> instance_name_opt
>  %token <real> FLOATCONSTANT
> +%token <dreal> DOUBLECONSTANT
>  %token <n> INTCONSTANT UINTCONSTANT BOOLCONSTANT
>  %token <identifier> FIELD_SELECTION
>  %token LEFT_OP RIGHT_OP
> @@ -182,8 +187,8 @@ static bool match_layout_qualifier(const char *s1, const char *s2,
>      */
>  %token ASM CLASS UNION ENUM TYPEDEF TEMPLATE THIS PACKED_TOK GOTO
>  %token INLINE_TOK NOINLINE PUBLIC_TOK STATIC EXTERN EXTERNAL
> -%token LONG_TOK SHORT_TOK DOUBLE_TOK HALF FIXED_TOK UNSIGNED INPUT_TOK
> -%token HVEC2 HVEC3 HVEC4 DVEC2 DVEC3 DVEC4 FVEC2 FVEC3 FVEC4
> +%token LONG_TOK SHORT_TOK HALF FIXED_TOK UNSIGNED INPUT_TOK
> +%token HVEC2 HVEC3 HVEC4 FVEC2 FVEC3 FVEC4
>  %token SAMPLER3DRECT
>  %token SIZEOF CAST NAMESPACE USING
>  %token RESOURCE PATCH
> @@ -434,6 +439,13 @@ primary_expression:
>        $$->set_location(@1);
>        $$->primary_expression.float_constant = $1;
>     }
> +   | DOUBLECONSTANT
> +   {
> +      void *ctx = state;
> +      $$ = new(ctx) ast_expression(ast_double_constant, NULL, NULL, NULL);
> +      $$->set_location(@1);
> +      $$->primary_expression.double_constant = $1;
> +   }
>     | BOOLCONSTANT
>     {
>        void *ctx = state;
> @@ -1864,6 +1876,7 @@ type_specifier_nonarray:
>  basic_type_specifier_nonarray:
>     VOID_TOK                 { $$ = "void"; }
>     | FLOAT_TOK              { $$ = "float"; }
> +   | DOUBLE_TOK             { $$ = "double"; }
>     | INT_TOK                { $$ = "int"; }
>     | UINT_TOK               { $$ = "uint"; }
>     | BOOL_TOK               { $$ = "bool"; }
> @@ -1879,6 +1892,9 @@ basic_type_specifier_nonarray:
>     | UVEC2                  { $$ = "uvec2"; }
>     | UVEC3                  { $$ = "uvec3"; }
>     | UVEC4                  { $$ = "uvec4"; }
> +   | DVEC2                  { $$ = "dvec2"; }
> +   | DVEC3                  { $$ = "dvec3"; }
> +   | DVEC4                  { $$ = "dvec4"; }
>     | MAT2X2                 { $$ = "mat2"; }
>     | MAT2X3                 { $$ = "mat2x3"; }
>     | MAT2X4                 { $$ = "mat2x4"; }
> @@ -1888,6 +1904,15 @@ basic_type_specifier_nonarray:
>     | MAT4X2                 { $$ = "mat4x2"; }
>     | MAT4X3                 { $$ = "mat4x3"; }
>     | MAT4X4                 { $$ = "mat4"; }
> +   | DMAT2X2                { $$ = "dmat2"; }
> +   | DMAT2X3                { $$ = "dmat2x3"; }
> +   | DMAT2X4                { $$ = "dmat2x4"; }
> +   | DMAT3X2                { $$ = "dmat3x2"; }
> +   | DMAT3X3                { $$ = "dmat3"; }
> +   | DMAT3X4                { $$ = "dmat3x4"; }
> +   | DMAT4X2                { $$ = "dmat4x2"; }
> +   | DMAT4X3                { $$ = "dmat4x3"; }
> +   | DMAT4X4                { $$ = "dmat4"; }
>     | SAMPLER1D              { $$ = "sampler1D"; }
>     | SAMPLER2D              { $$ = "sampler2D"; }
>     | SAMPLER2DRECT          { $$ = "sampler2DRect"; }
> 



More information about the mesa-dev mailing list