mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 06:50:11 +01:00
i965/nir: Do optimizations again just before lowering source mods.
We want to run CSE and algebraic optimizations again after lowering IO. Some of the passes in the optimization loop don't handle saturates and other modifiers, so run it before lowering to source modifiers. total instructions in shared programs: 6046190 -> 6045768 (-0.01%) instructions in affected programs: 22406 -> 21984 (-1.88%) helped: 47 HURT: 0 GAINED: 0 LOST: 0 Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
9b5efac461
commit
faa38e16aa
1 changed files with 21 additions and 13 deletions
|
|
@ -26,20 +26,9 @@
|
|||
#include "glsl/nir/glsl_to_nir.h"
|
||||
#include "brw_fs.h"
|
||||
|
||||
void
|
||||
fs_visitor::emit_nir_code()
|
||||
static void
|
||||
nir_optimize(nir_shader *nir)
|
||||
{
|
||||
/* first, lower the GLSL IR shader to NIR */
|
||||
lower_output_reads(shader->base.ir);
|
||||
nir_shader *nir = glsl_to_nir(shader->base.ir, NULL, true);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
nir_lower_global_vars_to_local(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
nir_split_var_copies(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
bool progress;
|
||||
do {
|
||||
progress = false;
|
||||
|
|
@ -58,6 +47,23 @@ fs_visitor::emit_nir_code()
|
|||
progress |= nir_opt_constant_folding(nir);
|
||||
nir_validate_shader(nir);
|
||||
} while (progress);
|
||||
}
|
||||
|
||||
void
|
||||
fs_visitor::emit_nir_code()
|
||||
{
|
||||
/* first, lower the GLSL IR shader to NIR */
|
||||
lower_output_reads(shader->base.ir);
|
||||
nir_shader *nir = glsl_to_nir(shader->base.ir, NULL, true);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
nir_lower_global_vars_to_local(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
nir_split_var_copies(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
nir_optimize(nir);
|
||||
|
||||
/* Lower a bunch of stuff */
|
||||
nir_lower_var_copies(nir);
|
||||
|
|
@ -81,6 +87,8 @@ fs_visitor::emit_nir_code()
|
|||
nir_lower_atomics(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
nir_optimize(nir);
|
||||
|
||||
nir_lower_to_source_mods(nir);
|
||||
nir_validate_shader(nir);
|
||||
nir_copy_prop(nir);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue