mesa/src/gallium/tools/trace
Matti Hamalainen aab5d176b8 pytracediff: implement pager ('less') invocation internally
In order to get rid of the ntracediff.sh wrapper script, implement
invocation of 'less' internally, if the stdout is determined to
be a tty. Otherwise just print out normally.

Signed-off-by: Matti Hamalainen <ccr@tnsp.org>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17135>
2022-06-28 11:40:58 +00:00
..
README.txt
TODO.txt
diff_state.py
dump.py
dump_state.py gallium/tools: add option for ignoring junk calls in trace dumper 2022-06-28 11:40:58 +00:00
format.py
model.py gallium/tools: reimplement tracediff completely in Python 2022-06-28 11:40:58 +00:00
parse.py pytracediff: change how 'junk' calls are handled 2022-06-28 11:40:58 +00:00
pytracediff.py pytracediff: implement pager ('less') invocation internally 2022-06-28 11:40:58 +00:00
tracediff.sh gallium/tools: add option for ignoring junk calls in trace dumper 2022-06-28 11:40:58 +00:00

README.txt

These directory contains tools for manipulating traces produced by the trace
pipe driver.


Most debug builds of gallium frontends already load the trace driver by default.
To produce a trace do

  export GALLIUM_TRACE=foo.gtrace

and run the application.  You can choose any name, but the .gtrace is
recommended to avoid confusion with the .trace produced by apitrace.


You can dump a trace by doing

  ./dump.py foo.gtrace | less


You can dump a JSON file describing the static state at any given draw call
(e.g., 12345) by
doing

  ./dump_state.py -v -c 12345 foo.gtrace > foo.json

or by specifying the n-th (e.g, 1st) draw call by doing

  ./dump_state.py -v -d 1 foo.gtrace > foo.json

The state is derived from the call sequence in the trace file, so no dynamic
(eg. rendered textures) is included.


You can compare two JSON files by doing

  ./diff_state.py foo.json boo.json | less

If you're investigating a regression in an gallium frontend, you can obtain a good
and bad trace, dump respective state in JSON, and then compare the states to
identify the problem.