Commit de17b4aa authored by Emma Anholt's avatar Emma Anholt Committed by Marge Bot
Browse files

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: <mesa/mesa!8997>
parent 9fcc3697
......@@ -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);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment