mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
gallium/util: Fix leak in the live shader cache
When the nir backend is used, the create_shader call is supposed to release state->ir.nir. When the cache hits, create_shader is not called, thus state->ir.nir should be freed. There is nothing to be done for the TGSI case as the tokens release is done by the caller. This fixes a leak noticed in: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2931 Fixes:4bb919b0b8Signed-off-by: Axel Davy <davyaxel0@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4980> (cherry picked from commit47bfc799da)
This commit is contained in:
parent
787cecdb02
commit
50781aaa1b
2 changed files with 5 additions and 2 deletions
|
|
@ -220,7 +220,7 @@
|
|||
"description": "gallium/util: Fix leak in the live shader cache",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "4bb919b0b8b4ed6f6a7049c3f8d294b74b50e198"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -125,8 +125,11 @@ util_live_shader_cache_get(struct pipe_context *ctx,
|
|||
simple_mtx_unlock(&cache->lock);
|
||||
|
||||
/* Return if the shader already exists. */
|
||||
if (shader)
|
||||
if (shader) {
|
||||
if (state->type == PIPE_SHADER_IR_NIR)
|
||||
ralloc_free(state->ir.nir);
|
||||
return shader;
|
||||
}
|
||||
|
||||
/* The cache mutex is unlocked to allow multiple create_shader
|
||||
* invocations to run simultaneously.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue