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

Author: Timothy Arceri <[email protected]>
Date:   Sat Nov 21 19:02:01 2015 +1100

glsl: only call dead code pass when new inputs/outputs demoted

This will help avoid eliminating inputs/outputs needed by SSOs.

Cc: Gregory Hainaut <[email protected]>
Reviewed-by: Juha-Pekka Heikkila <[email protected]>

---

 src/glsl/linker.cpp |   24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index eac2536..5ff433c 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -4327,13 +4327,14 @@ link_shaders(struct gl_context *ctx, struct 
gl_shader_program *prog)
       do_dead_builtin_varyings(ctx, sh, NULL,
                                num_tfeedback_decls, tfeedback_decls);
 
-      if (!prog->SeparateShader)
+      if (!prog->SeparateShader) {
          demote_shader_inputs_and_outputs(sh, ir_var_shader_out);
-
-      /* Eliminate code that is now dead due to unused outputs being demoted.
-       */
-      while (do_dead_code(sh->ir, false))
-         ;
+         /* Eliminate code that is now dead due to unused outputs being
+          * demoted.
+          */
+         while (do_dead_code(sh->ir, false))
+            ;
+      }
    }
    else if (first == MESA_SHADER_FRAGMENT) {
       /* If the program only contains a fragment shader...
@@ -4350,11 +4351,14 @@ link_shaders(struct gl_context *ctx, struct 
gl_shader_program *prog)
                                        0 /* num_tfeedback_decls */,
                                        NULL /* tfeedback_decls */))
             goto done;
-      } else
+      } else {
          demote_shader_inputs_and_outputs(sh, ir_var_shader_in);
-
-      while (do_dead_code(sh->ir, false))
-         ;
+         /* Eliminate code that is now dead due to unused inputs being
+          * demoted.
+          */
+         while (do_dead_code(sh->ir, false))
+            ;
+      }
    }
 
    next = last;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to