nir: Don't bail too early in lower_mem_constant_vars
If there were no constant variables, we would bail out entirely.
However, we may still have constant input pointers coming in from the
client.
Fixes: 4360a8a2b3
"nir/lower_io: Add support for nir_var_mem_constant"
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6472>
This commit is contained in:
parent
a7a0315d7f
commit
9414cbc13c
|
@ -1724,32 +1724,35 @@ bool
|
||||||
nir_lower_mem_constant_vars(nir_shader *shader,
|
nir_lower_mem_constant_vars(nir_shader *shader,
|
||||||
glsl_type_size_align_func type_info)
|
glsl_type_size_align_func type_info)
|
||||||
{
|
{
|
||||||
|
bool progress = false;
|
||||||
|
|
||||||
unsigned old_constant_data_size = shader->constant_data_size;
|
unsigned old_constant_data_size = shader->constant_data_size;
|
||||||
if (!lower_vars_to_explicit(shader, &shader->variables,
|
if (lower_vars_to_explicit(shader, &shader->variables,
|
||||||
nir_var_mem_constant, type_info)) {
|
nir_var_mem_constant, type_info)) {
|
||||||
nir_shader_preserve_all_metadata(shader);
|
assert(shader->constant_data_size > old_constant_data_size);
|
||||||
return false;
|
shader->constant_data = rerzalloc_size(shader, shader->constant_data,
|
||||||
}
|
old_constant_data_size,
|
||||||
|
shader->constant_data_size);
|
||||||
|
|
||||||
shader->constant_data = rerzalloc_size(shader, shader->constant_data,
|
nir_foreach_variable_with_modes(var, shader, nir_var_mem_constant) {
|
||||||
old_constant_data_size,
|
write_constant((char *)shader->constant_data +
|
||||||
shader->constant_data_size);
|
var->data.driver_location,
|
||||||
|
var->constant_initializer, var->type);
|
||||||
nir_foreach_variable_with_modes(var, shader, nir_var_mem_constant) {
|
}
|
||||||
write_constant((char *)shader->constant_data + var->data.driver_location,
|
progress = true;
|
||||||
var->constant_initializer, var->type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nir_foreach_function(function, shader) {
|
nir_foreach_function(function, shader) {
|
||||||
if (!function->impl)
|
if (!function->impl)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
nir_lower_vars_to_explicit_types_impl(function->impl,
|
if (nir_lower_vars_to_explicit_types_impl(function->impl,
|
||||||
nir_var_mem_constant,
|
nir_var_mem_constant,
|
||||||
type_info);
|
type_info))
|
||||||
|
progress = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return progress;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue