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