summaryrefslogtreecommitdiffstats
path: root/src/compiler/nir
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/nir')
-rw-r--r--src/compiler/nir/nir_gather_info.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c
index b84915c2d2b..8f0abd33ce6 100644
--- a/src/compiler/nir/nir_gather_info.c
+++ b/src/compiler/nir/nir_gather_info.c
@@ -105,5 +105,22 @@ nir_shader_gather_info(nir_shader *shader, nir_function_impl *entrypoint)
foreach_list_typed(nir_variable, var, node, &shader->system_values)
shader->info.system_values_read |= nir_variable_get_io_mask(var, shader->stage);
+ shader->info.num_textures = 0;
+ shader->info.num_images = 0;
+ nir_foreach_variable(var, &shader->uniforms) {
+ const struct glsl_type *type = var->type;
+ unsigned count = 1;
+ if (glsl_type_is_array(type)) {
+ count = glsl_get_length(type);
+ type = glsl_get_array_element(type);
+ }
+
+ if (glsl_type_is_image(type)) {
+ shader->info.num_images += count;
+ } else if (glsl_type_is_sampler(type)) {
+ shader->info.num_textures += count;
+ }
+ }
+
nir_foreach_block(entrypoint, gather_info_block, shader);
}