[Mesa-dev] [PATCH] glsl: produce a linker error for a subroutine uniform with no functions.

Dave Airlie airlied at gmail.com
Fri May 6 01:38:05 UTC 2016


From: Dave Airlie <airlied at redhat.com>

If a subroutine uniform is declared with no functions backing it,
that isn't legal, so we should fail to link.

Fixes:
GL43-CTS.shader_subroutine.subroutine_uniform_wo_matching_subroutines

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/compiler/glsl/linker.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 9c72478..daf9016 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -3056,6 +3056,10 @@ link_calculate_subroutine_compat(struct gl_shader_program *prog)
             continue;
 
          count = 0;
+         if (sh->NumSubroutineFunctions == 0) {
+            linker_error(prog, "subroutine uniform %s defined but no valid functions found\n", uni->type->name);
+            continue;
+         }
          for (unsigned f = 0; f < sh->NumSubroutineFunctions; f++) {
             struct gl_subroutine_function *fn = &sh->SubroutineFunctions[f];
             for (int k = 0; k < fn->num_compat_types; k++) {
-- 
2.5.5



More information about the mesa-dev mailing list