1# Copyright 2024 Google LLC 2# SPDX-License-Identifier: MIT 3 4import argparse 5import sys 6 7 8def parse_args(): 9 parser = argparse.ArgumentParser() 10 parser.add_argument('-p', '--import-path', required=True) 11 parser.add_argument('--utrace-src', required=True) 12 parser.add_argument('--utrace-hdr', required=True) 13 parser.add_argument('--perfetto-hdr', required=True) 14 return parser.parse_args() 15 16 17args = parse_args() 18sys.path.insert(0, args.import_path) 19 20from u_trace import ForwardDecl, Header, HeaderScope # noqa: E402 21from u_trace import Tracepoint # noqa: E402 22from u_trace import TracepointArg as Arg # noqa: E402 23from u_trace import TracepointArgStruct as ArgStruct # noqa: E402 24from u_trace import utrace_generate, utrace_generate_perfetto_utils # noqa: E402 25 26Header('vulkan/vulkan_core.h', scope=HeaderScope.HEADER) 27ForwardDecl('struct panvk_device') 28 29 30def begin_end_tp(name, args=[], tp_struct=None): 31 Tracepoint( 32 f'begin_{name}', 33 tp_perfetto=f'panvk_utrace_perfetto_begin_{name}', 34 ) 35 36 Tracepoint( 37 f'end_{name}', 38 args=args, 39 tp_struct=tp_struct, 40 tp_perfetto=f'panvk_utrace_perfetto_end_{name}', 41 ) 42 43 44def define_tracepoints(): 45 begin_end_tp( 46 'cmdbuf', 47 args=[ 48 Arg( 49 type='VkCommandBufferUsageFlags', 50 var='flags', 51 c_format='0x%x', 52 ), 53 ], 54 ) 55 56 57def generate_code(): 58 utrace_generate( 59 cpath=args.utrace_src, 60 hpath=args.utrace_hdr, 61 ctx_param='struct panvk_device *dev', 62 ) 63 64 utrace_generate_perfetto_utils(hpath=args.perfetto_hdr) 65 66 67def main(): 68 define_tracepoints() 69 generate_code() 70 71 72if __name__ == '__main__': 73 main() 74