aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/glsl/ir_function.cpp
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-09-10 10:38:33 +0200
committermarha <marha@users.sourceforge.net>2013-09-10 10:42:30 +0200
commit2c1b75db27d66ff4760d624e44d1c1c6f42a4ca7 (patch)
treea32e3d5f8bb662ba5c14a72d97a553c4927c0b76 /mesalib/src/glsl/ir_function.cpp
parentd53900c52abc2402f978b72278712e4bcdbde9f2 (diff)
parent889d7dd8e94a5538f388cc619115bf5c0b6fc0b7 (diff)
downloadvcxsrv-2c1b75db27d66ff4760d624e44d1c1c6f42a4ca7.tar.gz
vcxsrv-2c1b75db27d66ff4760d624e44d1c1c6f42a4ca7.tar.bz2
vcxsrv-2c1b75db27d66ff4760d624e44d1c1c6f42a4ca7.zip
Merge remote-tracking branch 'origin/released'
* origin/released: fontconfig libX11 libXmu libxcb mesa xserver git update 10 Sep 2013 Conflicts: mesalib/src/glsl/.gitignore xorg-server/hw/xwin/InitOutput.c xorg-server/hw/xwin/winclipboardwndproc.c xorg-server/hw/xwin/winmultiwindowwm.c xorg-server/hw/xwin/winsetsp.c
Diffstat (limited to 'mesalib/src/glsl/ir_function.cpp')
-rw-r--r--mesalib/src/glsl/ir_function.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/mesalib/src/glsl/ir_function.cpp b/mesalib/src/glsl/ir_function.cpp
index fe4209c77..53cf469d9 100644
--- a/mesalib/src/glsl/ir_function.cpp
+++ b/mesalib/src/glsl/ir_function.cpp
@@ -116,14 +116,16 @@ parameter_lists_match(const exec_list *list_a, const exec_list *list_b)
ir_function_signature *
-ir_function::matching_signature(const exec_list *actual_parameters)
+ir_function::matching_signature(_mesa_glsl_parse_state *state,
+ const exec_list *actual_parameters)
{
bool is_exact;
- return matching_signature(actual_parameters, &is_exact);
+ return matching_signature(state, actual_parameters, &is_exact);
}
ir_function_signature *
-ir_function::matching_signature(const exec_list *actual_parameters,
+ir_function::matching_signature(_mesa_glsl_parse_state *state,
+ const exec_list *actual_parameters,
bool *is_exact)
{
ir_function_signature *match = NULL;
@@ -143,6 +145,10 @@ ir_function::matching_signature(const exec_list *actual_parameters,
ir_function_signature *const sig =
(ir_function_signature *) iter.get();
+ /* Skip over any built-ins that aren't available in this shader. */
+ if (sig->is_builtin() && !sig->is_builtin_available(state))
+ continue;
+
switch (parameter_lists_match(& sig->parameters, actual_parameters)) {
case PARAMETER_LIST_EXACT_MATCH:
*is_exact = true;
@@ -203,12 +209,17 @@ parameter_lists_match_exact(const exec_list *list_a, const exec_list *list_b)
}
ir_function_signature *
-ir_function::exact_matching_signature(const exec_list *actual_parameters)
+ir_function::exact_matching_signature(_mesa_glsl_parse_state *state,
+ const exec_list *actual_parameters)
{
foreach_iter(exec_list_iterator, iter, signatures) {
ir_function_signature *const sig =
(ir_function_signature *) iter.get();
+ /* Skip over any built-ins that aren't available in this shader. */
+ if (sig->is_builtin() && !sig->is_builtin_available(state))
+ continue;
+
if (parameter_lists_match_exact(&sig->parameters, actual_parameters))
return sig;
}