intel/nir: Call nir_lower_io_to_scalar_early
Shader-db results on Kaby Lake: total instructions in shared programs: 15166953 -> 15073611 (-0.62%) instructions in affected programs: 2390284 -> 2296942 (-3.91%) helped: 16469 HURT: 505 total loops in shared programs: 4954 -> 4951 (-0.06%) loops in affected programs: 3 -> 0 helped: 3 HURT: 0 Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
b0bb547f78
commit
4434591bf5
|
@ -713,6 +713,18 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
|
|||
nir_validate_shader(*producer);
|
||||
nir_validate_shader(*consumer);
|
||||
|
||||
const bool p_is_scalar =
|
||||
compiler->scalar_stage[(*producer)->info.stage];
|
||||
const bool c_is_scalar =
|
||||
compiler->scalar_stage[(*consumer)->info.stage];
|
||||
|
||||
if (p_is_scalar && c_is_scalar) {
|
||||
NIR_PASS_V(*producer, nir_lower_io_to_scalar_early, nir_var_shader_out);
|
||||
NIR_PASS_V(*consumer, nir_lower_io_to_scalar_early, nir_var_shader_in);
|
||||
*producer = brw_nir_optimize(*producer, compiler, p_is_scalar);
|
||||
*consumer = brw_nir_optimize(*consumer, compiler, c_is_scalar);
|
||||
}
|
||||
|
||||
NIR_PASS_V(*producer, nir_remove_dead_variables, nir_var_shader_out);
|
||||
NIR_PASS_V(*consumer, nir_remove_dead_variables, nir_var_shader_in);
|
||||
|
||||
|
@ -729,12 +741,7 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
|
|||
NIR_PASS_V(*consumer, nir_lower_indirect_derefs,
|
||||
brw_nir_no_indirect_mask(compiler, (*consumer)->info.stage));
|
||||
|
||||
const bool p_is_scalar =
|
||||
compiler->scalar_stage[(*producer)->info.stage];
|
||||
*producer = brw_nir_optimize(*producer, compiler, p_is_scalar);
|
||||
|
||||
const bool c_is_scalar =
|
||||
compiler->scalar_stage[(*consumer)->info.stage];
|
||||
*consumer = brw_nir_optimize(*consumer, compiler, c_is_scalar);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue