From be0e3e8e09c143e9d1c49ba01f1aea1256de94cc Mon Sep 17 00:00:00 2001 From: Friedrich Vock Date: Fri, 28 Jul 2023 17:26:53 +0200 Subject: [PATCH] ac/sqtt,radv: Split internal and API hash in PSO correlations Part-of: --- src/amd/common/ac_sqtt.c | 4 ++-- src/amd/common/ac_sqtt.h | 2 +- src/amd/vulkan/layers/radv_sqtt_layer.c | 2 +- src/gallium/drivers/radeonsi/si_sqtt.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/amd/common/ac_sqtt.c b/src/amd/common/ac_sqtt.c index 98460884a2e..c0cab4f0145 100644 --- a/src/amd/common/ac_sqtt.c +++ b/src/amd/common/ac_sqtt.c @@ -121,7 +121,7 @@ ac_get_expected_buffer_size(struct radeon_info *rad_info, const struct ac_sqtt_d } bool -ac_sqtt_add_pso_correlation(struct ac_sqtt *sqtt, uint64_t pipeline_hash) +ac_sqtt_add_pso_correlation(struct ac_sqtt *sqtt, uint64_t pipeline_hash, uint64_t api_hash) { struct rgp_pso_correlation *pso_correlation = &sqtt->rgp_pso_correlation; struct rgp_pso_correlation_record *record; @@ -130,7 +130,7 @@ ac_sqtt_add_pso_correlation(struct ac_sqtt *sqtt, uint64_t pipeline_hash) if (!record) return false; - record->api_pso_hash = pipeline_hash; + record->api_pso_hash = api_hash; record->pipeline_hash[0] = pipeline_hash; record->pipeline_hash[1] = pipeline_hash; memset(record->api_level_obj_name, 0, sizeof(record->api_level_obj_name)); diff --git a/src/amd/common/ac_sqtt.h b/src/amd/common/ac_sqtt.h index ae79113c082..e80a00a9b5d 100644 --- a/src/amd/common/ac_sqtt.h +++ b/src/amd/common/ac_sqtt.h @@ -534,7 +534,7 @@ struct rgp_sqtt_marker_pipeline_bind { static_assert(sizeof(struct rgp_sqtt_marker_pipeline_bind) == 12, "rgp_sqtt_marker_pipeline_bind doesn't match RGP spec"); -bool ac_sqtt_add_pso_correlation(struct ac_sqtt *sqtt, uint64_t pipeline_hash); +bool ac_sqtt_add_pso_correlation(struct ac_sqtt *sqtt, uint64_t pipeline_hash, uint64_t api_hash); bool ac_sqtt_add_code_object_loader_event(struct ac_sqtt *sqtt, uint64_t pipeline_hash, uint64_t base_address); diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c index 726dc4372f8..77ea3665fb1 100644 --- a/src/amd/vulkan/layers/radv_sqtt_layer.c +++ b/src/amd/vulkan/layers/radv_sqtt_layer.c @@ -1159,7 +1159,7 @@ radv_register_pipeline(struct radv_device *device, struct radv_pipeline *pipelin bool result; uint64_t base_va = ~0; - result = ac_sqtt_add_pso_correlation(&device->sqtt, pipeline->pipeline_hash); + result = ac_sqtt_add_pso_correlation(&device->sqtt, pipeline->pipeline_hash, pipeline->pipeline_hash); if (!result) return VK_ERROR_OUT_OF_HOST_MEMORY; diff --git a/src/gallium/drivers/radeonsi/si_sqtt.c b/src/gallium/drivers/radeonsi/si_sqtt.c index a9524a91f49..5850e5fc92d 100644 --- a/src/gallium/drivers/radeonsi/si_sqtt.c +++ b/src/gallium/drivers/radeonsi/si_sqtt.c @@ -1082,7 +1082,7 @@ si_sqtt_register_pipeline(struct si_context* sctx, struct si_sqtt_fake_pipeline { assert(!si_sqtt_pipeline_is_registered(sctx->sqtt, pipeline->code_hash)); - bool result = ac_sqtt_add_pso_correlation(sctx->sqtt, pipeline->code_hash); + bool result = ac_sqtt_add_pso_correlation(sctx->sqtt, pipeline->code_hash, pipeline->code_hash); if (!result) return false;