From f558ab782c566e995fa6b4ad546feaea46a207bd Mon Sep 17 00:00:00 2001 From: Ady Abraham Date: Tue, 18 May 2021 14:00:07 -0700 Subject: [PATCH] Remove the extra buffer allocation from hwui SurfaceFlinger will set the maxAcquiredBufferCount on the buffer queue to account for the extra buffers needed, depends on the refresh rate and app/sf durations, and there is no needed for any addional buffer allocation is hwui. Test: TBD Bug: 188553729 Change-Id: Ic441a6feb15f6b084d45c9e538b11b7b24e36a0e --- libs/hwui/renderthread/CanvasContext.cpp | 4 ---- libs/hwui/renderthread/ReliableSurface.cpp | 1 - libs/hwui/renderthread/ReliableSurface.h | 6 ------ 3 files changed, 11 deletions(-) diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index a0d93e928876c..a55aff1b9e671 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -174,16 +174,12 @@ void CanvasContext::setSurface(ANativeWindow* window, bool enableTimeout) { ATRACE_CALL(); if (window) { - int extraBuffers = 0; - native_window_get_extra_buffer_count(window, &extraBuffers); - mNativeSurface = std::make_unique(window); mNativeSurface->init(); if (enableTimeout) { // TODO: Fix error handling & re-shorten timeout ANativeWindow_setDequeueTimeout(window, 4000_ms); } - mNativeSurface->setExtraBufferCount(extraBuffers); } else { mNativeSurface = nullptr; } diff --git a/libs/hwui/renderthread/ReliableSurface.cpp b/libs/hwui/renderthread/ReliableSurface.cpp index c29cc11fa7ea4..6df34bee22241 100644 --- a/libs/hwui/renderthread/ReliableSurface.cpp +++ b/libs/hwui/renderthread/ReliableSurface.cpp @@ -278,7 +278,6 @@ int ReliableSurface::hook_query(const ANativeWindow *window, ANativeWindow_query int result = query(window, what, value); if (what == ANATIVEWINDOW_QUERY_MIN_UNDEQUEUED_BUFFERS && result == OK) { std::lock_guard _lock{rs->mMutex}; - *value += rs->mExtraBuffers; rs->mExpectedBufferCount = *value + 2; } return result; diff --git a/libs/hwui/renderthread/ReliableSurface.h b/libs/hwui/renderthread/ReliableSurface.h index 41969e776fc80..5959647410490 100644 --- a/libs/hwui/renderthread/ReliableSurface.h +++ b/libs/hwui/renderthread/ReliableSurface.h @@ -51,11 +51,6 @@ public: return ret; } - void setExtraBufferCount(size_t extraBuffers) { - std::lock_guard _lock{mMutex}; - mExtraBuffers = extraBuffers; - } - bool didSetExtraBuffers() const { std::lock_guard _lock{mMutex}; return mDidSetExtraBuffers; @@ -73,7 +68,6 @@ private: base::unique_fd mReservedFenceFd; bool mHasDequeuedBuffer = false; int mBufferQueueState = OK; - size_t mExtraBuffers = 0; size_t mExpectedBufferCount = 0; bool mDidSetExtraBuffers = false;