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:
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user