Lines Matching refs:pc

37 lookup_counter(struct r600_perfcounters *pc, unsigned index,
40 struct r600_perfcounter_block *block = pc->blocks;
44 for (bid = 0; bid < pc->num_blocks; ++bid, ++block) {
60 lookup_group(struct r600_perfcounters *pc, unsigned *index)
63 struct r600_perfcounter_block *block = pc->blocks;
65 for (bid = 0; bid < pc->num_blocks; ++bid, ++block) {
130 struct r600_perfcounters *pc = ctx->screen->perfcounters;
137 pc->emit_shaders(ctx, query->shaders);
145 pc->emit_instance(ctx, group->se, group->instance);
148 pc->emit_select(ctx, block, group->num_counters, group->selectors);
152 pc->emit_instance(ctx, -1, -1);
154 pc->emit_start(ctx, buffer, va);
161 struct r600_perfcounters *pc = ctx->screen->perfcounters;
165 pc->emit_stop(ctx, buffer, va);
179 pc->emit_instance(ctx, se, instance);
180 pc->emit_read(ctx, block,
188 pc->emit_instance(ctx, -1, -1);
306 struct r600_perfcounters *pc = screen->perfcounters;
313 if (!pc)
332 block = lookup_counter(pc, query_types[i] - R600_QUERY_FIRST_PERFCOUNTER,
355 query->b.num_cs_dw_begin = pc->num_start_cs_dwords;
356 query->b.num_cs_dw_end = pc->num_stop_cs_dwords;
358 query->b.num_cs_dw_begin += pc->num_instance_cs_dwords; /* conservative */
359 query->b.num_cs_dw_end += pc->num_instance_cs_dwords;
376 pc->get_size(block, group->num_counters, group->selectors,
380 query->b.num_cs_dw_begin += pc->num_instance_cs_dwords; /* conservative */
381 query->b.num_cs_dw_end += instances * pc->num_instance_cs_dwords;
387 query->b.num_cs_dw_begin += pc->num_shaders_cs_dwords;
396 block = lookup_counter(pc, query_types[i] - R600_QUERY_FIRST_PERFCOUNTER,
518 struct r600_perfcounters *pc = screen->perfcounters;
522 if (!pc)
528 for (bid = 0; bid < pc->num_blocks; ++bid) {
529 num_queries += pc->blocks[bid].num_selectors *
530 pc->blocks[bid].num_groups;
536 block = lookup_counter(pc, index, &base_gid, &sub);
560 struct r600_perfcounters *pc = screen->perfcounters;
563 if (!pc)
567 return pc->num_groups;
569 block = lookup_group(pc, &index);
589 bool r600_perfcounters_init(struct r600_perfcounters *pc,
592 pc->blocks = CALLOC(num_blocks, sizeof(struct r600_perfcounter_block));
593 if (!pc->blocks)
596 pc->separate_se = debug_get_bool_option("RADEON_PC_SEPARATE_SE", false);
597 pc->separate_instance = debug_get_bool_option("RADEON_PC_SEPARATE_INSTANCE", false);
603 struct r600_perfcounters *pc,
608 struct r600_perfcounter_block *block = &pc->blocks[pc->num_blocks];
619 if (pc->separate_se && (block->flags & R600_PC_BLOCK_SE))
621 if (pc->separate_instance && block->num_instances > 1)
633 block->num_groups *= pc->num_shader_types;
635 ++pc->num_blocks;
636 pc->num_groups += block->num_groups;
639 void r600_perfcounters_do_destroy(struct r600_perfcounters *pc)
643 for (i = 0; i < pc->num_blocks; ++i) {
644 FREE(pc->blocks[i].group_names);
645 FREE(pc->blocks[i].selector_names);
647 FREE(pc->blocks);
648 FREE(pc);