From: Yevhenii Kolesnikov Date: Wed, 20 May 2020 16:16:28 +0000 (+0300) Subject: glsl: subroutine signatures must match exactly X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c7943343a0fc2463987f667658a257b74cec1782;p=mesa.git glsl: subroutine signatures must match exactly From GLSL 4.60.7 spec, section 6.1.2 "Subroutines": It is a compile-time error if arguments and return type don’t match between the function and each associated subroutine type. Before, if subroutine type and implementation function were declared with types, that could be implicitly converted, it led to a runtime crash. Signed-off-by: Yevhenii Kolesnikov Reviewed-by: Timothy Arceri Part-of: --- diff --git a/src/compiler/glsl/ir_function.cpp b/src/compiler/glsl/ir_function.cpp index 97262f0f4b9..a38e5285292 100644 --- a/src/compiler/glsl/ir_function.cpp +++ b/src/compiler/glsl/ir_function.cpp @@ -329,6 +329,9 @@ ir_function::matching_signature(_mesa_glsl_parse_state *state, free(inexact_matches); return sig; case PARAMETER_LIST_INEXACT_MATCH: + /* Subroutine signatures must match exactly */ + if (this->is_subroutine) + continue; inexact_matches_temp = (ir_function_signature **) realloc(inexact_matches, sizeof(*inexact_matches) *