From 31c5c386d1023c99bb588bceddf05361fc366b6d Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Sun, 23 Feb 2025 14:15:38 +0200 Subject: [PATCH] u_trace: pass tracepoint flags to the read_timestamp callback Signed-off-by: Lionel Landwerlin Reviewed-by: Michael Cheng Part-of: --- src/freedreno/vulkan/tu_device.cc | 3 ++- src/gallium/drivers/freedreno/freedreno_context.c | 3 ++- src/gallium/drivers/iris/iris_utrace.c | 3 ++- src/gallium/drivers/radeonsi/si_utrace.c | 2 +- src/intel/vulkan/anv_utrace.c | 2 +- src/intel/vulkan_hasvk/anv_utrace.c | 2 +- src/panfrost/vulkan/panvk_utrace.c | 2 +- src/panfrost/vulkan/panvk_utrace.h | 2 +- src/util/perf/u_trace.c | 1 + src/util/perf/u_trace.h | 3 ++- 10 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index 7b18dcf24f9..af6d854569a 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -1947,7 +1947,8 @@ tu_trace_record_ts(struct u_trace *ut, void *cs, void *timestamps, static uint64_t tu_trace_read_ts(struct u_trace_context *utctx, - void *timestamps, uint64_t offset_B, void *flush_data) + void *timestamps, uint64_t offset_B, + uint32_t flags, void *flush_data) { struct tu_device *device = container_of(utctx, struct tu_device, trace_context); diff --git a/src/gallium/drivers/freedreno/freedreno_context.c b/src/gallium/drivers/freedreno/freedreno_context.c index a77d0836698..f218994271b 100644 --- a/src/gallium/drivers/freedreno/freedreno_context.c +++ b/src/gallium/drivers/freedreno/freedreno_context.c @@ -499,7 +499,8 @@ fd_trace_record_ts(struct u_trace *ut, void *cs, void *timestamps, static uint64_t fd_trace_read_ts(struct u_trace_context *utctx, - void *timestamps, uint64_t offset_B, void *flush_data) + void *timestamps, uint64_t offset_B, + uint32_t flags, void *flush_data) { struct fd_context *ctx = container_of(utctx, struct fd_context, trace_context); diff --git a/src/gallium/drivers/iris/iris_utrace.c b/src/gallium/drivers/iris/iris_utrace.c index d130dbeca4c..d65d170e11f 100644 --- a/src/gallium/drivers/iris/iris_utrace.c +++ b/src/gallium/drivers/iris/iris_utrace.c @@ -131,7 +131,8 @@ iris_utrace_record_ts(struct u_trace *trace, void *cs, static uint64_t iris_utrace_read_ts(struct u_trace_context *utctx, - void *timestamps, uint64_t offset_B, void *flush_data) + void *timestamps, uint64_t offset_B, + uint32_t flags, void *flush_data) { struct iris_context *ice = container_of(utctx, struct iris_context, ds.trace_context); diff --git a/src/gallium/drivers/radeonsi/si_utrace.c b/src/gallium/drivers/radeonsi/si_utrace.c index d0e978e86cb..3e9677da7d8 100644 --- a/src/gallium/drivers/radeonsi/si_utrace.c +++ b/src/gallium/drivers/radeonsi/si_utrace.c @@ -32,7 +32,7 @@ static void si_utrace_record_ts(struct u_trace *trace, void *cs, void *timestamp } static uint64_t si_utrace_read_ts(struct u_trace_context *utctx, void *timestamps, - uint64_t offset_B, void *flush_data) + uint64_t offset_B, uint32_t flags, void *flush_data) { struct si_context *ctx = container_of(utctx, struct si_context, ds.trace_context); struct pipe_resource *buffer = timestamps; diff --git a/src/intel/vulkan/anv_utrace.c b/src/intel/vulkan/anv_utrace.c index 6fb1cfa7dd4..e369a8846be 100644 --- a/src/intel/vulkan/anv_utrace.c +++ b/src/intel/vulkan/anv_utrace.c @@ -398,7 +398,7 @@ anv_utrace_record_ts(struct u_trace *ut, void *cs, static uint64_t anv_utrace_read_ts(struct u_trace_context *utctx, void *timestamps, uint64_t offset_B, - void *flush_data) + uint32_t flags, void *flush_data) { struct anv_device *device = container_of(utctx, struct anv_device, ds.trace_context); diff --git a/src/intel/vulkan_hasvk/anv_utrace.c b/src/intel/vulkan_hasvk/anv_utrace.c index 2c5f6c2d91d..bcd77638abe 100644 --- a/src/intel/vulkan_hasvk/anv_utrace.c +++ b/src/intel/vulkan_hasvk/anv_utrace.c @@ -245,7 +245,7 @@ anv_utrace_record_ts(struct u_trace *ut, void *cs, static uint64_t anv_utrace_read_ts(struct u_trace_context *utctx, void *timestamps, uint64_t offset_B, - void *flush_data) + uint32_t flags, void *flush_data) { struct anv_device *device = container_of(utctx, struct anv_device, ds.trace_context); diff --git a/src/panfrost/vulkan/panvk_utrace.c b/src/panfrost/vulkan/panvk_utrace.c index 0c566782da9..ee2b4cd1629 100644 --- a/src/panfrost/vulkan/panvk_utrace.c +++ b/src/panfrost/vulkan/panvk_utrace.c @@ -41,7 +41,7 @@ panvk_utrace_delete_buffer(struct u_trace_context *utctx, void *buffer) uint64_t panvk_utrace_read_ts(struct u_trace_context *utctx, void *timestamps, - uint64_t offset_B, void *flush_data) + uint64_t offset_B, uint32_t flags, void *flush_data) { struct panvk_device *dev = to_dev(utctx); const struct panvk_physical_device *pdev = diff --git a/src/panfrost/vulkan/panvk_utrace.h b/src/panfrost/vulkan/panvk_utrace.h index 0e20f75342b..3f891bcd68f 100644 --- a/src/panfrost/vulkan/panvk_utrace.h +++ b/src/panfrost/vulkan/panvk_utrace.h @@ -29,7 +29,7 @@ void *panvk_utrace_create_buffer(struct u_trace_context *utctx, void panvk_utrace_delete_buffer(struct u_trace_context *utctx, void *buffer); uint64_t panvk_utrace_read_ts(struct u_trace_context *utctx, void *timestamps, - uint64_t offset_B, void *flush_data); + uint64_t offset_B, uint32_t flags, void *flush_data); void panvk_utrace_delete_flush_data(struct u_trace_context *utctx, void *flush_data); diff --git a/src/util/perf/u_trace.c b/src/util/perf/u_trace.c index b9284160731..3cb1d90cfbc 100644 --- a/src/util/perf/u_trace.c +++ b/src/util/perf/u_trace.c @@ -686,6 +686,7 @@ process_chunk(void *job, void *gdata, int thread_index) uint64_t ns = utctx->read_timestamp(utctx, chunk->timestamps, utctx->timestamp_size_bytes * idx, + evt->tp->flags, chunk->flush_data); int32_t delta; diff --git a/src/util/perf/u_trace.h b/src/util/perf/u_trace.h index b0b6def3911..8ca0d617982 100644 --- a/src/util/perf/u_trace.h +++ b/src/util/perf/u_trace.h @@ -107,7 +107,7 @@ typedef void (*u_trace_delete_buffer)(struct u_trace_context *utctx, void *buffer); /** - * Driver provided callback to emit commands into the soecified command + * Driver provided callback to emit commands into the specified command * stream to capture a 64b timestamp into the specified timestamps buffer, * at the specified index. * @@ -160,6 +160,7 @@ typedef const void *(*u_trace_get_data)(struct u_trace_context *utctx, typedef uint64_t (*u_trace_read_ts)(struct u_trace_context *utctx, void *timestamps, uint64_t offset_B, + uint32_t flags, void *flush_data); /**