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