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