diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 38b57153b74a6..bdad7727071fc 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -526,8 +526,9 @@ nsecs_t CanvasContext::draw() { if (vsyncId != UiFrameInfoBuilder::INVALID_VSYNC_ID) { const auto inputEventId = static_cast(mCurrentFrameInfo->get(FrameInfoIndex::InputEventId)); - native_window_set_frame_timeline_info(mNativeSurface->getNativeWindow(), vsyncId, - inputEventId); + native_window_set_frame_timeline_info( + mNativeSurface->getNativeWindow(), vsyncId, inputEventId, + mCurrentFrameInfo->get(FrameInfoIndex::FrameStartTime)); } } diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt index f00eef2f1b001..3c1aa4409254b 100644 --- a/native/android/libandroid.map.txt +++ b/native/android/libandroid.map.txt @@ -263,6 +263,7 @@ LIBANDROID { ASurfaceTransaction_setEnableBackPressure; # introduced=31 ASurfaceTransaction_setFrameRate; # introduced=30 ASurfaceTransaction_setFrameRateWithChangeStrategy; # introduced=31 + ASurfaceTransaction_setFrameTimeline; # introduced=Tiramisu ASurfaceTransaction_setGeometry; # introduced=29 ASurfaceTransaction_setHdrMetadata_cta861_3; # introduced=29 ASurfaceTransaction_setHdrMetadata_smpte2086; # introduced=29 diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp index f76811ee10628..5b19102334d91 100644 --- a/native/android/surface_control.cpp +++ b/native/android/surface_control.cpp @@ -659,3 +659,11 @@ void ASurfaceTransaction_setOnCommit(ASurfaceTransaction* aSurfaceTransaction, v transaction->addTransactionCommittedCallback(callback, context); } + +void ASurfaceTransaction_setFrameTimeline(ASurfaceTransaction* aSurfaceTransaction, + int64_t vsyncId) { + CHECK_NOT_NULL(aSurfaceTransaction); + // TODO(b/210043506): Get start time from platform. + ASurfaceTransaction_to_Transaction(aSurfaceTransaction) + ->setFrameTimelineInfo({.vsyncId = vsyncId, .startTimeNanos = 0}); +}