Mesa (main): pytracediff: change how 'junk' calls are handled
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jun 28 12:13:50 UTC 2022
Module: Mesa
Branch: main
Commit: 95fc0e1b7c5f8c8df7b4b3c719597e595d331725
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=95fc0e1b7c5f8c8df7b4b3c719597e595d331725
Author: Matti Hamalainen <ccr at tnsp.org>
Date: Sun Jun 19 21:28:42 2022 +0300
pytracediff: change how 'junk' calls are handled
Instead of discarding them at parsing phase, let the difflib
SequenceMatcher always ignore them, and optionally suppress
them from output if -I/--ignore-junk option is given.
Signed-off-by: Matti Hamalainen <ccr at tnsp.org>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Reviewed-by: Dylan Baker <dylan at pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17135>
---
src/gallium/tools/trace/parse.py | 10 ++++++++--
src/gallium/tools/trace/pytracediff.py | 20 +++++++++++++-------
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/src/gallium/tools/trace/parse.py b/src/gallium/tools/trace/parse.py
index f86b533cee5..5611814ddba 100755
--- a/src/gallium/tools/trace/parse.py
+++ b/src/gallium/tools/trace/parse.py
@@ -218,8 +218,8 @@ class TraceParser(XmlParser):
self.element_start('trace')
while self.token.type not in (ELEMENT_END, EOF):
call = self.parse_call()
- if not self.options.ignore_junk or not trace_call_ignore(call):
- self.handle_call(call)
+ call.is_junk = trace_call_ignore(call)
+ self.handle_call(call)
if self.token.type != EOF:
self.element_end('trace')
@@ -381,6 +381,9 @@ class SimpleTraceDumper(TraceParser):
self.pretty_printer = PrettyPrinter(self.formatter, options)
def handle_call(self, call):
+ if self.options.ignore_junk and call.is_junk:
+ return
+
call.visit(self.pretty_printer)
@@ -391,6 +394,9 @@ class TraceDumper(SimpleTraceDumper):
self.call_stack = []
def handle_call(self, call):
+ if self.options.ignore_junk and call.is_junk:
+ return
+
if self.options.named_ptrs:
self.call_stack.append(call)
else:
diff --git a/src/gallium/tools/trace/pytracediff.py b/src/gallium/tools/trace/pytracediff.py
index 9c2a896ee0e..7c79f755806 100755
--- a/src/gallium/tools/trace/pytracediff.py
+++ b/src/gallium/tools/trace/pytracediff.py
@@ -319,7 +319,7 @@ if __name__ == "__main__":
### Perform diffing
pkk_info("Matching trace sequences ...")
- sequence = difflib.SequenceMatcher(None, stack1, stack2, autojunk=False)
+ sequence = difflib.SequenceMatcher(lambda x : x.is_junk, stack1, stack2, autojunk=False)
pkk_info("Sequencing diff ...")
opcodes = sequence.get_opcodes()
@@ -378,18 +378,24 @@ if __name__ == "__main__":
while True:
# Get line data
if ncall1 < end1:
- printer.entry_start(show_args)
- stack1[ncall1].visit(printer)
- data1 = printer.entry_get()
+ if not options.ignore_junk or not stack1[ncall1].is_junk:
+ printer.entry_start(show_args)
+ stack1[ncall1].visit(printer)
+ data1 = printer.entry_get()
+ else:
+ data1 = []
ncall1 += 1
else:
data1 = []
last1 = True
if ncall2 < end2:
- printer.entry_start(show_args)
- stack2[ncall2].visit(printer)
- data2 = printer.entry_get()
+ if not options.ignore_junk or not stack2[ncall2].is_junk:
+ printer.entry_start(show_args)
+ stack2[ncall2].visit(printer)
+ data2 = printer.entry_get()
+ else:
+ data2 = []
ncall2 += 1
else:
data2 = []
More information about the mesa-commit
mailing list