mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 08:58:02 +02:00
nir: keep track of the number of input, output, and uniform slots
This commit is contained in:
parent
c2f36cf125
commit
494790b2a9
3 changed files with 16 additions and 4 deletions
|
|
@ -49,6 +49,10 @@ nir_shader_create(void *mem_ctx)
|
|||
exec_list_make_empty(&shader->system_values);
|
||||
shader->reg_alloc = 0;
|
||||
|
||||
shader->num_inputs = 0;
|
||||
shader->num_outputs = 0;
|
||||
shader->num_uniforms = 0;
|
||||
|
||||
return shader;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1138,6 +1138,12 @@ typedef struct nir_shader {
|
|||
|
||||
/** next available global register index */
|
||||
unsigned reg_alloc;
|
||||
|
||||
/**
|
||||
* the highest index a load_input_*, load_uniform_*, etc. intrinsic can
|
||||
* access plus one
|
||||
*/
|
||||
unsigned num_inputs, num_uniforms, num_outputs;
|
||||
} nir_shader;
|
||||
|
||||
#define nir_foreach_overload(shader, overload) \
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ type_size(const struct glsl_type *type)
|
|||
*/
|
||||
|
||||
static void
|
||||
assign_var_locations(struct hash_table *ht)
|
||||
assign_var_locations(struct hash_table *ht, unsigned *size)
|
||||
{
|
||||
unsigned location = 0;
|
||||
|
||||
|
|
@ -93,14 +93,16 @@ assign_var_locations(struct hash_table *ht)
|
|||
var->data.driver_location = location;
|
||||
location += type_size(var->type);
|
||||
}
|
||||
|
||||
*size = location;
|
||||
}
|
||||
|
||||
static void
|
||||
assign_var_locations_shader(nir_shader *shader)
|
||||
{
|
||||
assign_var_locations(shader->inputs);
|
||||
assign_var_locations(shader->outputs);
|
||||
assign_var_locations(shader->uniforms);
|
||||
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 void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue