mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
nir: clone instruction set rather than removing individual entries
This reduces the time spent in nir_opt_cse() by almost a half. The massif tool from callgrind reported no change in peak memory use with the large doliphin uber shaders I used for testing. Reviewed-by: Thomas Helland<thomashelland90@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
cd0ac3a6af
commit
d9e08e753b
1 changed files with 3 additions and 3 deletions
|
|
@ -39,9 +39,10 @@
|
|||
*/
|
||||
|
||||
static bool
|
||||
cse_block(nir_block *block, struct set *instr_set)
|
||||
cse_block(nir_block *block, struct set *dominance_set)
|
||||
{
|
||||
bool progress = false;
|
||||
struct set *instr_set = _mesa_set_clone(dominance_set, NULL);
|
||||
|
||||
nir_foreach_instr_safe(instr, block) {
|
||||
if (nir_instr_set_add_or_rewrite(instr_set, instr)) {
|
||||
|
|
@ -55,8 +56,7 @@ cse_block(nir_block *block, struct set *instr_set)
|
|||
progress |= cse_block(child, instr_set);
|
||||
}
|
||||
|
||||
nir_foreach_instr(instr, block)
|
||||
nir_instr_set_remove(instr_set, instr);
|
||||
_mesa_set_destroy(instr_set, NULL);
|
||||
|
||||
return progress;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue