mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
vc4: Add quick algebraic optimization for clamping of unpacked values.
GL likes to saturate your incoming color, but if that color's coming from unpacking from unorms, there's no point. Ideally we'd have a range propagation pass that cleans these up in NIR, but that doesn't seem to be going to land soon. It seems like we could do a one-off optimization in nir_opt_algebraic, except that doesn't want to operate on expressions involving unpack_unorm_4x8, since it's sized. total instructions in shared programs: 87879 -> 87761 (-0.13%) instructions in affected programs: 6044 -> 5926 (-1.95%) total estimated cycles in shared programs: 349457 -> 349252 (-0.06%) estimated cycles in affected programs: 6172 -> 5967 (-3.32%) No SSPD on openarena (which had the biggest gains, in its VS/CSes), n=15.
This commit is contained in:
parent
e3efc4b023
commit
076551116e
1 changed files with 18 additions and 0 deletions
|
|
@ -182,6 +182,24 @@ qir_opt_algebraic(struct vc4_compile *c)
|
|||
|
||||
break;
|
||||
|
||||
case QOP_FMIN:
|
||||
if (is_1f(c, inst->src[1]) &&
|
||||
inst->src[0].pack >= QPU_UNPACK_8D_REP &&
|
||||
inst->src[0].pack <= QPU_UNPACK_8D) {
|
||||
replace_with_mov(c, inst, inst->src[0]);
|
||||
progress = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case QOP_FMAX:
|
||||
if (is_zero(c, inst->src[1]) &&
|
||||
inst->src[0].pack >= QPU_UNPACK_8D_REP &&
|
||||
inst->src[0].pack <= QPU_UNPACK_8D) {
|
||||
replace_with_mov(c, inst, inst->src[0]);
|
||||
progress = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case QOP_FSUB:
|
||||
case QOP_SUB:
|
||||
if (is_zero(c, inst->src[1])) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue