• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright 2023 Advanced Micro Devices, Inc.
3#
4# SPDX-License-Identifier: MIT
5#
6
7import argparse
8import sys
9
10# List of the default tracepoints enabled. By default most tracepoints are
11# enabled, set tp_default=False to disable them by default.
12#
13si_default_tps = []
14
15#
16# Tracepoint definitions:
17#
18def define_tracepoints(args):
19    from u_trace import Header, HeaderScope
20    from u_trace import ForwardDecl
21    from u_trace import Tracepoint
22    from u_trace import TracepointArg as Arg
23    from u_trace import TracepointArgStruct as ArgStruct
24
25    Header('si_perfetto.h', scope=HeaderScope.HEADER)
26
27
28    def begin_end_tp(name, tp_args=[], tp_struct=None, tp_print=None,
29                     tp_default_enabled=True, end_pipelined=True,
30                     need_cs_param=False):
31        global si_default_tps
32        if tp_default_enabled:
33            si_default_tps.append(name)
34        Tracepoint('si_begin_{0}'.format(name),
35                   toggle_name=name,
36                   tp_perfetto='si_ds_begin_{0}'.format(name),
37                   need_cs_param=need_cs_param)
38        Tracepoint('si_end_{0}'.format(name),
39                   toggle_name=name,
40                   args=tp_args,
41                   tp_struct=tp_struct,
42                   tp_perfetto='si_ds_end_{0}'.format(name),
43                   tp_print=tp_print,
44                   end_of_pipe=end_pipelined,
45                   need_cs_param=need_cs_param)
46
47    # Various draws/dispatch, radeonsi
48    begin_end_tp('draw',
49                 tp_args=[Arg(type='uint32_t', var='count', c_format='%u')])
50
51    begin_end_tp('compute',
52                 tp_args=[Arg(type='uint32_t', var='group_x', c_format='%u'),
53                          Arg(type='uint32_t', var='group_y', c_format='%u'),
54                          Arg(type='uint32_t', var='group_z', c_format='%u'),],
55                 tp_print=['group=%ux%ux%u', '__entry->group_x', '__entry->group_y', '__entry->group_z'])
56
57def generate_code(args):
58    from u_trace import utrace_generate
59    from u_trace import utrace_generate_perfetto_utils
60
61    utrace_generate(cpath=args.src, hpath=args.hdr,
62                    ctx_param='struct si_ds_device *dev',
63                    trace_toggle_name='si_gpu_tracepoint',
64                    trace_toggle_defaults=si_default_tps)
65    utrace_generate_perfetto_utils(hpath=args.perfetto_hdr)
66
67def main():
68    parser = argparse.ArgumentParser()
69    parser.add_argument('-p', '--import-path', required=True)
70    parser.add_argument('-C','--src', required=True)
71    parser.add_argument('-H','--hdr', required=True)
72    parser.add_argument('--perfetto-hdr', required=True)
73    args = parser.parse_args()
74    sys.path.insert(0, args.import_path)
75    define_tracepoints(args)
76    generate_code(args)
77
78if __name__ == '__main__':
79    main()
80