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

Author: Eric Anholt <e...@anholt.net>
Date:   Tue Mar 15 18:32:19 2016 -0700

nir: Optimize out discard_ifs with a constant 0 argument.

I found this in a shader that was doing an alpha test when alpha is fixed
at 1.0.

v2: Rebase on master (now the const value is "u32" not "u").

Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> (v1)

---

 src/compiler/nir/nir_opt_constant_folding.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/compiler/nir/nir_opt_constant_folding.c 
b/src/compiler/nir/nir_opt_constant_folding.c
index 8f04061..d6be807 100644
--- a/src/compiler/nir/nir_opt_constant_folding.c
+++ b/src/compiler/nir/nir_opt_constant_folding.c
@@ -155,6 +155,14 @@ constant_fold_intrinsic_instr(nir_intrinsic_instr *instr)
       progress |= constant_fold_deref(&instr->instr, instr->variables[i]);
    }
 
+   if (instr->intrinsic == nir_intrinsic_discard_if) {
+      nir_const_value *src_val = nir_src_as_const_value(instr->src[0]);
+      if (src_val && src_val->u32[0] == 0) {
+         nir_instr_remove(&instr->instr);
+         progress = true;
+      }
+   }
+
    return progress;
 }
 

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to