[Mesa-dev] [PATCH 6/8] nir/opt_peephole_select: Pass around the actual nir_shader

Jason Ekstrand jason at jlekstrand.net
Mon Dec 26 17:13:33 UTC 2016


---
 src/compiler/nir/nir_opt_peephole_select.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/compiler/nir/nir_opt_peephole_select.c b/src/compiler/nir/nir_opt_peephole_select.c
index 9c85c17..87a8ee0 100644
--- a/src/compiler/nir/nir_opt_peephole_select.c
+++ b/src/compiler/nir/nir_opt_peephole_select.c
@@ -147,7 +147,8 @@ block_check_for_allowed_instrs(nir_block *block, unsigned *count, bool alu_ok)
 }
 
 static bool
-nir_opt_peephole_select_block(nir_block *block, void *mem_ctx, unsigned limit)
+nir_opt_peephole_select_block(nir_block *block, nir_shader *shader,
+                              unsigned limit)
 {
    if (nir_cf_node_is_first(&block->cf_node))
       return false;
@@ -203,7 +204,7 @@ nir_opt_peephole_select_block(nir_block *block, void *mem_ctx, unsigned limit)
          break;
 
       nir_phi_instr *phi = nir_instr_as_phi(instr);
-      nir_alu_instr *sel = nir_alu_instr_create(mem_ctx, nir_op_bcsel);
+      nir_alu_instr *sel = nir_alu_instr_create(shader, nir_op_bcsel);
       nir_src_copy(&sel->src[0].src, &if_stmt->condition, sel);
       /* Splat the condition to all channels */
       memset(sel->src[0].swizzle, 0, sizeof sel->src[0].swizzle);
@@ -236,11 +237,11 @@ nir_opt_peephole_select_block(nir_block *block, void *mem_ctx, unsigned limit)
 static bool
 nir_opt_peephole_select_impl(nir_function_impl *impl, unsigned limit)
 {
-   void *mem_ctx = ralloc_parent(impl);
+   nir_shader *shader = impl->function->shader;
    bool progress = false;
 
    nir_foreach_block_safe(block, impl) {
-      progress |= nir_opt_peephole_select_block(block, mem_ctx, limit);
+      progress |= nir_opt_peephole_select_block(block, shader, limit);
    }
 
    if (progress)
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list