Lines Matching refs:block
33 /* Max counters per HW block */
40 struct r600_perfcounter_block *block = pc->blocks;
44 for (bid = 0; bid < pc->num_blocks; ++bid, ++block) {
45 unsigned total = block->num_groups * block->num_selectors;
49 return block;
53 *base_gid += block->num_groups;
63 struct r600_perfcounter_block *block = pc->blocks;
65 for (bid = 0; bid < pc->num_blocks; ++bid, ++block) {
66 if (*index < block->num_groups)
67 return block;
68 *index -= block->num_groups;
76 struct r600_perfcounter_block *block;
140 struct r600_perfcounter_block *block = group->block;
148 pc->emit_select(ctx, block, group->num_counters, group->selectors);
168 struct r600_perfcounter_block *block = group->block;
172 if ((block->flags & R600_PC_BLOCK_SE) && (group->se < 0))
180 pc->emit_read(ctx, block,
184 } while (group->instance < 0 && ++instance < block->num_instances);
235 struct r600_perfcounter_block *block,
241 if (group->block == block && group->sub_gid == sub_gid)
250 group->block = block;
253 if (block->flags & R600_PC_BLOCK_SHADER) {
254 unsigned sub_gids = block->num_instances;
259 if (block->flags & R600_PC_BLOCK_SE_GROUPS)
275 if (block->flags & R600_PC_BLOCK_SHADER_WINDOWED && !query->shaders) {
281 if (block->flags & R600_PC_BLOCK_SE_GROUPS) {
282 group->se = sub_gid / block->num_instances;
283 sub_gid = sub_gid % block->num_instances;
288 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) {
307 struct r600_perfcounter_block *block;
332 block = lookup_counter(pc, query_types[i] - R600_QUERY_FIRST_PERFCOUNTER,
334 if (!block)
337 sub_gid = sub_index / block->num_selectors;
338 sub_index = sub_index % block->num_selectors;
340 group = get_group_state(screen, query, block, sub_gid);
344 if (group->num_counters >= block->num_counters) {
347 block->basename);
363 struct r600_perfcounter_block *block = group->block;
367 if ((block->flags & R600_PC_BLOCK_SE) && group->se < 0)
370 instances *= block->num_instances;
376 pc->get_size(block, group->num_counters, group->selectors,
394 struct r600_perfcounter_block *block;
396 block = lookup_counter(pc, query_types[i] - R600_QUERY_FIRST_PERFCOUNTER,
399 sub_gid = sub_index / block->num_selectors;
400 sub_index = sub_index % block->num_selectors;
402 group = get_group_state(screen, query, block, sub_gid);
414 if ((block->flags & R600_PC_BLOCK_SE) && group->se < 0)
417 counter->qwords *= block->num_instances;
431 struct r600_perfcounter_block *block)
439 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS)
440 groups_instance = block->num_instances;
441 if (block->flags & R600_PC_BLOCK_SE_GROUPS)
443 if (block->flags & R600_PC_BLOCK_SHADER)
446 namelen = strlen(block->basename);
447 block->group_name_stride = namelen + 1;
448 if (block->flags & R600_PC_BLOCK_SHADER)
449 block->group_name_stride += 3;
450 if (block->flags & R600_PC_BLOCK_SE_GROUPS) {
452 block->group_name_stride += 1;
454 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS)
455 block->group_name_stride += 1;
457 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) {
459 block->group_name_stride += 2;
462 block->group_names = MALLOC(block->num_groups * block->group_name_stride);
463 if (!block->group_names)
466 groupname = block->group_names;
472 strcpy(groupname, block->basename);
475 if (block->flags & R600_PC_BLOCK_SHADER) {
480 if (block->flags & R600_PC_BLOCK_SE_GROUPS) {
482 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS)
486 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS)
489 groupname += block->group_name_stride;
494 assert(block->num_selectors <= 1000);
495 block->selector_name_stride = block->group_name_stride + 4;
496 block->selector_names = MALLOC(block->num_groups * block->num_selectors *
497 block->selector_name_stride);
498 if (!block->selector_names)
501 groupname = block->group_names;
502 p = block->selector_names;
503 for (i = 0; i < block->num_groups; ++i) {
504 for (j = 0; j < block->num_selectors; ++j) {
506 p += block->selector_name_stride;
508 groupname += block->group_name_stride;
519 struct r600_perfcounter_block *block;
536 block = lookup_counter(pc, index, &base_gid, &sub);
537 if (!block)
540 if (!block->selector_names) {
541 if (!r600_init_block_names(screen, block))
544 info->name = block->selector_names + sub * block->selector_name_stride;
549 info->group_id = base_gid + sub / block->num_selectors;
551 if (sub > 0 && sub + 1 < block->num_selectors * block->num_groups)
561 struct r600_perfcounter_block *block;
569 block = lookup_group(pc, &index);
570 if (!block)
573 if (!block->group_names) {
574 if (!r600_init_block_names(screen, block))
577 info->name = block->group_names + index * block->group_name_stride;
578 info->num_queries = block->num_selectors;
579 info->max_active_queries = block->num_counters;
608 struct r600_perfcounter_block *block = &pc->blocks[pc->num_blocks];
612 block->basename = name;
613 block->flags = flags;
614 block->num_counters = counters;
615 block->num_selectors = selectors;
616 block->num_instances = MAX2(instances, 1);
617 block->data = data;
619 if (pc->separate_se && (block->flags & R600_PC_BLOCK_SE))
620 block->flags |= R600_PC_BLOCK_SE_GROUPS;
621 if (pc->separate_instance && block->num_instances > 1)
622 block->flags |= R600_PC_BLOCK_INSTANCE_GROUPS;
624 if (block->flags & R600_PC_BLOCK_INSTANCE_GROUPS) {
625 block->num_groups = block->num_instances;
627 block->num_groups = 1;
630 if (block->flags & R600_PC_BLOCK_SE_GROUPS)
631 block->num_groups *= rscreen->info.max_se;
632 if (block->flags & R600_PC_BLOCK_SHADER)
633 block->num_groups *= pc->num_shader_types;
636 pc->num_groups += block->num_groups;