glsl: create program resource list after LinkShader
authorTapani Pälli <tapani.palli@intel.com>
Mon, 29 Jun 2015 12:23:45 +0000 (15:23 +0300)
committerTapani Pälli <tapani.palli@intel.com>
Wed, 1 Jul 2015 11:40:34 +0000 (14:40 +0300)
Resource list can be created properly  only after LinkShader hook
has been called to make sure all dead variables have been removed.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90925

src/glsl/linker.cpp
src/mesa/program/ir_to_mesa.cpp

index e0ce00ce5b9bf38a6ceaba473e7495862a76ed7f..71a45e8db9ce2a808bc083ed2277d8429a436979 100644 (file)
@@ -3242,10 +3242,6 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
       }
    }
 
-   build_program_resource_list(ctx, prog);
-   if (!prog->LinkStatus)
-      goto done;
-
    /* FINISHME: Assign fragment shader output locations. */
 
 done:
index 18e3bc5d5cc1ed5a74da7dd25cfdce42450f229d..0b2eb122364140eaf5d6255941498eb9c3039513 100644 (file)
@@ -2975,6 +2975,8 @@ _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
    if (prog->LinkStatus) {
       if (!ctx->Driver.LinkShader(ctx, prog)) {
         prog->LinkStatus = GL_FALSE;
+      } else {
+         build_program_resource_list(ctx, prog);
       }
    }