nir/lower_io: Make variable location assignment a manual operation

Previously, we just assigned variable locations in nir_lower_io.  Now, we
force the user to assign variable locations for us.  This gives the backend
a bit more control over where variables are placed.

v2: Rename from _packed to _scalar

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
This commit is contained in:
Jason Ekstrand
2015-03-18 15:04:15 -07:00
parent 639115123e
commit 25db44a845
3 changed files with 9 additions and 12 deletions

View File

@@ -76,8 +76,8 @@ type_size(const struct glsl_type *type)
return 0;
}
static void
assign_var_locations(struct exec_list *var_list, unsigned *size)
void
nir_assign_var_locations_scalar(struct exec_list *var_list, unsigned *size)
{
unsigned location = 0;
@@ -96,14 +96,6 @@ assign_var_locations(struct exec_list *var_list, unsigned *size)
*size = location;
}
static void
assign_var_locations_shader(nir_shader *shader)
{
assign_var_locations(&shader->inputs, &shader->num_inputs);
assign_var_locations(&shader->outputs, &shader->num_outputs);
assign_var_locations(&shader->uniforms, &shader->num_uniforms);
}
static bool
deref_has_indirect(nir_deref_var *deref)
{
@@ -304,8 +296,6 @@ nir_lower_io_impl(nir_function_impl *impl)
void
nir_lower_io(nir_shader *shader)
{
assign_var_locations_shader(shader);
nir_foreach_overload(shader, overload) {
if (overload->impl)
nir_lower_io_impl(overload->impl);