summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Iglesias Gonsálvez <[email protected]>2016-10-21 08:23:59 +0200
committerSamuel Iglesias Gonsálvez <[email protected]>2016-10-26 11:57:07 +0200
commit0e742926c6895dcaf8bdbe43022c8a0bc74fdd96 (patch)
treea6ef7077a917f9fc44bdfb727aefe282a2a76e69
parentdfbdb2c0b3559c46d93f10d636a88b9541304fc7 (diff)
glsl: update default precision qualifier when it is set in the shader
Default precision qualifier for a data type could be set several times inside a shader. This patch allows to update the default precision qualifier for the given type that is saved in the symbol table. If it is not in the symbol table, just add it. Signed-off-by: Samuel Iglesias Gonsálvez <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97804 Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/compiler/glsl/glsl_symbol_table.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/glsl/glsl_symbol_table.cpp b/src/compiler/glsl/glsl_symbol_table.cpp
index 3162bb685df..15e819eacc6 100644
--- a/src/compiler/glsl/glsl_symbol_table.cpp
+++ b/src/compiler/glsl/glsl_symbol_table.cpp
@@ -213,7 +213,10 @@ bool glsl_symbol_table::add_default_precision_qualifier(const char *type_name,
symbol_table_entry *entry =
new(mem_ctx) symbol_table_entry(default_specifier);
- return _mesa_symbol_table_add_symbol(table, name, entry) == 0;
+ if (!get_entry(name))
+ return _mesa_symbol_table_add_symbol(table, name, entry) == 0;
+
+ return _mesa_symbol_table_replace_symbol(table, name, entry) == 0;
}
void glsl_symbol_table::add_global_function(ir_function *f)