• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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