diff --git a/.pick_status.json b/.pick_status.json index 2fd5e766d2c..f8ddc9ed9fe 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4574,7 +4574,7 @@ "description": "u_trace: Indirect capture fixes", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "0a17035b5cd3e181a2bf4ab6feea8b4d5763b613", "notes": null diff --git a/src/util/perf/u_trace.c b/src/util/perf/u_trace.c index 88be14fbd01..f2cad023328 100644 --- a/src/util/perf/u_trace.c +++ b/src/util/perf/u_trace.c @@ -990,11 +990,13 @@ u_trace_appendv(struct u_trace *ut, tp->flags); if (ut->utctx->enabled_traces & U_TRACE_TYPE_INDIRECTS) { + uint64_t dst_offset = 0; for (unsigned i = 0; i < n_indirects; i++) { - ut->utctx->capture_data(ut, cs, chunk->indirects, - ut->utctx->max_indirect_size_bytes * tp_idx, - addresses[i].bo, addresses[i].offset, - indirect_sizes_B[i]); + ut->utctx->capture_data( + ut, cs, chunk->indirects, + ut->utctx->max_indirect_size_bytes * tp_idx + dst_offset, + addresses[i].bo, addresses[i].offset, indirect_sizes_B[i]); + dst_offset += indirect_sizes_B[i]; } chunk->has_indirect |= n_indirects > 0; } diff --git a/src/util/perf/u_trace.py b/src/util/perf/u_trace.py index 7502d60ec3d..c4801f5242c 100644 --- a/src/util/perf/u_trace.py +++ b/src/util/perf/u_trace.py @@ -89,7 +89,7 @@ class Tracepoint(object): indirect_sizes = [] for indirect in self.indirect_args: indirect.indirect_offset = ' + '.join(indirect_sizes) if len(indirect_sizes) > 0 else 0 - indirect_sizes.append(f"sizeof({indirect.type}") + indirect_sizes.append(f"sizeof({indirect.type})") self.tp_perfetto = tp_perfetto self.tp_markers = tp_markers