mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 12:40:09 +01:00
freedreno: Remove uniform variables after finalizing NIR.
mesa/st optimizes the uniform storage if you have the finalize hook in place, causing the uniforms declared to potentially not have storage in the ParameterValues list any more. If you leave your uniforms around in the NIR, then a later finalization after variant creation will re-add the uniforms to parameters, defeating the optimization and likely reallocating the uniform storage (causing use-after-free). So, we have to do this before we can start using variants in mesa/st. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8997>
This commit is contained in:
parent
9fcc369770
commit
de17b4aab5
1 changed files with 5 additions and 0 deletions
|
|
@ -332,6 +332,11 @@ ir3_finalize_nir(struct ir3_compiler *compiler, nir_shader *s)
|
|||
debug_printf("----------------------\n");
|
||||
}
|
||||
|
||||
nir_foreach_uniform_variable_safe(var, s) {
|
||||
exec_node_remove(&var->node);
|
||||
}
|
||||
nir_validate_shader(s, "after uniform var removal");
|
||||
|
||||
nir_sweep(s);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue