mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
glsl: use the linear allocator in opt_copy_propagation_elements
Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
9c19dedff0
commit
b6f50e4640
1 changed files with 11 additions and 4 deletions
|
|
@ -70,6 +70,9 @@ public:
|
|||
class acp_entry : public exec_node
|
||||
{
|
||||
public:
|
||||
/* override operator new from exec_node */
|
||||
DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(acp_entry)
|
||||
|
||||
acp_entry(ir_variable *lhs, ir_variable *rhs, int write_mask, int swizzle[4])
|
||||
: rhs_node(this)
|
||||
{
|
||||
|
|
@ -90,6 +93,9 @@ public:
|
|||
class kill_entry : public exec_node
|
||||
{
|
||||
public:
|
||||
/* override operator new from exec_node */
|
||||
DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(kill_entry)
|
||||
|
||||
kill_entry(ir_variable *var, int write_mask)
|
||||
{
|
||||
this->var = var;
|
||||
|
|
@ -107,6 +113,7 @@ public:
|
|||
this->progress = false;
|
||||
this->killed_all = false;
|
||||
this->mem_ctx = ralloc_context(NULL);
|
||||
this->lin_ctx = linear_alloc_parent(this->mem_ctx, 0);
|
||||
this->shader_mem_ctx = NULL;
|
||||
this->kills = new(mem_ctx) exec_list;
|
||||
|
||||
|
|
@ -174,6 +181,7 @@ public:
|
|||
|
||||
/* Context for our local data structures. */
|
||||
void *mem_ctx;
|
||||
void *lin_ctx;
|
||||
/* Context for allocating new shader nodes. */
|
||||
void *shader_mem_ctx;
|
||||
};
|
||||
|
|
@ -223,9 +231,9 @@ ir_copy_propagation_elements_visitor::visit_leave(ir_assignment *ir)
|
|||
kill_entry *k;
|
||||
|
||||
if (lhs)
|
||||
k = new(this->kills) kill_entry(var, ir->write_mask);
|
||||
k = new(this->lin_ctx) kill_entry(var, ir->write_mask);
|
||||
else
|
||||
k = new(this->kills) kill_entry(var, ~0);
|
||||
k = new(this->lin_ctx) kill_entry(var, ~0);
|
||||
|
||||
kill(k);
|
||||
}
|
||||
|
|
@ -524,7 +532,6 @@ ir_copy_propagation_elements_visitor::kill(kill_entry *k)
|
|||
if (k->next)
|
||||
k->remove();
|
||||
|
||||
ralloc_steal(this->kills, k);
|
||||
this->kills->push_tail(k);
|
||||
}
|
||||
|
||||
|
|
@ -588,7 +595,7 @@ ir_copy_propagation_elements_visitor::add_copy(ir_assignment *ir)
|
|||
if (lhs->var->data.precise != rhs->var->data.precise)
|
||||
return;
|
||||
|
||||
entry = new(this->mem_ctx) acp_entry(lhs->var, rhs->var, write_mask,
|
||||
entry = new(this->lin_ctx) acp_entry(lhs->var, rhs->var, write_mask,
|
||||
swizzle);
|
||||
|
||||
/* lhs hash, hash of lhs -> acp_entry lists */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue