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 = []