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 <jason@jlekstrand.net> (v1)
This commit is contained in:
parent
8d8c440ebf
commit
1aa8a0392f
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue