Mesa (master): glsl: remove dead builtins before assigning varying locations

Timothy Arceri tarceri at kemper.freedesktop.org
Wed Aug 10 22:34:10 UTC 2016


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

Author: Timothy Arceri <timothy.arceri at collabora.com>
Date:   Wed Jul 27 15:20:43 2016 +1000

glsl: remove dead builtins before assigning varying locations

Builtins already have locations assigned so this shouldn't
change anything. We want to call it earlier so we can tranform
GLSL IR to NIR earlier.

Reviewed-by: Eric Anholt <eric at anholt.net>

---

 src/compiler/glsl/linker.cpp | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 569a8b9..7a3d35f 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -4589,8 +4589,12 @@ link_varyings_and_uniforms(unsigned first, unsigned last,
 
       /* If the program is made up of only a single stage */
       if (first == last) {
-
          gl_linked_shader *const sh = prog->_LinkedShaders[last];
+
+         do_dead_builtin_varyings(ctx, NULL, sh, 0, NULL);
+         do_dead_builtin_varyings(ctx, sh, NULL, num_tfeedback_decls,
+                                  tfeedback_decls);
+
          if (prog->SeparateShader) {
             const uint64_t reserved_slots =
                reserved_varying_slot(sh, ir_var_shader_in);
@@ -4606,10 +4610,6 @@ link_varyings_and_uniforms(unsigned first, unsigned last,
                                           reserved_slots))
                return false;
          }
-
-         do_dead_builtin_varyings(ctx, NULL, sh, 0, NULL);
-         do_dead_builtin_varyings(ctx, sh, NULL, num_tfeedback_decls,
-                                  tfeedback_decls);
       } else {
          /* Linking the stages in the opposite order (from fragment to vertex)
           * ensures that inter-shader outputs written to in an earlier stage
@@ -4629,16 +4629,16 @@ link_varyings_and_uniforms(unsigned first, unsigned last,
             const uint64_t reserved_in_slots =
                reserved_varying_slot(sh_next, ir_var_shader_in);
 
+            do_dead_builtin_varyings(ctx, sh_i, sh_next,
+                      next == MESA_SHADER_FRAGMENT ? num_tfeedback_decls : 0,
+                      tfeedback_decls);
+
             if (!assign_varying_locations(ctx, mem_ctx, prog, sh_i, sh_next,
                       next == MESA_SHADER_FRAGMENT ? num_tfeedback_decls : 0,
                       tfeedback_decls,
                       reserved_out_slots | reserved_in_slots))
                return false;
 
-            do_dead_builtin_varyings(ctx, sh_i, sh_next,
-                      next == MESA_SHADER_FRAGMENT ? num_tfeedback_decls : 0,
-                      tfeedback_decls);
-
             /* This must be done after all dead varyings are eliminated. */
             if (sh_i != NULL) {
                unsigned slots_used = _mesa_bitcount_64(reserved_out_slots);




More information about the mesa-commit mailing list