glretrace: Fixed issue where state could be dumped before the requested call had been executed in a multithreaded trace.
For example when getting state for a particular Draw call, the
framebuffer could contain the contents prior to the Draw call.
Change-Id: I16e404f78dde37cf3fe521d14d491ca6de78e327
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/apitrace/+/2224542
Reviewed-by: Po-Hsien Wang <pwang@chromium.org>
Commit-Queue: Robert Tarasov <tutankhamen@chromium.org>
Tested-by: Robert Tarasov <tutankhamen@chromium.org>
diff --git a/retrace/retrace_main.cpp b/retrace/retrace_main.cpp
index a0e3fc4..9111d86 100644
--- a/retrace/retrace_main.cpp
+++ b/retrace/retrace_main.cpp
@@ -347,7 +347,8 @@
}
}
- if (call->no >= dumpStateCallNo &&
+ // dumpStateCallNo is 0 when fetching default state
+ if ((call->no == dumpStateCallNo || dumpStateCallNo == 0) &&
dumper->canDump()) {
StateWriter *writer = stateWriterFactory(std::cout);
dumper->dumpState(*writer);