1 /*
2 * Copyright 2024 Google LLC
3 * SPDX-License-Identifier: MIT
4 */
5
6 #ifndef PANVK_UTRACE_H
7 #define PANVK_UTRACE_H
8
9 #include "util/perf/u_trace.h"
10
11 #include "panvk_macros.h"
12 #include "panvk_mempool.h"
13
14 struct panvk_device;
15 struct vk_sync;
16
17 struct panvk_utrace_flush_data {
18 uint32_t subqueue;
19
20 struct vk_sync *sync;
21 uint64_t wait_value;
22
23 struct panvk_pool clone_pool;
24 };
25
26 void *panvk_utrace_create_buffer(struct u_trace_context *utctx,
27 uint64_t size_B);
28
29 void panvk_utrace_delete_buffer(struct u_trace_context *utctx, void *buffer);
30
31 uint64_t panvk_utrace_read_ts(struct u_trace_context *utctx, void *timestamps,
32 uint64_t offset_B, void *flush_data);
33
34 void panvk_utrace_delete_flush_data(struct u_trace_context *utctx,
35 void *flush_data);
36
37 #ifdef PAN_ARCH
38
39 #if PAN_ARCH >= 10
40
41 void panvk_per_arch(utrace_context_init)(struct panvk_device *dev);
42 void panvk_per_arch(utrace_context_fini)(struct panvk_device *dev);
43
44 void panvk_per_arch(utrace_copy_buffer)(struct u_trace_context *utctx,
45 void *cmdstream, void *ts_from,
46 uint64_t from_offset, void *ts_to,
47 uint64_t to_offset, uint64_t size_B);
48
49 struct cs_builder;
50
51 void panvk_per_arch(utrace_clone_init_pool)(struct panvk_pool *pool,
52 struct panvk_device *dev);
53 void panvk_per_arch(utrace_clone_init_builder)(struct cs_builder *b,
54 struct panvk_pool *pool);
55 void panvk_per_arch(utrace_clone_finish_builder)(struct cs_builder *b);
56
57 #else /* PAN_ARCH >= 10 */
58
59 static inline void
panvk_per_arch(utrace_context_init)60 panvk_per_arch(utrace_context_init)(struct panvk_device *dev)
61 {
62 }
63
64 static inline void
panvk_per_arch(utrace_context_fini)65 panvk_per_arch(utrace_context_fini)(struct panvk_device *dev)
66 {
67 }
68
69 #endif /* PAN_ARCH >= 10 */
70
71 #endif /* PAN_ARCH */
72
73 #endif /* PANVK_UTRACE_H */
74