From: Jesse Natalie Date: Tue, 26 May 2020 19:20:20 +0000 (-0700) Subject: nir: When nir_lower_vars_to_explicit_types is run on temps, update scratch_size X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=99aaf0ec181efc5830deaeb7ec3331642125bc38;p=mesa.git nir: When nir_lower_vars_to_explicit_types is run on temps, update scratch_size To allow interop with other scratch ops, append any remaining temp vars to the end of any already-allocated scratch space. Reviewed-by: Jason Ekstrand Part-of: --- diff --git a/src/compiler/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c index 70474f18852..be18f79cdc0 100644 --- a/src/compiler/nir/nir_lower_io.c +++ b/src/compiler/nir/nir_lower_io.c @@ -1431,7 +1431,18 @@ lower_vars_to_explicit(nir_shader *shader, glsl_type_size_align_func type_info) { bool progress = false; - unsigned offset = 0; + unsigned offset; + switch (mode) { + case nir_var_function_temp: + case nir_var_shader_temp: + offset = shader->scratch_size; + break; + case nir_var_mem_shared: + offset = 0; + break; + default: + unreachable("Unsupported mode"); + } nir_foreach_variable(var, vars) { unsigned size, align; const struct glsl_type *explicit_type = @@ -1446,9 +1457,17 @@ lower_vars_to_explicit(nir_shader *shader, offset = var->data.driver_location + size; } - if (mode == nir_var_mem_shared) { + switch (mode) { + case nir_var_shader_temp: + case nir_var_function_temp: + shader->scratch_size = offset; + break; + case nir_var_mem_shared: shader->info.cs.shared_size = offset; shader->num_shared = offset; + break; + default: + unreachable("Unsupported mode"); } return progress;