summaryrefslogtreecommitdiffstats
path: root/src/compiler/glsl
diff options
context:
space:
mode:
authorErik Faye-Lund <[email protected]>2018-10-30 15:15:58 +0100
committerErik Faye-Lund <[email protected]>2018-11-02 11:10:36 +0100
commitecab2d6f1481e1e50b20b54ae88dd949c1dafab6 (patch)
tree54527576c50cd9cac6a2a813e94c11329a13a2e0 /src/compiler/glsl
parente975c5b785f9e6d0c5ccec12a027b19a6073130c (diff)
glsl: fall back to inexact function-match
In GLES, we currently either need an exact match with a local function, or an exact match with a builtin. However, if we add support for implicit conversions for GLES shaders, we also need to fall back to a non-exact match in the case where there were no builtin match either. Luckily, we already have a variable ready with this, so let's just return it if the builtin-search failed. Signed-off-by: Erik Faye-Lund <[email protected]> Reviewed-by: Tapani Pälli <[email protected]>
Diffstat (limited to 'src/compiler/glsl')
-rw-r--r--src/compiler/glsl/ast_function.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/compiler/glsl/ast_function.cpp b/src/compiler/glsl/ast_function.cpp
index 1fa3f7561ae..ee68d0e17e7 100644
--- a/src/compiler/glsl/ast_function.cpp
+++ b/src/compiler/glsl/ast_function.cpp
@@ -667,7 +667,12 @@ match_function_by_name(const char *name,
/* Local shader has no exact candidates; check the built-ins. */
_mesa_glsl_initialize_builtin_functions();
sig = _mesa_glsl_find_builtin_function(state, name, actual_parameters);
- return sig;
+
+ /* if _mesa_glsl_find_builtin_function failed, fall back to the result
+ * of choose_best_inexact_overload() instead. This should only affect
+ * GLES.
+ */
+ return sig ? sig : local_sig;
}
static ir_function_signature *