ac/sqtt,radv: Split internal and API hash in PSO correlations
authorFriedrich Vock <friedrich.vock@gmx.de>
Fri, 28 Jul 2023 15:26:53 +0000 (17:26 +0200)
committerMarge Bot <emma+marge@anholt.net>
Tue, 22 Aug 2023 11:33:11 +0000 (11:33 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24371>

src/amd/common/ac_sqtt.c
src/amd/common/ac_sqtt.h
src/amd/vulkan/layers/radv_sqtt_layer.c
src/gallium/drivers/radeonsi/si_sqtt.c

index 9846088..c0cab4f 100644 (file)
@@ -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));
index ae79113..e80a00a 100644 (file)
@@ -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);
index 726dc43..77ea366 100644 (file)
@@ -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;
 
index a9524a9..5850e5f 100644 (file)
@@ -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;