panvk/perfetto: Handle re-submittable command buffers
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36609>
This commit is contained in:
committed by
Marge Bot
parent
f37cf63880
commit
1d43bfa1cd
@@ -51,6 +51,8 @@ panvk_utrace_create_buffer(struct u_trace_context *utctx, uint64_t size_B)
|
||||
.size = size_B,
|
||||
};
|
||||
|
||||
memset(addr_host, 0, size_B);
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2024 Google LLC
|
||||
* Copyright 2025 Arm Ltd.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
@@ -187,6 +188,11 @@ panvk_utrace_perfetto_begin_event(struct panvk_device *dev,
|
||||
if (!ev)
|
||||
return;
|
||||
|
||||
struct panvk_utrace_perfetto *utp = &dev->utrace.utp;
|
||||
if (utp->queues[data->subqueue].stack_depth == 1) {
|
||||
utp->base_ts_ns = ts_ns;
|
||||
}
|
||||
|
||||
ev->begin_ns = ts_ns;
|
||||
}
|
||||
|
||||
@@ -201,6 +207,14 @@ panvk_utrace_perfetto_end_event(
|
||||
if (!ev)
|
||||
return;
|
||||
|
||||
struct panvk_utrace_perfetto *utp = &dev->utrace.utp;
|
||||
if (ev->begin_ns < utp->base_ts_ns) {
|
||||
/* The event has started before the base event of this nested stack of
|
||||
* events. Is is likely data from a previous submission, so we just drop
|
||||
* it here. */
|
||||
return;
|
||||
}
|
||||
|
||||
PanVKRenderpassDataSource::Trace(
|
||||
[=](PanVKRenderpassDataSource::TraceContext ctx) {
|
||||
struct panvk_utrace_perfetto *utp = &dev->utrace.utp;
|
||||
|
||||
@@ -51,6 +51,10 @@ struct panvk_utrace_perfetto {
|
||||
uint64_t next_clock_snapshot;
|
||||
uint64_t event_id;
|
||||
|
||||
/* Use this to reject unwritten timestamps with leftover data from previous
|
||||
* submissions. */
|
||||
uint64_t base_ts_ns;
|
||||
|
||||
struct panvk_utrace_perfetto_queue queues[PANVK_UTRACE_PERFETTO_QUEUE_COUNT];
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user