[Mesa-dev] [PATCH 3/9] i965: move update_xfb_info() call out of loop

Timothy Arceri tarceri at itsqueeze.com
Mon Oct 30 04:11:12 UTC 2017


We can just call it once. Also a following patch will also introduce
link time component packing which modifies the outputs_written
bit mask, we want to avoid calling update_xfb_info() until after
packing is completed.
---
 src/mesa/drivers/dri/i965/brw_link.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp
index 1a28e63fcae..b6c5362a1ee 100644
--- a/src/mesa/drivers/dri/i965/brw_link.cpp
+++ b/src/mesa/drivers/dri/i965/brw_link.cpp
@@ -325,8 +325,6 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
 
       infos[stage] = &prog->nir->info;
 
-      update_xfb_info(prog->sh.LinkedTransformFeedback, infos[stage]);
-
       /* Make a pass over the IR to add state references for any built-in
        * uniforms that are used.  This has to be done now (during linking).
        * Code generation doesn't happen until the first time this shader is
@@ -347,6 +345,11 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
       }
    }
 
+   if (shProg->last_vert_prog) {
+      update_xfb_info(shProg->last_vert_prog->sh.LinkedTransformFeedback,
+                      &shProg->last_vert_prog->nir->info);
+   }
+
    /* The linker tries to dead code eliminate unused varying components,
     * and make sure interfaces match.  But it isn't able to do so in all
     * cases.  So, explicitly make the interfaces match by OR'ing together
-- 
2.13.6



More information about the mesa-dev mailing list