Commit 153b8b35 authored by Jason Ekstrand's avatar Jason Ekstrand
Browse files

util/hash_set: Rework the API to know about hashing

Previously, the set API required the user to do all of the hashing of keys
as it passed them in.  Since the hashing function is intrinsically tied to
the comparison function, it makes sense for the hash set to know about
it.  Also, it makes for a somewhat clumsy API as the user is constantly
calling hashing functions many of which have long names.  This is
especially bad when the standard call looks something like

_mesa_set_add(ht, _mesa_pointer_hash(key), key);

In the above case, there is no reason why the hash set shouldn't do the
hashing for you.  We leave the option for you to do your own hashing if
it's more efficient, but it's no longer needed.  Also, if you do do your
own hashing, the hash set will assert that your hash matches what it
expects out of the hashing function.  This should make it harder to mess up
your hashing.

This is analygous to 94303a07

 where we did this for hash_table
Signed-off-by: default avatarJason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: default avatarMatt Turner <mattst88@gmail.com>
Reviewed-by: default avatarEric Anholt <eric@anholt.net>
parent 4c99e3ae
......@@ -61,9 +61,12 @@ reg_create(void *mem_ctx, struct exec_list *list)
{
nir_register *reg = ralloc(mem_ctx, nir_register);
reg->uses = _mesa_set_create(mem_ctx, _mesa_key_pointer_equal);
reg->defs = _mesa_set_create(mem_ctx, _mesa_key_pointer_equal);
reg->if_uses = _mesa_set_create(mem_ctx, _mesa_key_pointer_equal);
reg->uses = _mesa_set_create(mem_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
reg->defs = _mesa_set_create(mem_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
reg->if_uses = _mesa_set_create(mem_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
reg->num_components = 0;
reg->num_array_elems = 0;
......@@ -175,7 +178,7 @@ nir_dest nir_dest_copy(nir_dest dest, void *mem_ctx)
static inline void
block_add_pred(nir_block *block, nir_block *pred)
{
_mesa_set_add(block->predecessors, _mesa_hash_pointer(pred), pred);
_mesa_set_add(block->predecessors, pred);
}
static void
......@@ -208,8 +211,7 @@ unlink_blocks(nir_block *pred, nir_block *succ)
pred->successors[1] = NULL;
}
struct set_entry *entry = _mesa_set_search(succ->predecessors,
_mesa_hash_pointer(pred), pred);
struct set_entry *entry = _mesa_set_search(succ->predecessors, pred);
assert(entry);
......@@ -274,9 +276,11 @@ nir_block_create(void *mem_ctx)
cf_init(&block->cf_node, nir_cf_node_block);
block->successors[0] = block->successors[1] = NULL;
block->predecessors = _mesa_set_create(mem_ctx, _mesa_key_pointer_equal);
block->predecessors = _mesa_set_create(mem_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
block->imm_dom = NULL;
block->dom_frontier = _mesa_set_create(mem_ctx, _mesa_key_pointer_equal);
block->dom_frontier = _mesa_set_create(mem_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
exec_list_make_empty(&block->instr_list);
......@@ -1001,7 +1005,7 @@ update_if_uses(nir_cf_node *node)
if_stmt->condition.ssa->if_uses :
if_stmt->condition.reg.reg->uses;
_mesa_set_add(if_uses_set, _mesa_hash_pointer(if_stmt), if_stmt);
_mesa_set_add(if_uses_set, if_stmt);
}
void
......@@ -1168,7 +1172,7 @@ add_use_cb(nir_src *src, void *state)
struct set *uses_set = src->is_ssa ? src->ssa->uses : src->reg.reg->uses;
_mesa_set_add(uses_set, _mesa_hash_pointer(instr), instr);
_mesa_set_add(uses_set, instr);
return true;
}
......@@ -1194,7 +1198,7 @@ add_reg_def_cb(nir_dest *dest, void *state)
nir_instr *instr = (nir_instr *) state;
if (!dest->is_ssa)
_mesa_set_add(dest->reg.reg->defs, _mesa_hash_pointer(instr), instr);
_mesa_set_add(dest->reg.reg->defs, instr);
return true;
}
......@@ -1313,9 +1317,7 @@ remove_use_cb(nir_src *src, void *state)
struct set *uses_set = src->is_ssa ? src->ssa->uses : src->reg.reg->uses;
struct set_entry *entry = _mesa_set_search(uses_set,
_mesa_hash_pointer(instr),
instr);
struct set_entry *entry = _mesa_set_search(uses_set, instr);
if (entry)
_mesa_set_remove(uses_set, entry);
......@@ -1332,9 +1334,7 @@ remove_def_cb(nir_dest *dest, void *state)
nir_register *reg = dest->reg.reg;
struct set_entry *entry = _mesa_set_search(reg->defs,
_mesa_hash_pointer(instr),
instr);
struct set_entry *entry = _mesa_set_search(reg->defs, instr);
if (entry)
_mesa_set_remove(reg->defs, entry);
......@@ -1741,9 +1741,7 @@ nir_instr_rewrite_src(nir_instr *instr, nir_src *src, nir_src new_src)
nir_ssa_def *old_ssa = src->ssa;
*src = new_src;
if (old_ssa && nir_foreach_src(instr, src_does_not_use_def, old_ssa)) {
struct set_entry *entry = _mesa_set_search(old_ssa->uses,
_mesa_hash_pointer(instr),
instr);
struct set_entry *entry = _mesa_set_search(old_ssa->uses, instr);
assert(entry);
_mesa_set_remove(old_ssa->uses, entry);
}
......@@ -1754,9 +1752,7 @@ nir_instr_rewrite_src(nir_instr *instr, nir_src *src, nir_src new_src)
nir_register *old_reg = src->reg.reg;
*src = new_src;
if (old_reg && nir_foreach_src(instr, src_does_not_use_reg, old_reg)) {
struct set_entry *entry = _mesa_set_search(old_reg->uses,
_mesa_hash_pointer(instr),
instr);
struct set_entry *entry = _mesa_set_search(old_reg->uses, instr);
assert(entry);
_mesa_set_remove(old_reg->uses, entry);
}
......@@ -1764,10 +1760,10 @@ nir_instr_rewrite_src(nir_instr *instr, nir_src *src, nir_src new_src)
if (new_src.is_ssa) {
if (new_src.ssa)
_mesa_set_add(new_src.ssa->uses, _mesa_hash_pointer(instr), instr);
_mesa_set_add(new_src.ssa->uses, instr);
} else {
if (new_src.reg.reg)
_mesa_set_add(new_src.reg.reg->uses, _mesa_hash_pointer(instr), instr);
_mesa_set_add(new_src.reg.reg->uses, instr);
}
}
......@@ -1779,8 +1775,10 @@ nir_ssa_def_init(nir_instr *instr, nir_ssa_def *def,
def->name = name;
def->parent_instr = instr;
def->uses = _mesa_set_create(mem_ctx, _mesa_key_pointer_equal);
def->if_uses = _mesa_set_create(mem_ctx, _mesa_key_pointer_equal);
def->uses = _mesa_set_create(mem_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
def->if_uses = _mesa_set_create(mem_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
def->num_components = num_components;
if (instr->block) {
......@@ -1835,7 +1833,7 @@ nir_ssa_def_rewrite_uses(nir_ssa_def *def, nir_src new_src, void *mem_ctx)
_mesa_set_remove(def->uses, entry);
nir_foreach_src(instr, ssa_def_rewrite_uses_src, &state);
_mesa_set_add(new_uses, _mesa_hash_pointer(instr), instr);
_mesa_set_add(new_uses, instr);
}
set_foreach(def->if_uses, entry) {
......@@ -1843,7 +1841,7 @@ nir_ssa_def_rewrite_uses(nir_ssa_def *def, nir_src new_src, void *mem_ctx)
_mesa_set_remove(def->if_uses, entry);
if_use->condition = nir_src_copy(new_src, mem_ctx);
_mesa_set_add(new_if_uses, _mesa_hash_pointer(if_use), if_use);
_mesa_set_add(new_if_uses, if_use);
}
}
......
......@@ -113,8 +113,7 @@ calc_dom_frontier_cb(nir_block *block, void *state)
set_foreach(block->predecessors, entry) {
nir_block *runner = (nir_block *) entry->key;
while (runner != block->imm_dom) {
_mesa_set_add(runner->dom_frontier, _mesa_hash_pointer(block),
block);
_mesa_set_add(runner->dom_frontier, block);
runner = runner->imm_dom;
}
}
......
......@@ -353,16 +353,14 @@ isolate_phi_nodes_block(nir_block *block, void *void_state)
exec_list_push_tail(&pcopy->entries, &entry->node);
entry->src = nir_src_copy(src->src, state->dead_ctx);
_mesa_set_add(src->src.ssa->uses,
_mesa_hash_pointer(&pcopy->instr), &pcopy->instr);
_mesa_set_add(src->src.ssa->uses, &pcopy->instr);
entry->dest.is_ssa = true;
nir_ssa_def_init(&pcopy->instr, &entry->dest.ssa,
phi->dest.ssa.num_components, src->src.ssa->name);
struct set_entry *use_entry =
_mesa_set_search(src->src.ssa->uses,
_mesa_hash_pointer(instr), instr);
_mesa_set_search(src->src.ssa->uses, instr);
if (use_entry)
/* It is possible that a phi node can use the same source twice
* but for different basic blocks. If that happens, entry will
......@@ -374,7 +372,7 @@ isolate_phi_nodes_block(nir_block *block, void *void_state)
_mesa_set_remove(src->src.ssa->uses, use_entry);
src->src.ssa = &entry->dest.ssa;
_mesa_set_add(entry->dest.ssa.uses, _mesa_hash_pointer(instr), instr);
_mesa_set_add(entry->dest.ssa.uses, instr);
}
nir_parallel_copy_entry *entry = ralloc(state->dead_ctx,
......@@ -393,9 +391,7 @@ isolate_phi_nodes_block(nir_block *block, void *void_state)
entry->src.is_ssa = true;
entry->src.ssa = &phi->dest.ssa;
_mesa_set_add(phi->dest.ssa.uses,
_mesa_hash_pointer(&block_pcopy->instr),
&block_pcopy->instr);
_mesa_set_add(phi->dest.ssa.uses, &block_pcopy->instr);
}
return true;
......@@ -545,7 +541,7 @@ rewrite_ssa_src(nir_src *src, void *void_state)
/* We don't need to remove it from the uses set because that is going
* away. We just need to add it to the one for the register. */
_mesa_set_add(reg->uses, _mesa_hash_pointer(state->instr), state->instr);
_mesa_set_add(reg->uses, state->instr);
}
return true;
......@@ -570,7 +566,7 @@ rewrite_ssa_dest(nir_dest *dest, void *void_state)
memset(dest, 0, sizeof *dest);
dest->reg.reg = reg;
_mesa_set_add(reg->defs, _mesa_hash_pointer(state->instr), state->instr);
_mesa_set_add(reg->defs, state->instr);
}
return true;
......@@ -605,8 +601,7 @@ resolve_registers_block(nir_block *block, void *void_state)
memset(&following_if->condition, 0, sizeof following_if->condition);
following_if->condition.reg.reg = reg;
_mesa_set_add(reg->if_uses, _mesa_hash_pointer(following_if),
following_if);
_mesa_set_add(reg->if_uses, following_if);
} else {
/* FIXME: We really shouldn't hit this. We should be doing
* constant control flow propagation.
......
......@@ -443,10 +443,10 @@ register_load_instr(nir_intrinsic_instr *load_instr,
return;
if (node->loads == NULL)
node->loads = _mesa_set_create(state->dead_ctx,
node->loads = _mesa_set_create(state->dead_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
_mesa_set_add(node->loads, _mesa_hash_pointer(load_instr), load_instr);
_mesa_set_add(node->loads, load_instr);
}
static void
......@@ -458,10 +458,10 @@ register_store_instr(nir_intrinsic_instr *store_instr,
return;
if (node->stores == NULL)
node->stores = _mesa_set_create(state->dead_ctx,
node->stores = _mesa_set_create(state->dead_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
_mesa_set_add(node->stores, _mesa_hash_pointer(store_instr), store_instr);
_mesa_set_add(node->stores, store_instr);
}
static void
......@@ -476,10 +476,10 @@ register_copy_instr(nir_intrinsic_instr *copy_instr,
continue;
if (node->copies == NULL)
node->copies = _mesa_set_create(state->dead_ctx,
node->copies = _mesa_set_create(state->dead_ctx, _mesa_hash_pointer,
_mesa_key_pointer_equal);
_mesa_set_add(node->copies, _mesa_hash_pointer(copy_instr), copy_instr);
_mesa_set_add(node->copies, copy_instr);
}
}
......@@ -539,9 +539,7 @@ lower_copies_to_load_store(struct deref_node *node,
if (arg_node == NULL)
continue;
struct set_entry *arg_entry = _mesa_set_search(arg_node->copies,
copy_entry->hash,
copy);
struct set_entry *arg_entry = _mesa_set_search(arg_node->copies, copy);
assert(arg_entry);
_mesa_set_remove(node->copies, arg_entry);
}
......@@ -714,7 +712,7 @@ add_phi_sources(nir_block *block, nir_block *pred,
src->src.is_ssa = true;
src->src.ssa = get_ssa_def_for_block(node, pred, state);
_mesa_set_add(src->src.ssa->uses, _mesa_hash_pointer(instr), instr);
_mesa_set_add(src->src.ssa->uses, instr);
exec_list_push_tail(&phi->srcs, &src->node);
}
......@@ -1039,6 +1037,7 @@ nir_lower_vars_to_ssa_impl(nir_function_impl *impl)
nir_foreach_block(impl, register_variable_uses_block, &state);
struct set *outputs = _mesa_set_create(state.dead_ctx,
_mesa_hash_pointer,
_mesa_key_pointer_equal);
bool progress = false;
......@@ -1075,7 +1074,7 @@ nir_lower_vars_to_ssa_impl(nir_function_impl *impl)
}
if (deref->var->data.mode == nir_var_shader_out)
_mesa_set_add(outputs, _mesa_hash_pointer(node), node);
_mesa_set_add(outputs, node);
foreach_deref_node_match(deref, lower_copies_to_load_store, &state);
}
......
......@@ -114,15 +114,12 @@ rewrite_src_instr(nir_src *src, nir_ssa_def *new_def, nir_instr *parent_instr)
search_state.found = false;
nir_foreach_src(parent_instr, search_def, &search_state);
if (!search_state.found) {
struct set_entry *entry =
_mesa_set_search(old_def->uses, _mesa_hash_pointer(parent_instr),
parent_instr);
struct set_entry *entry = _mesa_set_search(old_def->uses, parent_instr);
assert(entry);
_mesa_set_remove(old_def->uses, entry);
}
_mesa_set_add(new_def->uses, _mesa_hash_pointer(parent_instr),
parent_instr);
_mesa_set_add(new_def->uses, parent_instr);
}
static void
......@@ -132,12 +129,11 @@ rewrite_src_if(nir_if *if_stmt, nir_ssa_def *new_def)
if_stmt->condition.ssa = new_def;
struct set_entry *entry =
_mesa_set_search(old_def->if_uses, _mesa_hash_pointer(if_stmt), if_stmt);
struct set_entry *entry = _mesa_set_search(old_def->if_uses, if_stmt);
assert(entry);
_mesa_set_remove(old_def->if_uses, entry);
_mesa_set_add(new_def->if_uses, _mesa_hash_pointer(if_stmt), if_stmt);
_mesa_set_add(new_def->if_uses, if_stmt);
}
static bool
......
......@@ -210,8 +210,7 @@ print_var_decl(nir_variable *var, print_var_state *state, FILE *fp)
glsl_print_type(var->type, fp);
struct set_entry *entry =
_mesa_set_search(state->syms, _mesa_hash_string(var->name), var->name);
struct set_entry *entry = _mesa_set_search(state->syms, var->name);
char *name;
......@@ -232,7 +231,7 @@ print_var_decl(nir_variable *var, print_var_state *state, FILE *fp)
fprintf(fp, "\n");
_mesa_set_add(state->syms, _mesa_hash_string(name), name);
_mesa_set_add(state->syms, name);
_mesa_hash_table_insert(state->ht, var, name);
}
......@@ -818,7 +817,8 @@ init_print_state(print_var_state *state)
{
state->ht = _mesa_hash_table_create(NULL, _mesa_hash_pointer,
_mesa_key_pointer_equal);
state->syms = _mesa_set_create(NULL, _mesa_key_string_equal);
state->syms = _mesa_set_create(NULL, _mesa_key_hash_string,
_mesa_key_string_equal);
state->index = 0;
}
......
......@@ -33,7 +33,7 @@ add_var_use_intrinsic(nir_intrinsic_instr *instr, struct set *live)
unsigned num_vars = nir_intrinsic_infos[instr->intrinsic].num_variables;
for (unsigned i = 0; i < num_vars; i++) {
nir_variable *var = instr->variables[i]->var;
_mesa_set_add(live, _mesa_hash_pointer(var), var);
_mesa_set_add(live, var);
}
}
......@@ -42,12 +42,12 @@ add_var_use_call(nir_call_instr *instr, struct set *live)
{
if (instr->return_deref != NULL) {
nir_variable *var = instr->return_deref->var;
_mesa_set_add(live, _mesa_hash_pointer(var), var);
_mesa_set_add(live, var);
}
for (unsigned i = 0; i < instr->num_params; i++) {
nir_variable *var = instr->params[i]->var;
_mesa_set_add(live, _mesa_hash_pointer(var), var);
_mesa_set_add(live, var);
}
}
......@@ -56,7 +56,7 @@ add_var_use_tex(nir_tex_instr *instr, struct set *live)
{
if (instr->sampler != NULL) {
nir_variable *var = instr->sampler->var;
_mesa_set_add(live, _mesa_hash_pointer(var), var);
_mesa_set_add(live, var);
}
}
......@@ -101,8 +101,7 @@ static void
remove_dead_local_vars(nir_function_impl *impl, struct set *live)
{
foreach_list_typed_safe(nir_variable, var, node, &impl->locals) {
struct set_entry *entry =
_mesa_set_search(live, _mesa_hash_pointer(var), var);
struct set_entry *entry = _mesa_set_search(live, var);
if (entry == NULL)
exec_node_remove(&var->node);
}
......@@ -112,8 +111,7 @@ static void
remove_dead_global_vars(nir_shader *shader, struct set *live)
{
foreach_list_typed_safe(nir_variable, var, node, &shader->globals) {
struct set_entry *entry =
_mesa_set_search(live, _mesa_hash_pointer(var), var);
struct set_entry *entry = _mesa_set_search(live, var);
if (entry == NULL)
exec_node_remove(&var->node);
}
......@@ -123,7 +121,7 @@ void
nir_remove_dead_variables(nir_shader *shader)
{
struct set *live =
_mesa_set_create(NULL, _mesa_key_pointer_equal);
_mesa_set_create(NULL, _mesa_hash_pointer, _mesa_key_pointer_equal);
add_var_use_shader(shader, live);
......
......@@ -194,11 +194,9 @@ rewrite_use(nir_src *src, void *_state)
src->ssa = get_ssa_src(src->reg.reg, state);
if (state->parent_instr)
_mesa_set_add(src->ssa->uses, _mesa_hash_pointer(state->parent_instr),
state->parent_instr);
_mesa_set_add(src->ssa->uses, state->parent_instr);
else
_mesa_set_add(src->ssa->if_uses, _mesa_hash_pointer(state->parent_if),
state->parent_if);
_mesa_set_add(src->ssa->if_uses, state->parent_if);
return true;
}
......
......@@ -92,9 +92,7 @@ validate_reg_src(nir_reg_src *src, validate_state *state)
{
assert(src->reg != NULL);
struct set_entry *entry =
_mesa_set_search(src->reg->uses, _mesa_hash_pointer(state->instr),
state->instr);
struct set_entry *entry = _mesa_set_search(src->reg->uses, state->instr);
assert(entry && "use not in nir_register.uses");
struct hash_entry *entry2;
......@@ -103,8 +101,7 @@ validate_reg_src(nir_reg_src *src, validate_state *state)
assert(entry2);
reg_validate_state *reg_state = (reg_validate_state *) entry2->data;
_mesa_set_add(reg_state->uses, _mesa_hash_pointer(state->instr),
state->instr);
_mesa_set_add(reg_state->uses, state->instr);
if (!src->reg->is_global) {
assert(reg_state->where_defined == state->impl &&
......@@ -137,8 +134,7 @@ validate_ssa_src(nir_ssa_def *def, validate_state *state)
struct set_entry *entry2;
entry2 = _mesa_set_search(def->uses, _mesa_hash_pointer(state->instr),
state->instr);
entry2 = _mesa_set_search(def->uses, state->instr);
assert(entry2 && "SSA use missing");
......@@ -183,9 +179,7 @@ validate_reg_dest(nir_reg_dest *dest, validate_state *state)
{
assert(dest->reg != NULL);
struct set_entry *entry =
_mesa_set_search(dest->reg->defs, _mesa_hash_pointer(state->instr),
state->instr);
struct set_entry *entry = _mesa_set_search(dest->reg->defs, state->instr);
assert(entry && "definition not in nir_register.defs");
struct hash_entry *entry2;
......@@ -194,8 +188,7 @@ validate_reg_dest(nir_reg_dest *dest, validate_state *state)
assert(entry2);
reg_validate_state *reg_state = (reg_validate_state *) entry2->data;
_mesa_set_add(reg_state->defs, _mesa_hash_pointer(state->instr),
state->instr);
_mesa_set_add(reg_state->defs, state->instr);
if (!dest->reg->is_global) {
assert(reg_state->where_defined == state->impl &&
......@@ -553,8 +546,7 @@ validate_block(nir_block *block, validate_state *state)
for (unsigned i = 0; i < 2; i++) {
if (block->successors[i] != NULL) {
struct set_entry *entry =
_mesa_set_search(block->successors[i]->predecessors,
_mesa_hash_pointer(block), block);
_mesa_set_search(block->successors[i]->predecessors, block);
assert(entry);
validate_phi_srcs(block, block->successors[i], state);
......@@ -585,13 +577,11 @@ validate_if(nir_if *if_stmt, validate_state *state)
if (!if_stmt->condition.is_ssa) {
nir_register *reg = if_stmt->condition.reg.reg;
struct set_entry *entry =
_mesa_set_search(reg->if_uses, _mesa_hash_pointer(if_stmt), if_stmt);
struct set_entry *entry = _mesa_set_search(reg->if_uses, if_stmt);
assert(entry);
} else {
nir_ssa_def *def = if_stmt->condition.ssa;
struct set_entry *entry =
_mesa_set_search(def->if_uses, _mesa_hash_pointer(if_stmt), if_stmt);
struct set_entry *entry = _mesa_set_search(def->if_uses, if_stmt);
assert(entry);
}
......@@ -679,8 +669,10 @@ prevalidate_reg_decl(nir_register *reg, bool is_global, validate_state *state)
BITSET_SET(state->regs_found, reg->index);
reg_validate_state *reg_state = ralloc(state->regs, reg_validate_state);
reg_state->uses = _mesa_set_create(reg_state, _mesa_key_pointer_equal);
reg_state->defs = _mesa_set_create(reg_state, _mesa_key_pointer_equal);
reg_state->uses = _mesa_set_create(reg_state, _mesa_hash_pointer,
_mesa_key_pointer_equal);
reg_state->defs = _mesa_set_create(reg_state, _mesa_hash_pointer,
_mesa_key_pointer_equal);
reg_state->where_defined = is_global ? NULL : state->impl;
......@@ -699,8 +691,7 @@ postvalidate_reg_decl(nir_register *reg, validate_state *state)
struct set_entry *entry;
set_foreach(reg->uses, entry) {
struct set_entry *entry2 =
_mesa_set_search(reg_state->uses, _mesa_hash_pointer(entry->key),
entry->key);
_mesa_set_search(reg_state->uses, entry->key);
if (entry2 == NULL) {
printf("%p\n", entry->key);
......@@ -715,8 +706,7 @@ postvalidate_reg_decl(nir_register *reg, validate_state *state)
struct set_entry *entry;
set_foreach(reg->defs, entry) {
struct set_entry *entry2 =
_mesa_set_search(reg_state->defs, _mesa_hash_pointer(entry->key),
entry->key);
_mesa_set_search(reg_state->defs, entry->key);
if (entry2 == NULL) {
printf("%p\n", entry->key);
......
......@@ -1008,7 +1008,7 @@ brw_render_cache_set_clear(struct brw_context *brw)
void
brw_render_cache_set_add_bo(struct brw_context *brw, drm_intel_bo *bo)
{
_mesa_set_add(brw->render_cache, _mesa_hash_pointer(bo), bo);
_mesa_set_add(brw->render_cache, bo);
}
/**
......@@ -1026,7 +1026,7 @@ brw_render_cache_set_add_bo(struct brw_context *brw, drm_intel_bo *bo)
void
brw_render_cache_set_check_flush(struct brw_context *brw, drm_intel_bo *bo)
{
if (!_mesa_set_search(brw->render_cache, _mesa_hash_pointer(bo), bo))
if (!_mesa_set_search(brw->render_cache, bo))
return;
intel_batchbuffer_emit_mi_flush(brw);
......@@ -1050,5 +1050,6 @@ intel_fbo_init(struct brw_context *brw)
dd->EGLImageTargetRenderbufferStorage =
intel_image_target_renderbuffer_storage;
brw->render_cache = _mesa_set_create(brw, _mesa_key_pointer_equal);
brw->render_cache = _mesa_set_create(brw, _mesa_hash_pointer,
_mesa_key_pointer_equal);
}
......@@ -119,7 +119,8 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
shared->FrameBuffers = _mesa_NewHashTable();
shared->RenderBuffers = _mesa_NewHashTable();
shared->SyncObjects = _mesa_set_create(NULL, _mesa_key_pointer_equal);
shared->SyncObjects = _mesa_set_create(NULL, _mesa_hash_pointer,
_mesa_key_pointer_equal);
return shared;
}
......
......@@ -173,9 +173,7 @@ _mesa_validate_sync(struct gl_context *ctx,
const struct gl_sync_object *syncObj)
{
return (syncObj != NULL)
&& _mesa_set_search(ctx->Shared->SyncObjects,
_mesa_hash_pointer(syncObj),
syncObj) != NULL
&& _mesa_set_search(ctx->Shared->SyncObjects, syncObj) != NULL
&& (syncObj->Type == GL_SYNC_FENCE)
&& !syncObj->DeletePending;
}
......@@ -198,9 +196,7 @@ _mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
mtx_lock(&ctx->Shared->Mutex);
syncObj->