aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler/nir
diff options
context:
space:
mode:
authorJesse Natalie <[email protected]>2020-05-26 12:20:20 -0700
committerMarge Bot <[email protected]>2020-07-14 18:15:40 +0000
commit99aaf0ec181efc5830deaeb7ec3331642125bc38 (patch)
treef6e21aeb13e0a7a4daec83743c58ed9a956f4331 /src/compiler/nir
parentbf138c1fd43966ba5f5933fba6cd87217100dd88 (diff)
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 <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5889>
Diffstat (limited to 'src/compiler/nir')
-rw-r--r--src/compiler/nir/nir_lower_io.c23
1 files changed, 21 insertions, 2 deletions
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;