amd/vpelib: Setup cost profiling support

Add logs to profile registers writes.

Reviewed-by: Roy Chan <Roy.Chan@amd.com>
Reviewed-by: Jesse Agate <Jesse.Agate@amd.com>
Acked-by: ChuanYu Tseng <ChuanYu.Tseng@amd.com>
Signed-off-by: Nagulendran, Iswara <Iswara.Nagulendran@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35012>
This commit is contained in:
Nagulendran, Iswara
2025-04-29 14:10:10 -04:00
committed by ChuanYu Tseng (Max)
parent 8bdbd12508
commit f10244d8d9
6 changed files with 39 additions and 0 deletions
@@ -46,6 +46,9 @@ enum vpe_status vpe10_vpe_desc_writer_init(
writer->base_gpu_va = buf->gpu_va;
writer->buf = buf;
writer->num_config_desc = 0;
#ifdef VPE_REGISTER_PROFILE
writer->reuse_num_config_dec = 0;
#endif
writer->plane_desc_added = false;
writer->status = VPE_STATUS_OK;
@@ -123,6 +126,10 @@ void vpe10_vpe_desc_writer_add_config_desc(
writer->buf->gpu_va += size;
writer->buf->size -= size;
writer->num_config_desc++;
#ifdef VPE_REGISTER_PROFILE
if (reuse)
writer->reuse_num_config_dec++;
#endif
}
void vpe10_vpe_desc_writer_complete(struct vpe_desc_writer *writer)
@@ -47,6 +47,9 @@ enum vpe_status vpe11_vpe_desc_writer_init(
writer->base_gpu_va = buf->gpu_va;
writer->buf = buf;
writer->num_config_desc = 0;
#ifdef VPE_REGISTER_PROFILE
writer->reuse_num_config_dec = 0;
#endif
writer->plane_desc_added = false;
writer->status = VPE_STATUS_OK;
+6
View File
@@ -207,6 +207,9 @@ void config_writer_fill_direct_config_packet_header(
return;
}
#ifdef VPE_REGISTER_PROFILE
writer->register_count += packet->bits.VPEP_CONFIG_DATA_SIZE + 1;
#endif
cmd_space = (uint32_t *)(uintptr_t)writer->buf->cpu_va;
*cmd_space++ = packet->u32all;
writer->buf->cpu_va += w_size;
@@ -241,6 +244,9 @@ void config_writer_fill_direct_config_packet(
return;
}
#ifdef VPE_REGISTER_PROFILE
writer->register_count++;
#endif
cmd_space = (uint32_t *)(uintptr_t)writer->buf->cpu_va;
*cmd_space++ = packet->u32all; // Write header
writer->buf->cpu_va += sizeof(uint32_t);
@@ -91,6 +91,12 @@ struct config_writer {
void *callback_ctx;
config_callback_t callback;
enum vpe_status status;
#ifdef VPE_REGISTER_PROFILE
uint64_t register_count;
uint64_t total_config_count;
uint64_t reused_config_count;
#endif
};
/** initialize the config writer.
@@ -41,6 +41,9 @@ struct vpe_desc_writer {
uint64_t base_cpu_va;
uint32_t num_config_desc;
#ifdef VPE_REGISTER_PROFILE
uint32_t reuse_num_config_dec;
#endif
bool plane_desc_added;
enum vpe_status status;
+14
View File
@@ -654,6 +654,11 @@ enum vpe_status vpe_build_commands(
vpe_priv = container_of(vpe, struct vpe_priv, pub);
#ifdef VPE_REGISTER_PROFILE
vpe_priv->config_writer.register_count = 0;
vpe_priv->config_writer.total_config_count = 0;
vpe_priv->config_writer.reused_config_count = 0;
#endif
if (!vpe_priv->ops_support) {
VPE_ASSERT(vpe_priv->ops_support);
status = VPE_STATUS_NOT_SUPPORTED;
@@ -788,7 +793,16 @@ enum vpe_status vpe_build_commands(
}
}
}
#ifdef VPE_REGISTER_PROFILE
vpe_priv->config_writer.total_config_count += vpe_priv->vpe_desc_writer.num_config_desc;
vpe_priv->config_writer.reused_config_count += vpe_priv->vpe_desc_writer.reuse_num_config_dec;
#endif
}
#ifdef VPE_REGISTER_PROFILE
vpe_log("Total Registers Accessed: % d\n", vpe_priv->config_writer.register_count);
vpe_log("Total Config Descriptors: % d\n", vpe_priv->config_writer.total_config_count);
vpe_log("Total Re-used Config Descriptors: % d\n", vpe_priv->config_writer.reused_config_count);
#endif
if ((status == VPE_STATUS_OK) && (vpe_priv->collaboration_mode == true)) {
status = builder->build_collaborate_sync_cmd(vpe_priv, &curr_bufs);
if (status != VPE_STATUS_OK) {