mesa/src/panfrost/vulkan/panvk_tracepoints.py
Chia-I Wu 576a87a590 panvk: add u_trace perfetto support
When perfetto is enabled, u_trace_context calls driver-defined callbacks
when processing trace events.  Those callbacks are expected to emit
perfetto trace packets.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32360>
2024-12-17 23:14:26 +00:00

73 lines
1.7 KiB
Python

# 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)
parser.add_argument('--perfetto-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, utrace_generate_perfetto_utils # noqa: E402
Header('vulkan/vulkan_core.h', scope=HeaderScope.HEADER)
ForwardDecl('struct panvk_device')
def begin_end_tp(name, args=[], tp_struct=None):
Tracepoint(
f'begin_{name}',
tp_perfetto=f'panvk_utrace_perfetto_begin_{name}',
)
Tracepoint(
f'end_{name}',
args=args,
tp_struct=tp_struct,
tp_perfetto=f'panvk_utrace_perfetto_end_{name}',
)
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='struct panvk_device *dev',
)
utrace_generate_perfetto_utils(hpath=args.perfetto_hdr)
def main():
define_tracepoints()
generate_code()
if __name__ == '__main__':
main()