summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread
diff options
context:
space:
mode:
authorStan Iliev <stani@google.com>2019-11-13 10:25:22 -0500
committerStan Iliev <stani@google.com>2019-11-13 11:48:04 -0500
commit10689992cf793bd21873cd2e57e3d3681650b952 (patch)
treeb0d29ee74c5143fbcd3ec60671212514715901bd /libs/hwui/renderthread
parentb814d6b3179c24849c4243a94d4742b1e90e40da (diff)
Fix an issue with GPU stats not enabled
Invoke Surface::enableFrameTimestamps after eglDestroySurface. eglDestroySurface internally disables time stats. Order is important, when CanvasContext::setSurface is invoked with a surface, that is already current (which happens all the time). Test: ran UiBench microbenchmark tests Change-Id: I3d023c3a87da6329c556426d553c744e541b9dff
Diffstat (limited to 'libs/hwui/renderthread')
-rw-r--r--libs/hwui/renderthread/CanvasContext.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 826a8ea09d7e..f0867686c321 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -147,7 +147,6 @@ void CanvasContext::setSurface(sp<Surface>&& surface) {
mNativeSurface = new ReliableSurface{std::move(surface)};
// TODO: Fix error handling & re-shorten timeout
ANativeWindow_setDequeueTimeout(mNativeSurface.get(), 4000_ms);
- mNativeSurface->enableFrameTimestamps(true);
} else {
mNativeSurface = nullptr;
}
@@ -169,6 +168,10 @@ void CanvasContext::setSurface(sp<Surface>&& surface) {
if (hasSurface) {
mHaveNewSurface = true;
mSwapHistory.clear();
+ // Enable frame stats after the surface has been bound to the appropriate graphics API.
+ // Order is important when new and old surfaces are the same, because old surface has
+ // its frame stats disabled automatically.
+ mNativeSurface->enableFrameTimestamps(true);
} else {
mRenderThread.removeFrameCallback(this);
mGenerationID++;