Lines Matching refs:usage
175 * sort of complex usage.
393 * sort of complex usage.
996 struct vec_var_usage *usage =
997 rzalloc_size(mem_ctx, sizeof(*usage) +
998 num_levels * sizeof(usage->levels[0]));
1000 usage->num_levels = num_levels;
1003 usage->levels[i].array_len = glsl_get_length(type);
1008 usage->all_comps = (1 << glsl_get_components(type)) - 1;
1010 _mesa_hash_table_insert(var_usage_map, var, usage);
1012 return usage;
1050 struct vec_var_usage *usage =
1052 if (!usage)
1055 usage->has_complex_use = true;
1074 struct vec_var_usage *usage =
1076 if (!usage)
1079 usage->comps_read |= comps_read & usage->all_comps;
1080 usage->comps_written |= comps_written & usage->all_comps;
1087 if (usage->vars_copied == NULL) {
1088 usage->vars_copied = _mesa_pointer_set_create(mem_ctx);
1090 _mesa_set_add(usage->vars_copied, copy_usage);
1092 usage->has_external_copy = true;
1104 for (unsigned i = 0; i < usage->num_levels; i++) {
1105 struct array_level_usage *level = &usage->levels[i];
1278 struct vec_var_usage *usage =
1280 if (!usage)
1283 assert(usage->comps_kept == 0);
1284 if (usage->has_external_copy || usage->has_complex_use)
1285 usage->comps_kept = usage->all_comps;
1287 usage->comps_kept = usage->comps_read & usage->comps_written;
1289 for (unsigned i = 0; i < usage->num_levels; i++) {
1290 struct array_level_usage *level = &usage->levels[i];
1294 usage->has_complex_use)
1354 struct vec_var_usage *usage =
1356 if (!usage)
1361 for (unsigned i = 0; i < usage->num_levels; i++) {
1365 if (usage->levels[i].array_len == 0) {
1366 usage->comps_kept = 0;
1370 assert(usage->levels[i].array_len <= glsl_get_length(vec_type));
1371 if (usage->levels[i].array_len < glsl_get_length(vec_type))
1377 assert(usage->comps_kept == (usage->comps_kept & usage->all_comps));
1378 if (usage->comps_kept != usage->all_comps)
1381 if (usage->comps_kept == 0) {
1397 unsigned new_num_comps = util_bitcount(usage->comps_kept);
1400 for (int i = usage->num_levels - 1; i >= 0; i--) {
1401 assert(usage->levels[i].array_len > 0);
1405 if (i == usage->num_levels - 1 &&
1407 new_num_comps > 1 && usage->levels[i].array_len > 1) {
1410 usage->levels[i].array_len);
1412 new_type = glsl_array_type(new_type, usage->levels[i].array_len, 0);
1425 struct vec_var_usage *usage)
1431 for (unsigned i = 0; i < usage->num_levels; i++) {
1437 nir_src_as_uint(p->arr.index) >= usage->levels[i].array_len) {
1453 struct vec_var_usage *usage =
1455 if (!usage)
1458 return usage->comps_kept == 0 || vec_deref_is_oob(deref, usage);
1530 struct vec_var_usage *usage =
1532 if (!usage)
1535 if (usage->comps_kept == 0 || vec_deref_is_oob(deref, usage)) {
1551 if (usage->comps_kept == usage->all_comps)
1562 if (usage->comps_kept & (1u << i))
1587 if (usage->comps_kept & (1u << i)) {