1*61046927SAndroid Build Coastguard WorkerThese directory contains tools for manipulating traces produced by the trace 2*61046927SAndroid Build Coastguard Workerpipe driver. 3*61046927SAndroid Build Coastguard Worker 4*61046927SAndroid Build Coastguard Worker 5*61046927SAndroid Build Coastguard WorkerMost debug builds of gallium frontends already load the trace driver by default. 6*61046927SAndroid Build Coastguard WorkerTo produce a trace do 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard Worker export GALLIUM_TRACE=foo.gtrace 9*61046927SAndroid Build Coastguard Worker 10*61046927SAndroid Build Coastguard Workerand run the application. You can choose any name, but the .gtrace is 11*61046927SAndroid Build Coastguard Workerrecommended to avoid confusion with the .trace produced by apitrace. 12*61046927SAndroid Build Coastguard Worker 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard WorkerYou can dump a trace by doing 15*61046927SAndroid Build Coastguard Worker 16*61046927SAndroid Build Coastguard Worker ./dump.py foo.gtrace | less 17*61046927SAndroid Build Coastguard Worker 18*61046927SAndroid Build Coastguard Worker 19*61046927SAndroid Build Coastguard WorkerYou can dump a JSON file describing the static state at any given draw call 20*61046927SAndroid Build Coastguard Worker(e.g., 12345) by 21*61046927SAndroid Build Coastguard Workerdoing 22*61046927SAndroid Build Coastguard Worker 23*61046927SAndroid Build Coastguard Worker ./dump_state.py -v -c 12345 foo.gtrace > foo.json 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Workeror by specifying the n-th (e.g, 1st) draw call by doing 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Worker ./dump_state.py -v -d 1 foo.gtrace > foo.json 28*61046927SAndroid Build Coastguard Worker 29*61046927SAndroid Build Coastguard WorkerThe state is derived from the call sequence in the trace file, so no dynamic 30*61046927SAndroid Build Coastguard Worker(eg. rendered textures) is included. 31*61046927SAndroid Build Coastguard Worker 32*61046927SAndroid Build Coastguard Worker 33*61046927SAndroid Build Coastguard WorkerYou can compare two JSON files by doing 34*61046927SAndroid Build Coastguard Worker 35*61046927SAndroid Build Coastguard Worker ./diff_state.py foo.json boo.json | less 36*61046927SAndroid Build Coastguard Worker 37*61046927SAndroid Build Coastguard WorkerIf you're investigating a regression in an gallium frontend, you can obtain a good 38*61046927SAndroid Build Coastguard Workerand bad trace, dump respective state in JSON, and then compare the states to 39*61046927SAndroid Build Coastguard Workeridentify the problem. 40