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:
committed by
ChuanYu Tseng (Max)
parent
8bdbd12508
commit
f10244d8d9
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user