summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>2016-10-21 08:23:59 +0200
committerEmil Velikov <emil.l.velikov@gmail.com>2016-10-27 19:47:20 +0100
commit7a977612fc050d914080cc16bff30b5f7ba024ed (patch)
tree3a5b5e2cca2f5eb9dafa296ae848fb1f2f1128c6
parent95b5a69093ac6b3ea750567cc400696735ae07bc (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 <siglesias@igalia.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97804 Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> (cherry picked from commit 0e742926c6895dcaf8bdbe43022c8a0bc74fdd96)
-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 3162bb685d..15e819eacc 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)