From 564f9deb6d5c9ee27bd6a84f7c6e4544ad9e174a Mon Sep 17 00:00:00 2001 From: Ady Abraham Date: Wed, 3 Feb 2021 18:34:33 -0800 Subject: SurfaceFlinger: expose vsync id extra buffers Expose a function for clients to call and query the number of extra buffers needed when vsync id is passed with the buffer. Test: launch an app and observe systrace Test: SF unit tests Bug: 178148035 Change-Id: Icbeec66073feeae9768f0dcc45831b26144ab6f6 --- libs/gui/Surface.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libs/gui/Surface.cpp') diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index 59ad8d28bd..07fc0694d6 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -1499,6 +1499,9 @@ int Surface::perform(int operation, va_list args) case NATIVE_WINDOW_SET_FRAME_TIMELINE_INFO: res = dispatchSetFrameTimelineInfo(args); break; + case NATIVE_WINDOW_GET_EXTRA_BUFFER_COUNT: + res = dispatchGetExtraBufferCount(args); + break; default: res = NAME_NOT_FOUND; break; @@ -1815,6 +1818,14 @@ int Surface::dispatchSetFrameTimelineInfo(va_list args) { return setFrameTimelineInfo({frameTimelineVsyncId, inputEventId}); } +int Surface::dispatchGetExtraBufferCount(va_list args) { + ATRACE_CALL(); + auto extraBuffers = static_cast(va_arg(args, int*)); + + ALOGV("Surface::dispatchGetExtraBufferCount"); + return getExtraBufferCount(extraBuffers); +} + bool Surface::transformToDisplayInverse() { return (mTransform & NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY) == NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY; @@ -2584,4 +2595,8 @@ status_t Surface::setFrameTimelineInfo(const FrameTimelineInfo& frameTimelineInf return composerService()->setFrameTimelineInfo(mGraphicBufferProducer, frameTimelineInfo); } +status_t Surface::getExtraBufferCount(int* extraBuffers) const { + return composerService()->getExtraBufferCount(extraBuffers); +} + }; // namespace android -- cgit v1.2.3-59-g8ed1b