projects
/
mesa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
cd0ac3a
)
nir: clone instruction set rather than removing individual entries
author
Timothy Arceri
<tarceri@itsqueeze.com>
Wed, 20 Feb 2019 03:03:37 +0000
(14:03 +1100)
committer
Timothy Arceri
<tarceri@itsqueeze.com>
Thu, 21 Feb 2019 21:36:36 +0000
(08:36 +1100)
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>
src/compiler/nir/nir_opt_cse.c
patch
|
blob
|
history
diff --git
a/src/compiler/nir/nir_opt_cse.c
b/src/compiler/nir/nir_opt_cse.c
index bf42a6a33dc5bb170749fc66114f0d0076f1a909..3c3617d852a7b7845c9b08f27caa47e89f012de9 100644
(file)
--- a/
src/compiler/nir/nir_opt_cse.c
+++ b/
src/compiler/nir/nir_opt_cse.c
@@
-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;
}