From 0e742926c6895dcaf8bdbe43022c8a0bc74fdd96 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Samuel=20Iglesias=20Gons=C3=A1lvez?= Date: Fri, 21 Oct 2016 08:23:59 +0200 Subject: [PATCH] glsl: update default precision qualifier when it is set in the shader MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97804 Reviewed-by: Timothy Arceri --- src/compiler/glsl/glsl_symbol_table.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compiler/glsl/glsl_symbol_table.cpp b/src/compiler/glsl/glsl_symbol_table.cpp index 3162bb6..15e819e 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) -- 2.7.4