glretrace: Show current frame number in window title
I find this can be useful to roughly identify which frames I want to be
looking at for a specific issue in a large trace, by replaying the trace
and looking at the current frame number when the issue occurs.
Change-Id: I53cdab0c3cffdd6944fc0bd6206de4b99990913b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/apitrace/+/2224541
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/glretrace_main.cpp b/retrace/glretrace_main.cpp
index e55367c..ae836a3 100644
--- a/retrace/glretrace_main.cpp
+++ b/retrace/glretrace_main.cpp
@@ -571,6 +571,14 @@
retrace::warning(call) << "could not infer drawable size (glViewport never called)\n";
}
+ /* Display the frame number in the window title, except in benchmark mode
+ * as compositor/window manager activity may affect the profile. */
+ if (retrace::debug > 0 && !retrace::profiling) {
+ std::ostringstream str;
+ str << "glretrace [frame: " << retrace::frameNo << "]";
+ currentDrawable->setName(str.str().c_str());
+ }
+
if (curMetricBackend) {
curMetricBackend->beginQuery(QUERY_BOUNDARY_FRAME);
}
diff --git a/retrace/glws.hpp b/retrace/glws.hpp
index 7f4f12c..af9b1bd 100644
--- a/retrace/glws.hpp
+++ b/retrace/glws.hpp
@@ -148,6 +148,8 @@
visible = true;
}
+ virtual void setName(const char *name) {}
+
virtual void copySubBuffer(int x, int y, int width, int height);
virtual void swapBuffers(void) = 0;
diff --git a/retrace/glws_glx.cpp b/retrace/glws_glx.cpp
index 82bd6df..a2dbdb3 100644
--- a/retrace/glws_glx.cpp
+++ b/retrace/glws_glx.cpp
@@ -141,6 +141,14 @@
Drawable::show();
}
+ void setName(const char *name) override {
+ if (!window) {
+ return;
+ }
+
+ setWindowName(window, name);
+ }
+
void copySubBuffer(int x, int y, int width, int height) override {
glXCopySubBufferMESA(display, drawable, x, y, width, height);
diff --git a/retrace/glws_xlib.cpp b/retrace/glws_xlib.cpp
index 0222d7d..c175f1a 100644
--- a/retrace/glws_xlib.cpp
+++ b/retrace/glws_xlib.cpp
@@ -282,4 +282,11 @@
}
+void
+setWindowName(Window window, const char *name)
+{
+ XStoreName(display, window, const_cast<char *>(name));
+}
+
+
} /* namespace glws */
diff --git a/retrace/glws_xlib.hpp b/retrace/glws_xlib.hpp
index 68d32c2..78007e8 100644
--- a/retrace/glws_xlib.hpp
+++ b/retrace/glws_xlib.hpp
@@ -63,6 +63,8 @@
void
showWindow(Window window);
+void
+setWindowName(Window window, const char *name);
} /* namespace glws */