vc4: Fix leak of the compiled shader programs in the cache.
This commit is contained in:
parent
4da9e3d805
commit
80ed075e60
|
@ -431,6 +431,8 @@ vc4_context_destroy(struct pipe_context *pctx)
|
|||
|
||||
util_slab_destroy(&vc4->transfer_pool);
|
||||
|
||||
vc4_program_fini(pctx);
|
||||
|
||||
ralloc_free(vc4);
|
||||
}
|
||||
|
||||
|
|
|
@ -293,6 +293,7 @@ struct pipe_context *vc4_context_create(struct pipe_screen *pscreen,
|
|||
void vc4_draw_init(struct pipe_context *pctx);
|
||||
void vc4_state_init(struct pipe_context *pctx);
|
||||
void vc4_program_init(struct pipe_context *pctx);
|
||||
void vc4_program_fini(struct pipe_context *pctx);
|
||||
void vc4_query_init(struct pipe_context *pctx);
|
||||
void vc4_simulator_init(struct vc4_screen *screen);
|
||||
int vc4_simulator_flush(struct vc4_context *vc4,
|
||||
|
|
|
@ -2777,3 +2777,24 @@ vc4_program_init(struct pipe_context *pctx)
|
|||
vc4->vs_cache = _mesa_hash_table_create(pctx, vs_cache_hash,
|
||||
vs_cache_compare);
|
||||
}
|
||||
|
||||
void
|
||||
vc4_program_fini(struct pipe_context *pctx)
|
||||
{
|
||||
struct vc4_context *vc4 = vc4_context(pctx);
|
||||
|
||||
struct hash_entry *entry;
|
||||
hash_table_foreach(vc4->fs_cache, entry) {
|
||||
struct vc4_compiled_shader *shader = entry->data;
|
||||
vc4_bo_unreference(&shader->bo);
|
||||
ralloc_free(shader);
|
||||
_mesa_hash_table_remove(vc4->fs_cache, entry);
|
||||
}
|
||||
|
||||
hash_table_foreach(vc4->vs_cache, entry) {
|
||||
struct vc4_compiled_shader *shader = entry->data;
|
||||
vc4_bo_unreference(&shader->bo);
|
||||
ralloc_free(shader);
|
||||
_mesa_hash_table_remove(vc4->vs_cache, entry);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue