History log of /frameworks/native/libs/gui/FrameTimestamps.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4e606e3901b500bdd0f3ea21b8cb63734087bf0a 16-Mar-2017 Brian Anderson <brianderson@google.com> egl: Remove retire event.

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: Ibf63d22e42ae52307662107eec50f80de0e703f5
/frameworks/native/libs/gui/FrameTimestamps.cpp
5ea5e5905170f32d5cf45ad35c552d64743892c3 02-Dec-2016 Brian Anderson <brianderson@google.com> Fix unexpected FrameEvents on BufferQueue reconnect

Helps reduce the number of ALOGE's being hit
when switching between apps.

* Notify Layer when the Producer disconnects.
* Avoid sending event deltas from a previous connection.
* Avoid releasing a frame more than once.

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I64f314be72ddb154b584d726ac382cd468e345bf
/frameworks/native/libs/gui/FrameTimestamps.cpp
ed816e6cb4ca15181bf6120890c85290b5f7c02b 27-Oct-2016 Brian Anderson <brianderson@google.com> Add FrameEvents::isValidTimestamp

Refactor only.

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I86653ac14186ca509f58a94047f25a7b74231b30
/frameworks/native/libs/gui/FrameTimestamps.cpp
b04c6f03a2334b03ae0105ec005aeecfa61f4a90 21-Oct-2016 Brian Anderson <brianderson@google.com> Change GL references to GPU for getFrameTimestamps.

Test: Rename only.

Change-Id: Idaf7ab38f78f58aa8387823f47dac084e21eb1f0
/frameworks/native/libs/gui/FrameTimestamps.cpp
8cc8b10e27d515a6962ae6c66a62387ced45f5fe 21-Oct-2016 Brian Anderson <brianderson@google.com> Clean up FrameTimestamp log messages.

Test: Log message changes only. Existing tests pass.

Change-Id: I032c76393a4949b291c3a650279367caf05a775c
/frameworks/native/libs/gui/FrameTimestamps.cpp
0a61b0c813f5991bf462e36a2314dda062727a10 07-Dec-2016 Brian Anderson <brianderson@google.com> EGL: Add eglGetCompositorTimingANDROID.

Exposes the composite deadline, composite interval, and
the composite to present latency.

A history of composite and present fences are stored.
When the present fence's timestamp becomes known,
the composite to present latency is updated with
sampling jitter removed.

The values are updated in the producer when timestamps
are enabled and on queue and dequeue.

The deadline is snapped to the next expected deadline
based on the current systemTime().

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I406814258613b984b56488236632494f2f61ff2e
/frameworks/native/libs/gui/FrameTimestamps.cpp
f6386862dffb0fb9cb39343d959104a32e5e95b7 01-Nov-2016 Brian Anderson <brianderson@google.com> Add a DequeueReady FrameEvent

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I98ffd4123fc50b5f560e432f4078408c913c8edf
/frameworks/native/libs/gui/FrameTimestamps.cpp
175a7206c5aea70236b916d7707ab25025eb9cd6 11-Oct-2016 Brian Anderson <brianderson@google.com> Clean up Fence a little.

Test: Cleanup patch only. Fences still work.

Change-Id: I65e5cdf5e3c067bc475c085ab6d3577d9753231c
/frameworks/native/libs/gui/FrameTimestamps.cpp
3da8d2748580b2575e368e203ce2c7f8d34dea05 29-Jul-2016 Brian Anderson <brianderson@google.com> Surface unit tests for getFrameTimestamps.

Verifies the following:

1) The timestamps and fences aren't transferred if the
feature isn't explicitly enabled.
2) Attempts to get the timestamps will fail if not enabled.
3) Timestamps are transferred if enabled.
4) The support for Present/Retire timestamps are properly
queried from the ISurfaceComposer.
5) Timestamps correspond to the correct frame.
6) The consumer doesn't send the acquire fence back to the
producer and a sync call isn't made to try and get it
from the producer.
7) A sync call isn't made when no timestamps are requested.
8) If the consumer sent the producer fences, the consumer
can get the timestamps without a sync call.
9) If there was no GL composite performed, a sync call
isn't made to get a non-existant fence/time.
10) When asking for the retire or release time of the most
recent frame, a sync call isn't made.
11) Requests for unsupported timestamps return an error and
do not result in a sync call.

Test: Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I6f728af0d4a0f431c9e47131da64584a589559e7
/frameworks/native/libs/gui/FrameTimestamps.cpp
4565daa628d914f05dabfeca83d2e5ee07936a99 14-Dec-2016 Brian Anderson <brianderson@google.com> Suppress unnecessary "frame not found" errors.

ConsumerFrameEventHistory only stores 8 frames of history,
but video can queue more than 8 frames, which triggers
some annoying ALOGE messages that aren't really errors.

This patch makes sure to print the error only if the
producer has enabled the frame events, which only happens
with EGL where we won't see more than 3 frames queued.

Test: This only affects error reporting.

Change-Id: I184202a71f5fe29159c148957b92fb2e856bf625
/frameworks/native/libs/gui/FrameTimestamps.cpp
3d4039d7a291cd9b6f2dd4b46fcdb576f2db3356 24-Sep-2016 Brian Anderson <brianderson@google.com> Use FenceTime to share fence times and reduce open fds.

FenceTimes are created and shared for each Fence that
FrameTimestampHistory and FrameTracker care about.

On the consumer side, the FenceTimes are also added to
shared timelines that are owned by SurfaceFlinger or
unshared timelines owned by Layer. The timelines are
checked at the end of every frame to minimize the number
of file descriptors open.

On the producer side, the FenceTimes are added to
the ConsumerFrameEventHistory instead, since the timelines
that would be tracked by SurfaceFlinger are not shared
with anyone else in the consumer's process. The timelines
are checked just after a frame is queued to minimize
the number of file descriptors open.

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: Ifd4301affe1b24705b2bee7608c5a2c09dfb4041
/frameworks/native/libs/gui/FrameTimestamps.cpp
7c3ba8aa288755fad78ddbabcee0ad5a0610ac1c 25-Jul-2016 Brian Anderson <brianderson@google.com> Update producer's cache of frame events in de/queue

* Cache is only updated during queue and dequeue if
the getFrameTimestamps is enabled.
* The consumer avoids sending a copy of the acquire
fence back to the producer since the producer
already has a copy.

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I6a8b965ae79441a40893b5df937f9ed004fe7359
/frameworks/native/libs/gui/FrameTimestamps.cpp
3890c3995c4a52439844faeb80b5503d42b977d8 25-Jul-2016 Brian Anderson <brianderson@google.com> Cache frame event history producer-side.

* Producer maintains a recent history of frames.
* Producer only does a binder call if requested
informatiVon doesn't exist in the cache.
* Consumer sends fences to the producer, which
can be queried for timestamps without a
binder call.

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I8a64579407cc2935f5c659462cb227b07ba27e43
/frameworks/native/libs/gui/FrameTimestamps.cpp
d6927fb1143398370c0885844bfb58923ef740b7 24-Jul-2016 Brian Anderson <brianderson@google.com> Track frame events incrementally and per layer.

* Replaces FenceTracker, which was owned by SurfaceFlinger,
with FrameEventHistory, which is owned by Layer.
* Updates FrameEventHistory as events occur.
* Changes SurfaceFlinger flag "--fences" to
"--frame-events".

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I868c2ef93964656d7e41848243433499e7f45fe7
/frameworks/native/libs/gui/FrameTimestamps.cpp