diff options
| author | 2022-01-24 19:54:33 +0000 | |
|---|---|---|
| committer | 2022-01-24 19:54:33 +0000 | |
| commit | 582c98b9be21d1bef49b8a7c8d5138c22c36b3ed (patch) | |
| tree | e6b1e9b42eabacbe55dc0388ca9b28836ce83a87 | |
| parent | 6db68e1d8390a145bbfeb62e2f392052b1d5868a (diff) | |
| parent | 1fb2ddcb4cfb3c848b69ae2fe27b6c1b66ae792c (diff) | |
Merge "Improve ASurfaceTransaction_setFrameTimeline docs."
| -rw-r--r-- | include/android/choreographer.h | 8 | ||||
| -rw-r--r-- | include/android/surface_control.h | 17 | ||||
| -rw-r--r-- | libs/nativedisplay/AChoreographer.cpp | 4 | ||||
| -rw-r--r-- | libs/nativedisplay/include-private/private/android/choreographer.h | 2 |
4 files changed, 24 insertions, 7 deletions
diff --git a/include/android/choreographer.h b/include/android/choreographer.h index 6f579ca0af..98f0eec8cc 100644 --- a/include/android/choreographer.h +++ b/include/android/choreographer.h @@ -39,6 +39,12 @@ struct AChoreographer; */ typedef struct AChoreographer AChoreographer; + +/** + * The identifier of a frame timeline. + */ +typedef int64_t AVsyncId; + struct AChoreographerFrameCallbackData; /** * Opaque type that provides access to an AChoreographerFrameCallbackData object. @@ -203,7 +209,7 @@ size_t AChoreographerFrameCallbackData_getPreferredFrameTimelineIndex( /** * The vsync ID token used to map Choreographer data. */ -int64_t AChoreographerFrameCallbackData_getFrameTimelineVsyncId( +AVsyncId AChoreographerFrameCallbackData_getFrameTimelineVsyncId( const AChoreographerFrameCallbackData* data, size_t index) __INTRODUCED_IN(33); /** diff --git a/include/android/surface_control.h b/include/android/surface_control.h index 3a131045e8..9a36ecb537 100644 --- a/include/android/surface_control.h +++ b/include/android/surface_control.h @@ -28,6 +28,7 @@ #include <sys/cdefs.h> +#include <android/choreographer.h> #include <android/data_space.h> #include <android/hardware_buffer.h> #include <android/hdr_metadata.h> @@ -596,13 +597,23 @@ void ASurfaceTransaction_setEnableBackPressure(ASurfaceTransaction* transaction, __INTRODUCED_IN(31); /** - * Sets the frame timeline to use. + * Sets the frame timeline to use in Surface Flinger. + * + * A frame timeline should be chosen based on what frame deadline the application + * can meet when rendering the frame and the application's desired present time. + * By setting a frame timeline, Surface Flinger tries to present the frame at the corresponding + * expected present time. + * + * To receive frame timelines, a callback must be posted to Choreographer using + * AChoreographer_postExtendedFrameCallback(). The \a vsnycId can then be extracted from the + * callback payload using AChoreographerFrameCallbackData_getFrameTimelineVsyncId(). * * \param vsyncId The vsync ID received from AChoreographer, setting the frame's present target to - * the corresponding expected present time and deadline from the frame to be rendered. + * the corresponding expected present time and deadline from the frame to be rendered. A stale or + * invalid value will be ignored. */ void ASurfaceTransaction_setFrameTimeline(ASurfaceTransaction* transaction, - int64_t vsyncId) __INTRODUCED_IN(33); + AVsyncId vsyncId) __INTRODUCED_IN(33); __END_DECLS diff --git a/libs/nativedisplay/AChoreographer.cpp b/libs/nativedisplay/AChoreographer.cpp index 84daea09f0..d90ee57322 100644 --- a/libs/nativedisplay/AChoreographer.cpp +++ b/libs/nativedisplay/AChoreographer.cpp @@ -552,7 +552,7 @@ size_t AChoreographerFrameCallbackData_routeGetPreferredFrameTimelineIndex( const AChoreographerFrameCallbackData* data) { return AChoreographerFrameCallbackData_getPreferredFrameTimelineIndex(data); } -int64_t AChoreographerFrameCallbackData_routeGetFrameTimelineVsyncId( +AVsyncId AChoreographerFrameCallbackData_routeGetFrameTimelineVsyncId( const AChoreographerFrameCallbackData* data, size_t index) { return AChoreographerFrameCallbackData_getFrameTimelineVsyncId(data, index); } @@ -644,7 +644,7 @@ size_t AChoreographerFrameCallbackData_getPreferredFrameTimelineIndex( "Data is only valid in callback"); return frameCallbackData->preferredFrameTimelineIndex; } -int64_t AChoreographerFrameCallbackData_getFrameTimelineVsyncId( +AVsyncId AChoreographerFrameCallbackData_getFrameTimelineVsyncId( const AChoreographerFrameCallbackData* data, size_t index) { const ChoreographerFrameCallbackDataImpl* frameCallbackData = AChoreographerFrameCallbackData_to_ChoreographerFrameCallbackDataImpl(data); diff --git a/libs/nativedisplay/include-private/private/android/choreographer.h b/libs/nativedisplay/include-private/private/android/choreographer.h index 0a1fcbeb94..d650c26605 100644 --- a/libs/nativedisplay/include-private/private/android/choreographer.h +++ b/libs/nativedisplay/include-private/private/android/choreographer.h @@ -65,7 +65,7 @@ size_t AChoreographerFrameCallbackData_routeGetFrameTimelinesLength( const AChoreographerFrameCallbackData* data); size_t AChoreographerFrameCallbackData_routeGetPreferredFrameTimelineIndex( const AChoreographerFrameCallbackData* data); -int64_t AChoreographerFrameCallbackData_routeGetFrameTimelineVsyncId( +AVsyncId AChoreographerFrameCallbackData_routeGetFrameTimelineVsyncId( const AChoreographerFrameCallbackData* data, size_t index); int64_t AChoreographerFrameCallbackData_routeGetFrameTimelineExpectedPresentTimeNanos( const AChoreographerFrameCallbackData* data, size_t index); |