mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 02:28:10 +02:00
v3d: Fix temporary leaks of temp_registers and when spilling.
On each iteration of successfully spilling a reg, we'd allocate another copy of temp_registers, and when decrementing thread conut we'd allocate another copy of the graph. These all got cleaned up on freeing the compile.
This commit is contained in:
parent
faf9e40f35
commit
060979a380
1 changed files with 4 additions and 5 deletions
|
|
@ -394,8 +394,6 @@ v3d_register_allocate(struct v3d_compile *c, bool *spilled)
|
|||
struct node_to_temp_map map[c->num_temps];
|
||||
uint32_t temp_to_node[c->num_temps];
|
||||
uint8_t class_bits[c->num_temps];
|
||||
struct qpu_reg *temp_registers = calloc(c->num_temps,
|
||||
sizeof(*temp_registers));
|
||||
int acc_nodes[ACC_COUNT];
|
||||
struct v3d_ra_select_callback_data callback_data = {
|
||||
.next_acc = 0,
|
||||
|
|
@ -594,18 +592,19 @@ v3d_register_allocate(struct v3d_compile *c, bool *spilled)
|
|||
|
||||
if (node != -1) {
|
||||
v3d_spill_reg(c, map[node].temp);
|
||||
ralloc_free(g);
|
||||
|
||||
/* Ask the outer loop to call back in. */
|
||||
*spilled = true;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
free(temp_registers);
|
||||
ralloc_free(g);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct qpu_reg *temp_registers = calloc(c->num_temps,
|
||||
sizeof(*temp_registers));
|
||||
|
||||
for (uint32_t i = 0; i < c->num_temps; i++) {
|
||||
int ra_reg = ra_get_node_reg(g, temp_to_node[i]);
|
||||
if (ra_reg < PHYS_INDEX) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue