diff --git a/src/panfrost/vulkan/meson.build b/src/panfrost/vulkan/meson.build index 91b23ab4a8b..dde8a194622 100644 --- a/src/panfrost/vulkan/meson.build +++ b/src/panfrost/vulkan/meson.build @@ -18,6 +18,19 @@ panvk_entrypoints = custom_target( depend_files : vk_entrypoints_gen_depend_files, ) +panvk_tracepoints = custom_target( + 'panvk_tracepoints.[ch]', + input: 'panvk_tracepoints.py', + output: ['panvk_tracepoints.h', 'panvk_tracepoints.c'], + command: [ + prog_python, '@INPUT@', + '--import-path', join_paths(dir_source_root, 'src/util/perf/'), + '--utrace-hdr', '@OUTPUT0@', + '--utrace-src', '@OUTPUT1@', + ], + depend_files: u_trace_py, +) + libpanvk_files = files( 'panvk_buffer.c', 'panvk_cmd_pool.c', @@ -75,6 +88,7 @@ csf_files = [ common_per_arch_files = [ panvk_entrypoints[0], + panvk_tracepoints[0], 'panvk_vX_blend.c', 'panvk_vX_buffer_view.c', 'panvk_vX_cmd_fb_preload.c', @@ -148,7 +162,7 @@ endif libvulkan_panfrost = shared_library( 'vulkan_panfrost', - [libpanvk_files, panvk_entrypoints], + [libpanvk_files, panvk_entrypoints, panvk_tracepoints], include_directories : [ inc_include, inc_src, diff --git a/src/panfrost/vulkan/panvk_tracepoints.py b/src/panfrost/vulkan/panvk_tracepoints.py new file mode 100644 index 00000000000..7a55adc1d22 --- /dev/null +++ b/src/panfrost/vulkan/panvk_tracepoints.py @@ -0,0 +1,63 @@ +# Copyright 2024 Google LLC +# SPDX-License-Identifier: MIT + +import argparse +import sys + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument('-p', '--import-path', required=True) + parser.add_argument('--utrace-src', required=True) + parser.add_argument('--utrace-hdr', required=True) + return parser.parse_args() + + +args = parse_args() +sys.path.insert(0, args.import_path) + +from u_trace import ForwardDecl, Header, HeaderScope # noqa: E402 +from u_trace import Tracepoint # noqa: E402 +from u_trace import TracepointArg as Arg # noqa: E402 +from u_trace import TracepointArgStruct as ArgStruct # noqa: E402 +from u_trace import utrace_generate # noqa: E402 + +Header('vulkan/vulkan_core.h', scope=HeaderScope.HEADER) + + +def begin_end_tp(name, args=[], tp_struct=None): + Tracepoint( + f'begin_{name}', + ) + + Tracepoint( + f'end_{name}', + args=args, + tp_struct=tp_struct, + ) + + +def define_tracepoints(): + begin_end_tp( + 'cmdbuf', + args=[ + Arg( + type='VkCommandBufferUsageFlags', + var='flags', + c_format='0x%x', + ), + ], + ) + + +def generate_code(): + utrace_generate(cpath=args.utrace_src, hpath=args.utrace_hdr, ctx_param=None) + + +def main(): + define_tracepoints() + generate_code() + + +if __name__ == '__main__': + main()