Lines Matching refs:block
36 struct r600_perfcounter_block *block = pc->blocks; in lookup_counter() local
40 for (bid = 0; bid < pc->num_blocks; ++bid, ++block) { in lookup_counter()
41 unsigned total = block->num_groups * block->num_selectors; in lookup_counter()
45 return block; in lookup_counter()
49 *base_gid += block->num_groups; in lookup_counter()
59 struct r600_perfcounter_block *block = pc->blocks; in lookup_group() local
61 for (bid = 0; bid < pc->num_blocks; ++bid, ++block) { in lookup_group()
62 if (*index < block->num_groups) in lookup_group()
63 return block; in lookup_group()
64 *index -= block->num_groups; in lookup_group()
72 struct r600_perfcounter_block *block; member
136 struct r600_perfcounter_block *block = group->block; in r600_pc_query_emit_start() local
144 pc->emit_select(ctx, block, group->num_counters, group->selectors); in r600_pc_query_emit_start()
164 struct r600_perfcounter_block *block = group->block; in r600_pc_query_emit_stop() local
168 if ((block->flags & R600_PC_BLOCK_SE) && (group->se < 0)) in r600_pc_query_emit_stop()
176 pc->emit_read(ctx, block, in r600_pc_query_emit_stop()
180 } while (group->instance < 0 && ++instance < block->num_instances); in r600_pc_query_emit_stop()
231 struct r600_perfcounter_block *block, in get_group_state() argument
237 if (group->block == block && group->sub_gid == sub_gid) in get_group_state()
246 group->block = block; in get_group_state()
249 if (block->flags & R600_PC_BLOCK_SHADER) { in get_group_state()
250 unsigned sub_gids = block->num_instances; in get_group_state()
255 if (block->flags & R600_PC_BLOCK_SE_GROUPS) in get_group_state()
271 if (block->flags & R600_PC_BLOCK_SHADER_WINDOWED && !query->shaders) { in get_group_state()
277 if (block->flags & R600_PC_BLOCK_SE_GROUPS) { in get_group_state()
278 group->se = sub_gid / block->num_instances; in get_group_state()
279 sub_gid = sub_gid % block->num_instances; in get_group_state()
284 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) { in get_group_state()
303 struct r600_perfcounter_block *block; in si_create_batch_query() local
328 block = lookup_counter(pc, query_types[i] - R600_QUERY_FIRST_PERFCOUNTER, in si_create_batch_query()
330 if (!block) in si_create_batch_query()
333 sub_gid = sub_index / block->num_selectors; in si_create_batch_query()
334 sub_index = sub_index % block->num_selectors; in si_create_batch_query()
336 group = get_group_state(screen, query, block, sub_gid); in si_create_batch_query()
340 if (group->num_counters >= block->num_counters) { in si_create_batch_query()
343 block->basename); in si_create_batch_query()
359 struct r600_perfcounter_block *block = group->block; in si_create_batch_query() local
363 if ((block->flags & R600_PC_BLOCK_SE) && group->se < 0) in si_create_batch_query()
366 instances *= block->num_instances; in si_create_batch_query()
372 pc->get_size(block, group->num_counters, group->selectors, in si_create_batch_query()
390 struct r600_perfcounter_block *block; in si_create_batch_query() local
392 block = lookup_counter(pc, query_types[i] - R600_QUERY_FIRST_PERFCOUNTER, in si_create_batch_query()
395 sub_gid = sub_index / block->num_selectors; in si_create_batch_query()
396 sub_index = sub_index % block->num_selectors; in si_create_batch_query()
398 group = get_group_state(screen, query, block, sub_gid); in si_create_batch_query()
410 if ((block->flags & R600_PC_BLOCK_SE) && group->se < 0) in si_create_batch_query()
413 counter->qwords *= block->num_instances; in si_create_batch_query()
427 struct r600_perfcounter_block *block) in r600_init_block_names() argument
435 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) in r600_init_block_names()
436 groups_instance = block->num_instances; in r600_init_block_names()
437 if (block->flags & R600_PC_BLOCK_SE_GROUPS) in r600_init_block_names()
439 if (block->flags & R600_PC_BLOCK_SHADER) in r600_init_block_names()
442 namelen = strlen(block->basename); in r600_init_block_names()
443 block->group_name_stride = namelen + 1; in r600_init_block_names()
444 if (block->flags & R600_PC_BLOCK_SHADER) in r600_init_block_names()
445 block->group_name_stride += 3; in r600_init_block_names()
446 if (block->flags & R600_PC_BLOCK_SE_GROUPS) { in r600_init_block_names()
448 block->group_name_stride += 1; in r600_init_block_names()
450 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) in r600_init_block_names()
451 block->group_name_stride += 1; in r600_init_block_names()
453 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) { in r600_init_block_names()
455 block->group_name_stride += 2; in r600_init_block_names()
458 block->group_names = MALLOC(block->num_groups * block->group_name_stride); in r600_init_block_names()
459 if (!block->group_names) in r600_init_block_names()
462 groupname = block->group_names; in r600_init_block_names()
468 strcpy(groupname, block->basename); in r600_init_block_names()
471 if (block->flags & R600_PC_BLOCK_SHADER) { in r600_init_block_names()
476 if (block->flags & R600_PC_BLOCK_SE_GROUPS) { in r600_init_block_names()
478 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) in r600_init_block_names()
482 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) in r600_init_block_names()
485 groupname += block->group_name_stride; in r600_init_block_names()
490 assert(block->num_selectors <= 1000); in r600_init_block_names()
491 block->selector_name_stride = block->group_name_stride + 4; in r600_init_block_names()
492 block->selector_names = MALLOC(block->num_groups * block->num_selectors * in r600_init_block_names()
493 block->selector_name_stride); in r600_init_block_names()
494 if (!block->selector_names) in r600_init_block_names()
497 groupname = block->group_names; in r600_init_block_names()
498 p = block->selector_names; in r600_init_block_names()
499 for (i = 0; i < block->num_groups; ++i) { in r600_init_block_names()
500 for (j = 0; j < block->num_selectors; ++j) { in r600_init_block_names()
502 p += block->selector_name_stride; in r600_init_block_names()
504 groupname += block->group_name_stride; in r600_init_block_names()
515 struct r600_perfcounter_block *block; in si_get_perfcounter_info() local
532 block = lookup_counter(pc, index, &base_gid, &sub); in si_get_perfcounter_info()
533 if (!block) in si_get_perfcounter_info()
536 if (!block->selector_names) { in si_get_perfcounter_info()
537 if (!r600_init_block_names(screen, block)) in si_get_perfcounter_info()
540 info->name = block->selector_names + sub * block->selector_name_stride; in si_get_perfcounter_info()
545 info->group_id = base_gid + sub / block->num_selectors; in si_get_perfcounter_info()
547 if (sub > 0 && sub + 1 < block->num_selectors * block->num_groups) in si_get_perfcounter_info()
557 struct r600_perfcounter_block *block; in si_get_perfcounter_group_info() local
565 block = lookup_group(pc, &index); in si_get_perfcounter_group_info()
566 if (!block) in si_get_perfcounter_group_info()
569 if (!block->group_names) { in si_get_perfcounter_group_info()
570 if (!r600_init_block_names(screen, block)) in si_get_perfcounter_group_info()
573 info->name = block->group_names + index * block->group_name_stride; in si_get_perfcounter_group_info()
574 info->num_queries = block->num_selectors; in si_get_perfcounter_group_info()
575 info->max_active_queries = block->num_counters; in si_get_perfcounter_group_info()
604 struct r600_perfcounter_block *block = &pc->blocks[pc->num_blocks]; in si_perfcounters_add_block() local
608 block->basename = name; in si_perfcounters_add_block()
609 block->flags = flags; in si_perfcounters_add_block()
610 block->num_counters = counters; in si_perfcounters_add_block()
611 block->num_selectors = selectors; in si_perfcounters_add_block()
612 block->num_instances = MAX2(instances, 1); in si_perfcounters_add_block()
613 block->data = data; in si_perfcounters_add_block()
615 if (pc->separate_se && (block->flags & R600_PC_BLOCK_SE)) in si_perfcounters_add_block()
616 block->flags |= R600_PC_BLOCK_SE_GROUPS; in si_perfcounters_add_block()
617 if (pc->separate_instance && block->num_instances > 1) in si_perfcounters_add_block()
618 block->flags |= R600_PC_BLOCK_INSTANCE_GROUPS; in si_perfcounters_add_block()
620 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) { in si_perfcounters_add_block()
621 block->num_groups = block->num_instances; in si_perfcounters_add_block()
623 block->num_groups = 1; in si_perfcounters_add_block()
626 if (block->flags & R600_PC_BLOCK_SE_GROUPS) in si_perfcounters_add_block()
627 block->num_groups *= sscreen->info.max_se; in si_perfcounters_add_block()
628 if (block->flags & R600_PC_BLOCK_SHADER) in si_perfcounters_add_block()
629 block->num_groups *= pc->num_shader_types; in si_perfcounters_add_block()
632 pc->num_groups += block->num_groups; in si_perfcounters_add_block()