mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
panfrost: Free all block/instruction objects before leaving midgard_compile_shader_nir()
Right now we're leaking all block and instruction objects allocated by the compiler. Let's clean things up before leaving midgard_compile_shader_nir(). Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
3ac49f135a
commit
5882e0def9
2 changed files with 15 additions and 0 deletions
|
|
@ -333,6 +333,9 @@ mir_next_op(struct midgard_instruction *ins)
|
|||
#define mir_foreach_block(ctx, v) \
|
||||
list_for_each_entry(struct midgard_block, v, &ctx->blocks, link)
|
||||
|
||||
#define mir_foreach_block_safe(ctx, v) \
|
||||
list_for_each_entry_safe(struct midgard_block, v, &ctx->blocks, link)
|
||||
|
||||
#define mir_foreach_block_from(ctx, from, v) \
|
||||
list_for_each_entry_from(struct midgard_block, v, from, &ctx->blocks, link)
|
||||
|
||||
|
|
@ -392,6 +395,15 @@ mir_next_op(struct midgard_instruction *ins)
|
|||
#define mir_foreach_src(ins, v) \
|
||||
for (unsigned v = 0; v < ARRAY_SIZE(ins->src); ++v)
|
||||
|
||||
static inline void mir_remove_block(struct midgard_block *block)
|
||||
{
|
||||
mir_foreach_instr_in_block_safe(block, ins)
|
||||
mir_remove_instruction(ins);
|
||||
|
||||
list_del(&block->link);
|
||||
free(block);
|
||||
}
|
||||
|
||||
static inline midgard_instruction *
|
||||
mir_last_in_block(struct midgard_block *block)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2835,6 +2835,9 @@ midgard_compile_shader_nir(struct midgard_screen *screen, nir_shader *nir, midga
|
|||
ctx->spills, ctx->fills);
|
||||
}
|
||||
|
||||
mir_foreach_block_safe(ctx, block)
|
||||
mir_remove_block(block);
|
||||
|
||||
ralloc_free(ctx);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue