Path: blob/21.2-virgl/src/gallium/drivers/freedreno/freedreno_tracepoints.py
4570 views
#1# Copyright (C) 2020 Google, Inc.2#3# Permission is hereby granted, free of charge, to any person obtaining a4# copy of this software and associated documentation files (the "Software"),5# to deal in the Software without restriction, including without limitation6# the rights to use, copy, modify, merge, publish, distribute, sublicense,7# and/or sell copies of the Software, and to permit persons to whom the8# Software is furnished to do so, subject to the following conditions:9#10# The above copyright notice and this permission notice (including the next11# paragraph) shall be included in all copies or substantial portions of the12# Software.13#14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL17# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING19# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS20# IN THE SOFTWARE.21#2223import argparse24import sys2526#27# TODO can we do this with less boilerplate?28#29parser = argparse.ArgumentParser()30parser.add_argument('-p', '--import-path', required=True)31parser.add_argument('-C', '--src', required=True)32parser.add_argument('-H', '--hdr', required=True)33args = parser.parse_args()34sys.path.insert(0, args.import_path)353637from u_trace import Header38from u_trace import Tracepoint39from u_trace import utrace_generate4041#42# Tracepoint definitions:43#4445Header('util/u_dump.h')46Header('freedreno_batch.h')4748Tracepoint('start_state_restore')49Tracepoint('end_state_restore')5051Tracepoint('flush_batch',52args=[['struct fd_batch *', 'batch'],53['uint16_t', 'cleared'],54['uint16_t', 'gmem_reason'],55['uint16_t', 'num_draws']],56tp_print=['%p: cleared=%x, gmem_reason=%x, num_draws=%u', '__entry->batch',57'__entry->cleared', '__entry->gmem_reason', '__entry->num_draws'],58)5960Tracepoint('render_gmem',61args=[['uint16_t', 'nbins_x'],62['uint16_t', 'nbins_y'],63['uint16_t', 'bin_w'],64['uint16_t', 'bin_h']],65tp_print=['%ux%u bins of %ux%u',66'__entry->nbins_x', '__entry->nbins_y', '__entry->bin_w', '__entry->bin_h'],67)6869Tracepoint('render_sysmem')7071# Note that this doesn't include full information about all of the MRTs72# but seems to roughly match what I see with a blob trace73Tracepoint('start_render_pass',74args=[['uint32_t', 'submit_id'],75['enum pipe_format', 'cbuf0_format'],76['enum pipe_format', 'zs_format'],77['uint16_t', 'width'],78['uint16_t', 'height'],79['uint8_t', 'mrts'],80['uint8_t', 'samples'],81['uint16_t', 'nbins'],82['uint16_t', 'binw'],83['uint16_t', 'binh']],84tp_perfetto='fd_start_render_pass'85)86Tracepoint('end_render_pass',87tp_perfetto='fd_end_render_pass')8889Tracepoint('start_binning_ib',90tp_perfetto='fd_start_binning_ib')91Tracepoint('end_binning_ib',92tp_perfetto='fd_end_binning_ib')9394Tracepoint('start_vsc_overflow_test')95Tracepoint('end_vsc_overflow_test')9697Tracepoint('start_prologue')98Tracepoint('end_prologue')99100# For GMEM pass, where this could either be a clear or resolve101Tracepoint('start_clear_restore',102args=[['uint16_t', 'fast_cleared']],103tp_print=['fast_cleared: 0x%x', '__entry->fast_cleared'],104tp_perfetto='fd_start_clear_restore',105)106Tracepoint('end_clear_restore',107tp_perfetto='fd_end_clear_restore')108109Tracepoint('start_resolve',110tp_perfetto='fd_start_resolve')111Tracepoint('end_resolve',112tp_perfetto='fd_end_resolve')113114Tracepoint('start_tile',115args=[['uint16_t', 'bin_h'],116['uint16_t', 'yoff'],117['uint16_t', 'bin_w'],118['uint16_t', 'xoff']],119tp_print=['bin_h=%d, yoff=%d, bin_w=%d, xoff=%d',120'__entry->bin_h', '__entry->yoff', '__entry->bin_w', '__entry->xoff'],121)122123Tracepoint('start_draw_ib',124tp_perfetto='fd_start_draw_ib')125Tracepoint('end_draw_ib',126tp_perfetto='fd_end_draw_ib')127128Tracepoint('start_blit',129args=[['enum pipe_texture_target', 'src_target'],130['enum pipe_texture_target', 'dst_target']],131tp_print=['%s -> %s', 'util_str_tex_target(__entry->src_target, true)',132'util_str_tex_target(__entry->dst_target, true)'],133tp_perfetto='fd_start_blit',134)135Tracepoint('end_blit',136tp_perfetto='fd_end_blit')137138Tracepoint('start_compute',139tp_perfetto='fd_start_compute')140Tracepoint('end_compute',141tp_perfetto='fd_end_compute')142143utrace_generate(cpath=args.src, hpath=args.hdr)144145146