intel/perf: add performance query layout using MI_SRM

For all generations supported we had a layout describing what register
to store to implement a MI_RPC replacement.

This is because, on Gen12 we need to snapshot OAG registers to get
correct values for the perf equations. There, the MI_RPC instruction
captures OAR register which do not have all the information we need.

v2: Fix commented code for debug (Marcin)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6518>
This commit is contained in:
Lionel Landwerlin
2020-09-07 15:56:54 +03:00
committed by Marge Bot
parent f32d1bf529
commit 8750f43a90
5 changed files with 118 additions and 14 deletions

View File

@@ -518,7 +518,8 @@ VkResult genX(GetQueryPoolResults)(
const uint32_t *end = pool->bo->map + khr_perf_query_oa_offset(pool, firstQuery + i, p, true);
struct gen_perf_query_result result;
gen_perf_query_result_clear(&result);
gen_perf_query_result_accumulate(&result, pool->pass_query[p], begin, end);
gen_perf_query_result_accumulate(&result, pool->pass_query[p],
&device->info, begin, end);
anv_perf_write_pass_results(pdevice->perf, pool, p, &result, pData);
}
break;
@@ -536,7 +537,8 @@ VkResult genX(GetQueryPoolResults)(
const uint32_t *rpstat_end = query_data + intel_perf_mi_rpc_offset(true);
struct gen_perf_query_result result;
gen_perf_query_result_clear(&result);
gen_perf_query_result_accumulate(&result, query, oa_begin, oa_end);
gen_perf_query_result_accumulate(&result, query, &device->info,
oa_begin, oa_end);
gen_perf_query_result_read_frequencies(&result, &device->info,
oa_begin, oa_end);
gen_perf_query_result_read_gt_frequency(&result, &device->info,