mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-30 11:00:40 +00:00
mesa/st: Make sure that prog_to_nir NIR gets freed.
GLSL NIR gets freed on relink by _mesa_delete_program(), but for ARB
programs we need to free the old NIR when PSN is used to set up new NIR in
the same gl_program. Additionally, set the base .nir field so that it
will get freed by _mesa_delete_program().
Fixes: 3d7611e9a6
("st/nir: use NIR for asm programs")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
1ea42894c7
commit
e0806c1ea0
@ -579,8 +579,11 @@ st_translate_vertex_program(struct st_context *st,
|
||||
nir_shader *nir =
|
||||
st_translate_prog_to_nir(st, &stvp->Base, MESA_SHADER_VERTEX);
|
||||
|
||||
if (stvp->tgsi.ir.nir)
|
||||
ralloc_free(stvp->tgsi.ir.nir);
|
||||
stvp->tgsi.type = PIPE_SHADER_IR_NIR;
|
||||
stvp->tgsi.ir.nir = nir;
|
||||
stvp->Base.nir = nir;
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -763,8 +766,11 @@ st_translate_fragment_program(struct st_context *st,
|
||||
nir_shader *nir =
|
||||
st_translate_prog_to_nir(st, &stfp->Base, MESA_SHADER_FRAGMENT);
|
||||
|
||||
if (stfp->tgsi.ir.nir)
|
||||
ralloc_free(stfp->tgsi.ir.nir);
|
||||
stfp->tgsi.type = PIPE_SHADER_IR_NIR;
|
||||
stfp->tgsi.ir.nir = nir;
|
||||
stfp->Base.nir = nir;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user