st/glsl_to_nir: remove dead local variables
Without this we do not end up with a deterministic NIR because temporary register variables are added in random order. NIR must be deterministic because we use it to produce a sha for the radeonsi backends disk cache. This fixes the shader cache for a bunch of shaders. Another positive is that this results in a large reduction in the size of the NIR that the state tracker stores to the disk cache. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -463,6 +463,9 @@ st_glsl_to_nir_post_opts(struct st_context *st, struct gl_program *prog,
|
||||
NIR_PASS_V(nir, st_nir_lower_builtin);
|
||||
NIR_PASS_V(nir, gl_nir_lower_atomics, shader_program, true);
|
||||
|
||||
nir_variable_mode mask = nir_var_function_temp;
|
||||
nir_remove_dead_variables(nir, mask);
|
||||
|
||||
if (st->ctx->_Shader->Flags & GLSL_DUMP) {
|
||||
_mesa_log("\n");
|
||||
_mesa_log("NIR IR for linked %s program %d:\n",
|
||||
|
Reference in New Issue
Block a user