diff options
author | Kenneth Graunke <[email protected]> | 2013-07-15 15:39:35 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2013-07-18 16:57:23 -0700 |
commit | 308d4c71466af7ad5cbb99f8b4fddd743f2a2b25 (patch) | |
tree | 797ee94145e9492a4507ca550160f0d6a5702762 /src/glsl/ast.h | |
parent | 7855482138480d88e7ca167d2acca9b93fe011b9 (diff) |
glsl: Change is_precision_statement to default_precision != none.
Currently, we store precision in ast_type_specifier, rather than
ast_type_qualifier. This works because precision is the last qualifier,
and immediately adjacent to the type.
Default precision statements (such as "precision highp float") are
represented as ast_type_specifier objects, with a boolean to indicate
that it's a default precision statement rather than an ordinary type.
ast_type_specifier::precision will be moving to ast_type_qualifier soon,
in order to support arbitrary qualifier ordering. However, we still
need to store a "this is a precision statement" flag /and/ the default
precision in ast_type_specifier.
This patch changes the boolean into a new field, default_precision.
If default_precision != ast_precision_none, it's a precision statement
with the specified precision. Otherwise, it's an ordinary type.
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/glsl/ast.h')
-rw-r--r-- | src/glsl/ast.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/glsl/ast.h b/src/glsl/ast.h index 816d5fccbbc..1208704ff6d 100644 --- a/src/glsl/ast.h +++ b/src/glsl/ast.h @@ -534,7 +534,7 @@ public: ast_expression *array_size) : ast_node(), type_name(that->type_name), structure(that->structure), is_array(is_array), array_size(array_size), precision(that->precision), - is_precision_statement(that->is_precision_statement) + default_precision(that->default_precision) { /* empty */ } @@ -543,7 +543,7 @@ public: ast_type_specifier(const char *name) : type_name(name), structure(NULL), is_array(false), array_size(NULL), precision(ast_precision_none), - is_precision_statement(false) + default_precision(ast_precision_none) { /* empty */ } @@ -552,7 +552,7 @@ public: ast_type_specifier(ast_struct_specifier *s) : type_name(s->name), structure(s), is_array(false), array_size(NULL), precision(ast_precision_none), - is_precision_statement(false) + default_precision(ast_precision_none) { /* empty */ } @@ -573,7 +573,8 @@ public: unsigned precision:2; - bool is_precision_statement; + /** For precision statements, this is the given precision; otherwise none. */ + unsigned default_precision:2; }; |