diff options
author | 2019-04-29 10:09:43 -0700 | |
---|---|---|
committer | 2019-05-02 15:51:44 -0700 | |
commit | 4efd1f505ce5587bba57e79dfb54eb1daff59eec (patch) | |
tree | 6f2ed1bdc6fd2715239755d6068c21b779a39814 /services/surfaceflinger/RegionSamplingThread.h | |
parent | 501604c5fa4f485ae96470e6e2ba71a8c98b9c8f (diff) |
sf: reuse luma sampling buffer when available
Reuse the luma sampling buffer when available, saving a frequent buffer
reallocation. Depending on driver refcounting behavior, this could have
resulted in the buffer free on the SF main thread (and typically did on
referenced device, costing about ~500us @10hz).
Test: verify luma sampling work reduces from ~2ms -> 1.5ms
Test: RegionSamplingTest in libgui
Fixes: 131416627
Change-Id: I8e6d57ae25bd37ceec828c82796f0f4f8f45636e
Diffstat (limited to 'services/surfaceflinger/RegionSamplingThread.h')
-rw-r--r-- | services/surfaceflinger/RegionSamplingThread.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/services/surfaceflinger/RegionSamplingThread.h b/services/surfaceflinger/RegionSamplingThread.h index 979642912b..72b20420ef 100644 --- a/services/surfaceflinger/RegionSamplingThread.h +++ b/services/surfaceflinger/RegionSamplingThread.h @@ -24,13 +24,13 @@ #include <android-base/thread_annotations.h> #include <binder/IBinder.h> +#include <ui/GraphicBuffer.h> #include <ui/Rect.h> #include <utils/StrongPointer.h> #include "Scheduler/IdleTimer.h" namespace android { -class GraphicBuffer; class IRegionSamplingListener; class Layer; class Scheduler; @@ -121,6 +121,8 @@ private: std::unordered_map<wp<IBinder>, Descriptor, WpHash> mDescriptors GUARDED_BY(mMutex); std::chrono::nanoseconds lastSampleTime GUARDED_BY(mMutex); bool mDiscardedFrames GUARDED_BY(mMutex) = false; + + sp<GraphicBuffer> mCachedBuffer GUARDED_BY(mMutex) = nullptr; }; } // namespace android |