Mesa (master): glsl: subroutine types cannot be used in constructors.

Dave Airlie airlied at kemper.freedesktop.org
Tue May 3 20:45:00 UTC 2016


Module: Mesa
Branch: master
Commit: 265fe9dce8727d8777153fa9846300051141a88e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=265fe9dce8727d8777153fa9846300051141a88e

Author: Dave Airlie <airlied at redhat.com>
Date:   Tue May  3 14:33:16 2016 +1000

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 <itoral at igalia.com>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 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 f50c7bf..37fb3e79 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")) {




More information about the mesa-commit mailing list