From: Jason Ekstrand Date: Thu, 18 Feb 2016 19:42:36 +0000 (-0800) Subject: nir/gather_info: Count textures and images X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=79c0781f44af2a93473c68cf317bb6844f31cfc8;p=mesa.git nir/gather_info: Count textures and images --- 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); }