Lines Matching refs:pool
397 radv_pc_deinit_query_pool(struct radv_pc_query_pool *pool)
399 free(pool->counters);
400 free(pool->pc_regs);
405 const VkQueryPoolCreateInfo *pCreateInfo, struct radv_pc_query_pool *pool)
416 &pool->num_pc_regs, &pool->pc_regs);
420 pool->num_passes = radv_get_num_counter_passes(pdevice, pool->num_pc_regs, pool->pc_regs);
422 uint32_t *pc_reg_offsets = malloc(pool->num_pc_regs * sizeof(uint32_t));
427 for (unsigned i = 0; i < pool->num_pc_regs; ++i) {
428 enum ac_pc_gpu_block block = pool->pc_regs[i] >> 16;
437 pool->b.stride = offset + 8 * pool->num_passes;
439 pool->num_counters = perf_info->counterIndexCount;
440 pool->counters = malloc(pool->num_counters * sizeof(struct radv_perfcounter_impl));
441 if (!pool->counters) {
446 for (unsigned i = 0; i < pool->num_counters; ++i) {
447 pool->counters[i] = pdevice->perfcounters[perf_info->pCounterIndices[i]].impl;
449 for (unsigned j = 0; j < ARRAY_SIZE(pool->counters[i].regs); ++j) {
450 uint32_t reg = pool->counters[i].regs[j];
455 for (k = 0; k < pool->num_pc_regs; ++k)
456 if (pool->pc_regs[k] == reg)
458 pool->counters[i].regs[j] = pc_reg_offsets[k];
579 radv_pc_stop_and_sample(struct radv_cmd_buffer *cmd_buffer, struct radv_pc_query_pool *pool,
597 for (unsigned pass = 0; pass < pool->num_passes; ++pass) {
610 for (unsigned i = 0; i < pool->num_pc_regs;) {
611 enum ac_pc_gpu_block block = G_REG_BLOCK(pool->pc_regs[i]);
617 while (cnt < pool->num_pc_regs - i && block == G_REG_BLOCK(pool->pc_regs[i + cnt]))
631 uint64_t signal_va = va + pool->b.stride - 8 - 8 * pass;
647 radv_pc_begin_query(struct radv_cmd_buffer *cmd_buffer, struct radv_pc_query_pool *pool,
658 10 * pool->num_passes + /* COND_EXECs */
659 pool->b.stride / 8 * (5 + 8));
661 radv_cs_add_buffer(cmd_buffer->device->ws, cmd_buffer->cs, pool->b.bo);
681 for (unsigned pass = 0; pass < pool->num_passes; ++pass) {
693 for (unsigned i = 0; i < pool->num_pc_regs;) {
694 enum ac_pc_gpu_block block = G_REG_BLOCK(pool->pc_regs[i]);
699 while (cnt < pool->num_pc_regs - i && block == G_REG_BLOCK(pool->pc_regs[i + cnt]))
704 radv_emit_select(cmd_buffer, ac_block, pass_reg_cnt, pool->pc_regs + i + offset);
717 radv_pc_stop_and_sample(cmd_buffer, pool, va, false);
728 radv_pc_end_query(struct radv_cmd_buffer *cmd_buffer, struct radv_pc_query_pool *pool, uint64_t va)
736 5 * pool->num_passes + /* COND_EXECs */
737 pool->b.stride / 8 * 8);
739 radv_cs_add_buffer(cmd_buffer->device->ws, cmd_buffer->cs, pool->b.bo);
751 radv_pc_stop_and_sample(cmd_buffer, pool, va, true);