mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
glsl: Convert output read lowering to the util hash table
Signed-off-by: Thomas Helland <thomashelland90@gmail.com> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
This commit is contained in:
parent
6adcc8f283
commit
9efa977be5
1 changed files with 9 additions and 8 deletions
|
|
@ -23,7 +23,7 @@
|
|||
*/
|
||||
|
||||
#include "ir.h"
|
||||
#include "program/hash_table.h"
|
||||
#include "util/hash_table.h"
|
||||
|
||||
/**
|
||||
* \file lower_output_reads.cpp
|
||||
|
|
@ -74,20 +74,20 @@ static unsigned
|
|||
hash_table_var_hash(const void *key)
|
||||
{
|
||||
const ir_variable * var = static_cast<const ir_variable *>(key);
|
||||
return hash_table_string_hash(var->name);
|
||||
return _mesa_key_hash_string(var->name);
|
||||
}
|
||||
|
||||
output_read_remover::output_read_remover(unsigned stage)
|
||||
{
|
||||
this->stage = stage;
|
||||
mem_ctx = ralloc_context(NULL);
|
||||
replacements =
|
||||
hash_table_ctor(0, hash_table_var_hash, hash_table_pointer_compare);
|
||||
replacements = _mesa_hash_table_create(NULL, hash_table_var_hash,
|
||||
_mesa_key_pointer_equal);
|
||||
}
|
||||
|
||||
output_read_remover::~output_read_remover()
|
||||
{
|
||||
hash_table_dtor(replacements);
|
||||
_mesa_hash_table_destroy(replacements, NULL);
|
||||
ralloc_free(mem_ctx);
|
||||
}
|
||||
|
||||
|
|
@ -99,14 +99,15 @@ output_read_remover::visit(ir_dereference_variable *ir)
|
|||
if (stage == MESA_SHADER_TESS_CTRL)
|
||||
return visit_continue;
|
||||
|
||||
ir_variable *temp = (ir_variable *) hash_table_find(replacements, ir->var);
|
||||
hash_entry *entry = _mesa_hash_table_search(replacements, ir->var);
|
||||
ir_variable *temp = entry ? (ir_variable *) entry->data : NULL;
|
||||
|
||||
/* If we don't have an existing temporary, create one. */
|
||||
if (temp == NULL) {
|
||||
void *var_ctx = ralloc_parent(ir->var);
|
||||
temp = new(var_ctx) ir_variable(ir->var->type, ir->var->name,
|
||||
ir_var_temporary);
|
||||
hash_table_insert(replacements, temp, ir->var);
|
||||
_mesa_hash_table_insert(replacements, ir->var, temp);
|
||||
ir->var->insert_after(temp);
|
||||
}
|
||||
|
||||
|
|
@ -156,7 +157,7 @@ ir_visitor_status
|
|||
output_read_remover::visit_leave(ir_emit_vertex *ir)
|
||||
{
|
||||
hash_table_call_foreach(replacements, emit_return_copy, ir);
|
||||
hash_table_clear(replacements);
|
||||
_mesa_hash_table_clear(replacements, NULL);
|
||||
return visit_continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue