[SurfaceFlinger] Adjust missed frame tracking

Before, missed frame tracking may be inaccurate if a frame takes longer
than one vsync and either an invalidate message is not immediately
scheduled afterwards, or the frame takes almost as long as two vsyncs
but manages to be on time to be presented for that second vsync. Those
scenarios can cause visual jank, but they are not tracked by missed
frames which affects testing.

* Rename the previous missedFrames to pendingFrames
* pendingFrames is used to check for backpressure propagation so there
is no change to device behavior
* Compute a new missedFrames count by relaxing the check for
pendingFrames - if the expected present time of the previous frame was
earlier than the actual present time then that frame was missed. We add
half a vsync of slop to correct for scheduling drift.

Bug: 143647283
Test: boots
Test: systrace
Change-Id: I0f76d06737f5182c512ca6f36b332b68192250c3
2 files changed