diff --git a/.pick_status.json b/.pick_status.json index 24012b540f2..5f65ff4fcc4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1334,7 +1334,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 17f3544d1d2..f6b1c8a34f4 100644 --- a/src/util/perf/u_trace.c +++ b/src/util/perf/u_trace.c @@ -980,11 +980,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 5921841ae5b..13705afe424 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