xref: /aosp_15_r20/external/mesa3d/src/gallium/drivers/radeonsi/si_tracepoints.py (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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, need_cs_param=False):
30        global si_default_tps
31        if tp_default_enabled:
32            si_default_tps.append(name)
33        Tracepoint('si_begin_{0}'.format(name),
34                   toggle_name=name,
35                   tp_perfetto='si_ds_begin_{0}'.format(name),
36                   need_cs_param=need_cs_param)
37        Tracepoint('si_end_{0}'.format(name),
38                   toggle_name=name,
39                   args=tp_args,
40                   tp_struct=tp_struct,
41                   tp_perfetto='si_ds_end_{0}'.format(name),
42                   tp_print=tp_print,
43                   need_cs_param=need_cs_param)
44
45    # Various draws/dispatch, radeonsi
46    begin_end_tp('draw',
47                 tp_args=[Arg(type='uint32_t', var='count', c_format='%u')])
48
49    begin_end_tp('compute',
50                 tp_args=[Arg(type='uint32_t', var='group_x', c_format='%u'),
51                          Arg(type='uint32_t', var='group_y', c_format='%u'),
52                          Arg(type='uint32_t', var='group_z', c_format='%u'),],
53                 tp_print=['group=%ux%ux%u', '__entry->group_x', '__entry->group_y', '__entry->group_z'])
54
55def generate_code(args):
56    from u_trace import utrace_generate
57    from u_trace import utrace_generate_perfetto_utils
58
59    utrace_generate(cpath=args.src, hpath=args.hdr,
60                    ctx_param='struct si_ds_device *dev',
61                    trace_toggle_name='si_gpu_tracepoint',
62                    trace_toggle_defaults=si_default_tps)
63    utrace_generate_perfetto_utils(hpath=args.perfetto_hdr)
64
65def main():
66    parser = argparse.ArgumentParser()
67    parser.add_argument('-p', '--import-path', required=True)
68    parser.add_argument('-C','--src', required=True)
69    parser.add_argument('-H','--hdr', required=True)
70    parser.add_argument('--perfetto-hdr', required=True)
71    args = parser.parse_args()
72    sys.path.insert(0, args.import_path)
73    define_tracepoints(args)
74    generate_code(args)
75
76if __name__ == '__main__':
77    main()
78