intel/perf: add OA A counter type
On Gfx12.5 products, we'll need to capture a couple of A counters that are not captured in MI_RPC reports. Those are actually global, previously all A counters were per context. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16144>
This commit is contained in:
committed by
Marge Bot
parent
376e420abb
commit
6f63bc38e7
@@ -1151,6 +1151,8 @@ query_accumulator_offset(const struct intel_perf_query_info *query,
|
||||
switch (type) {
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_PERFCNT:
|
||||
return query->perfcnt_offset + index;
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_A:
|
||||
return query->a_offset + index;
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_B:
|
||||
return query->b_offset + index;
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_C:
|
||||
@@ -1238,6 +1240,9 @@ intel_perf_query_result_print_fields(const struct intel_perf_query_info *query,
|
||||
fprintf(stderr, " TS: 0x%08x\n", *(value32 + 1));
|
||||
fprintf(stderr, " CLK: 0x%08x\n", *(value32 + 3));
|
||||
break;
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_A:
|
||||
fprintf(stderr, "A%u: 0x%08x\n", field->index, *value32);
|
||||
break;
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_B:
|
||||
fprintf(stderr, "B%u: 0x%08x\n", field->index, *value32);
|
||||
break;
|
||||
|
||||
@@ -277,6 +277,7 @@ struct intel_perf_query_field_layout {
|
||||
INTEL_PERF_QUERY_FIELD_TYPE_MI_RPC,
|
||||
INTEL_PERF_QUERY_FIELD_TYPE_SRM_PERFCNT,
|
||||
INTEL_PERF_QUERY_FIELD_TYPE_SRM_RPSTAT,
|
||||
INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_A,
|
||||
INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_B,
|
||||
INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_C,
|
||||
} type;
|
||||
|
||||
@@ -735,6 +735,7 @@ snapshot_query_layout(struct intel_perf_context *perf_ctx,
|
||||
break;
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_PERFCNT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_RPSTAT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_A:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_B:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_C:
|
||||
perf_cfg->vtbl.store_register_mem(perf_ctx->ctx, query->oa.bo,
|
||||
|
||||
@@ -89,10 +89,13 @@ anv_physical_device_init_perf(struct anv_physical_device *device, int fd)
|
||||
break;
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_PERFCNT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_RPSTAT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_A:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_B:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_C:
|
||||
device->n_perf_query_commands += field->size / 4;
|
||||
break;
|
||||
default:
|
||||
unreachable("Unhandled register type");
|
||||
}
|
||||
}
|
||||
device->n_perf_query_commands *= 2; /* Begin & End */
|
||||
|
||||
@@ -884,6 +884,7 @@ emit_perf_intel_query(struct anv_cmd_buffer *cmd_buffer,
|
||||
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_PERFCNT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_RPSTAT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_A:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_B:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_C: {
|
||||
struct anv_address addr = anv_address_add(data_addr, field->location);
|
||||
@@ -1042,6 +1043,7 @@ void genX(CmdBeginQueryIndexedEXT)(
|
||||
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_PERFCNT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_RPSTAT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_A:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_B:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_C:
|
||||
dws =
|
||||
@@ -1193,6 +1195,7 @@ void genX(CmdEndQueryIndexedEXT)(
|
||||
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_PERFCNT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_RPSTAT:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_A:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_B:
|
||||
case INTEL_PERF_QUERY_FIELD_TYPE_SRM_OA_C:
|
||||
dws =
|
||||
|
||||
Reference in New Issue
Block a user