From: Connor Abbott <connor.abb...@intel.com> --- src/glsl/nir/nir.c | 4 ++++ src/glsl/nir/nir.h | 6 ++++++ src/glsl/nir/nir_lower_variables_scalar.c | 10 ++++++---- 3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c index dd67e0c..cad8c6a 100644 --- a/src/glsl/nir/nir.c +++ b/src/glsl/nir/nir.c @@ -46,6 +46,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; } diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h index b8041bb..34fcf35 100644 --- a/src/glsl/nir/nir.h +++ b/src/glsl/nir/nir.h @@ -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) \ diff --git a/src/glsl/nir/nir_lower_variables_scalar.c b/src/glsl/nir/nir_lower_variables_scalar.c index 97b68d3..701b656 100644 --- a/src/glsl/nir/nir_lower_variables_scalar.c +++ b/src/glsl/nir/nir_lower_variables_scalar.c @@ -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 -- 2.2.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev