2626#include < ui/FrameStats.h>
2727
2828#include " FrameTracker.h"
29- #include " EventLog/EventLog.h"
3029
3130namespace android {
3231
33- FrameTracker::FrameTracker () :
34- mOffset (0 ),
35- mNumFences (0 ),
36- mDisplayPeriod (0 ) {
37- resetFrameCountersLocked ();
38- }
32+ FrameTracker::FrameTracker () : mOffset (0 ), mNumFences (0 ), mDisplayPeriod (0 ) {}
3933
4034void FrameTracker::setDesiredPresentTime (nsecs_t presentTime) {
4135 Mutex::Autolock lock (mMutex );
@@ -73,9 +67,6 @@ void FrameTracker::setDisplayRefreshPeriod(nsecs_t displayPeriod) {
7367void FrameTracker::advanceFrame () {
7468 Mutex::Autolock lock (mMutex );
7569
76- // Update the statistic to include the frame we just finished.
77- updateStatsLocked (mOffset );
78-
7970 // Advance to the next frame.
8071 mOffset = (mOffset +1 ) % NUM_FRAME_RECORDS;
8172 mFrameRecords [mOffset ].desiredPresentTime = INT64_MAX;
@@ -138,27 +129,19 @@ void FrameTracker::getStats(FrameStats* outStats) const {
138129 }
139130}
140131
141- void FrameTracker::logAndResetStats (const std::string_view& name) {
142- Mutex::Autolock lock (mMutex );
143- logStatsLocked (name);
144- resetFrameCountersLocked ();
145- }
146-
147132void FrameTracker::processFencesLocked () const {
148133 FrameRecord* records = const_cast <FrameRecord*>(mFrameRecords );
149134 int & numFences = const_cast <int &>(mNumFences );
150135
151136 for (int i = 1 ; i < NUM_FRAME_RECORDS && numFences > 0 ; i++) {
152- size_t idx = (mOffset +NUM_FRAME_RECORDS-i) % NUM_FRAME_RECORDS;
153- bool updated = false ;
137+ size_t idx = (mOffset + NUM_FRAME_RECORDS - i) % NUM_FRAME_RECORDS;
154138
155139 const std::shared_ptr<FenceTime>& rfence = records[idx].frameReadyFence ;
156140 if (rfence != nullptr ) {
157141 records[idx].frameReadyTime = rfence->getSignalTime ();
158142 if (records[idx].frameReadyTime < INT64_MAX) {
159143 records[idx].frameReadyFence = nullptr ;
160144 numFences--;
161- updated = true ;
162145 }
163146 }
164147
@@ -169,58 +152,7 @@ void FrameTracker::processFencesLocked() const {
169152 if (records[idx].actualPresentTime < INT64_MAX) {
170153 records[idx].actualPresentFence = nullptr ;
171154 numFences--;
172- updated = true ;
173- }
174- }
175-
176- if (updated) {
177- updateStatsLocked (idx);
178- }
179- }
180- }
181-
182- void FrameTracker::updateStatsLocked (size_t newFrameIdx) const {
183- int * numFrames = const_cast <int *>(mNumFrames );
184-
185- if (mDisplayPeriod > 0 && isFrameValidLocked (newFrameIdx)) {
186- size_t prevFrameIdx = (newFrameIdx+NUM_FRAME_RECORDS-1 ) %
187- NUM_FRAME_RECORDS;
188-
189- if (isFrameValidLocked (prevFrameIdx)) {
190- nsecs_t newPresentTime =
191- mFrameRecords [newFrameIdx].actualPresentTime ;
192- nsecs_t prevPresentTime =
193- mFrameRecords [prevFrameIdx].actualPresentTime ;
194-
195- nsecs_t duration = newPresentTime - prevPresentTime;
196- int numPeriods = int ((duration + mDisplayPeriod /2 ) /
197- mDisplayPeriod );
198-
199- for (int i = 0 ; i < NUM_FRAME_BUCKETS-1 ; i++) {
200- int nextBucket = 1 << (i+1 );
201- if (numPeriods < nextBucket) {
202- numFrames[i]++;
203- return ;
204- }
205155 }
206-
207- // The last duration bucket is a catch-all.
208- numFrames[NUM_FRAME_BUCKETS-1 ]++;
209- }
210- }
211- }
212-
213- void FrameTracker::resetFrameCountersLocked () {
214- for (int i = 0 ; i < NUM_FRAME_BUCKETS; i++) {
215- mNumFrames [i] = 0 ;
216- }
217- }
218-
219- void FrameTracker::logStatsLocked (const std::string_view& name) const {
220- for (int i = 0 ; i < NUM_FRAME_BUCKETS; i++) {
221- if (mNumFrames [i] > 0 ) {
222- EventLog::logFrameDurations (name, mNumFrames , NUM_FRAME_BUCKETS);
223- return ;
224156 }
225157 }
226158}
0 commit comments