nir: Allow uniform in nir_lower_vars_to_explicit_types

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6472>
This commit is contained in:
Jason Ekstrand
2020-08-27 16:00:00 -05:00
committed by Marge Bot
parent 3719b69dfc
commit 9641f483e9

View File

@@ -1698,6 +1698,10 @@ lower_vars_to_explicit(nir_shader *shader,
bool progress = false; bool progress = false;
unsigned offset; unsigned offset;
switch (mode) { switch (mode) {
case nir_var_uniform:
assert(shader->info.stage == MESA_SHADER_KERNEL);
offset = 0;
break;
case nir_var_function_temp: case nir_var_function_temp:
case nir_var_shader_temp: case nir_var_shader_temp:
offset = shader->scratch_size; offset = shader->scratch_size;
@@ -1728,6 +1732,10 @@ lower_vars_to_explicit(nir_shader *shader,
} }
switch (mode) { switch (mode) {
case nir_var_uniform:
assert(shader->info.stage == MESA_SHADER_KERNEL);
shader->num_uniforms = offset;
break;
case nir_var_shader_temp: case nir_var_shader_temp:
case nir_var_function_temp: case nir_var_function_temp:
shader->scratch_size = offset; shader->scratch_size = offset;
@@ -1758,11 +1766,13 @@ nir_lower_vars_to_explicit_types(nir_shader *shader,
*/ */
ASSERTED nir_variable_mode supported = ASSERTED nir_variable_mode supported =
nir_var_mem_shared | nir_var_mem_global | nir_var_mem_shared | nir_var_mem_global |
nir_var_shader_temp | nir_var_function_temp; nir_var_shader_temp | nir_var_function_temp | nir_var_uniform;
assert(!(modes & ~supported) && "unsupported"); assert(!(modes & ~supported) && "unsupported");
bool progress = false; bool progress = false;
if (modes & nir_var_uniform)
progress |= lower_vars_to_explicit(shader, &shader->variables, nir_var_uniform, type_info);
if (modes & nir_var_mem_shared) if (modes & nir_var_mem_shared)
progress |= lower_vars_to_explicit(shader, &shader->variables, nir_var_mem_shared, type_info); progress |= lower_vars_to_explicit(shader, &shader->variables, nir_var_mem_shared, type_info);
if (modes & nir_var_shader_temp) if (modes & nir_var_shader_temp)