diff options
author | Ady Abraham <adyabr@google.com> | 2019-04-08 10:44:56 -0700 |
---|---|---|
committer | Ady Abraham <adyabr@google.com> | 2019-04-08 10:55:32 -0700 |
commit | 09bd3920155f0961b303d1cdd0f6027135aff36d (patch) | |
tree | e5f577b8de8661a8801fccb9744f53d91741f9a1 /services/surfaceflinger/BufferQueueLayer.cpp | |
parent | 22488f69b442064261f8764e64e3705fd2e22cb3 (diff) | |
download | android_frameworks_native-09bd3920155f0961b303d1cdd0f6027135aff36d.tar.gz android_frameworks_native-09bd3920155f0961b303d1cdd0f6027135aff36d.tar.bz2 android_frameworks_native-09bd3920155f0961b303d1cdd0f6027135aff36d.zip |
SF: Updating content FPS tracking
1) Each time SF creates a layer, register it with Scheduler and return handle
2) BufferQueueLayer and BufferStateLayer can now send information about buffers
for given layers via layer handle.
Algorithm for detecting content fps:
1) Keep the refresh rate per layer (explicit timestamp, or 0).
2) Keep information about last 10 present or update timestamps. This will be an
indicator for precedence.
3) Choose the MAX refresh rate among last updated layers.
For more info see go/surface-flinger-scheduler and
go/content-fps-detection-in-scheduler
Test: Updating unit tests. Systrace.
Change-Id: I988a7a79e9a9f0f61674c9b637c5142db3336177
Bug: 127727337
Diffstat (limited to 'services/surfaceflinger/BufferQueueLayer.cpp')
-rw-r--r-- | services/surfaceflinger/BufferQueueLayer.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp index b62399174..ff5f27196 100644 --- a/services/surfaceflinger/BufferQueueLayer.cpp +++ b/services/surfaceflinger/BufferQueueLayer.cpp @@ -398,8 +398,8 @@ void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { // Add this buffer from our internal queue tracker { // Autolock scope if (mFlinger->mUseSmart90ForVideo) { - // Report mApi ID for each layer. - mFlinger->mScheduler->addNativeWindowApi(item.mApi); + const nsecs_t presentTime = item.mIsAutoTimestamp ? 0 : item.mTimestamp; + mFlinger->mScheduler->addLayerPresentTime(mSchedulerLayerHandle, presentTime); } Mutex::Autolock lock(mQueueItemLock); |