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>
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);
}