diff options
author | Stan Iliev <stani@google.com> | 2019-11-13 10:25:22 -0500 |
---|---|---|
committer | Stan Iliev <stani@google.com> | 2019-11-13 11:48:04 -0500 |
commit | 10689992cf793bd21873cd2e57e3d3681650b952 (patch) | |
tree | b0d29ee74c5143fbcd3ec60671212514715901bd /libs/hwui/renderthread | |
parent | b814d6b3179c24849c4243a94d4742b1e90e40da (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.cpp | 5 |
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++; |