Timothy Arceri <t_arc...@yahoo.com.au> writes: > --- > > Some of the AoA tests currently get stuck in an optimisation > loop for a long time and this was taking a large amount of time. > Its a symptom not a cause but I don't see any issue with using the faster > version. > > src/glsl/ir_validate.cpp | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp > index cfe0df3..f3752bd 100644 > --- a/src/glsl/ir_validate.cpp > +++ b/src/glsl/ir_validate.cpp > @@ -35,7 +35,7 @@ > > #include "ir.h" > #include "ir_hierarchical_visitor.h" > -#include "program/hash_table.h" > +#include "util/hash_table.h" > #include "glsl_types.h" > > namespace { > @@ -44,8 +44,8 @@ class ir_validate : public ir_hierarchical_visitor { > public: > ir_validate() > { > - this->ht = hash_table_ctor(0, hash_table_pointer_hash, > - hash_table_pointer_compare); > + this->ht = _mesa_hash_table_create(NULL, _mesa_hash_pointer, > + _mesa_key_pointer_equal); > > this->current_function = NULL; > > @@ -55,7 +55,7 @@ public: > > ~ir_validate() > { > - hash_table_dtor(this->ht); > + _mesa_hash_table_destroy(this->ht, NULL); > } > > virtual ir_visitor_status visit(ir_variable *v); > @@ -94,7 +94,7 @@ ir_validate::visit(ir_dereference_variable *ir) > abort(); > } > > - if (hash_table_find(ht, ir->var) == NULL) { > + if (_mesa_hash_table_search(ht, ir->var) == NULL) { > printf("ir_dereference_variable @ %p specifies undeclared variable " > "`%s' @ %p\n", > (void *) ir, ir->var->name, (void *) ir->var); > @@ -730,8 +730,7 @@ ir_validate::visit(ir_variable *ir) > if (ir->name && ir->is_name_ralloced()) > assert(ralloc_parent(ir->name) == ir); > > - hash_table_insert(ht, ir, ir); > - > + _mesa_hash_table_insert(ht, ir, ir); > > /* If a variable is an array, verify that the maximum array index is in > * bounds. There was once an error in AST-to-HIR conversion that set this > @@ -887,13 +886,13 @@ ir_validate::validate_ir(ir_instruction *ir, void *data) > { > struct hash_table *ht = (struct hash_table *) data; > > - if (hash_table_find(ht, ir)) { > + if (_mesa_hash_table_search(ht, ir)) { > printf("Instruction node present twice in ir tree:\n"); > ir->print(); > printf("\n"); > abort(); > } > - hash_table_insert(ht, ir, ir); > + _mesa_hash_table_insert(ht, ir, ir); > }
It looks like you should use a set instead of a hash table, since you don't need a separate data field.
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev