From 265fe9dce8727d8777153fa9846300051141a88e Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 3 May 2016 14:33:16 +1000 Subject: [PATCH] glsl: subroutine types cannot be used in constructors. This fixes two of the cases in GL43-CTS.shader_subroutine.subroutines_not_allowed_as_variables_constructors_and_argument_or_return_types Reviewed-by: Iago Toral Quiroga Signed-off-by: Dave Airlie --- src/compiler/glsl/ast_function.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/compiler/glsl/ast_function.cpp b/src/compiler/glsl/ast_function.cpp index f50c7bf7b71..37fb3e790c4 100644 --- a/src/compiler/glsl/ast_function.cpp +++ b/src/compiler/glsl/ast_function.cpp @@ -1819,6 +1819,12 @@ ast_function_expression::hir(exec_list *instructions, return ir_rvalue::error_value(ctx); } + if (constructor_type->is_subroutine()) { + _mesa_glsl_error(& loc, state, "subroutine name cannot be a constructor `%s'", + constructor_type->name); + return ir_rvalue::error_value(ctx); + } + if (constructor_type->is_array()) { if (!state->check_version(120, 300, &loc, "array constructors forbidden")) { -- 2.30.2