From debd1cbcd488becc629293cfcc4fc5b2ee4ef8b2 Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Tue, 16 Mar 2021 10:06:01 -0700 Subject: Remove legacy disable triple buffering config The config changes the dequeue limit of BQ (setMaxDequeuedBufferCount) from 2 to 1, decreasing the default size of the queue from (3 to 2). Some of the motivations behind this change include: - not applicable in most scenarios since producers in the system override this - breaks async mode, not well tested in other scenarios - simplifying some of the implementation and removes a configuration/flag. Clients can still manually call setMaxDequeuedBufferCount if they wish. Test: presubmit Fixes: 182314340 Change-Id: Iea88e8a795b91ff325610cfb1eefbcfe6e434841 --- libs/gui/BLASTBufferQueue.cpp | 8 +++----- libs/gui/include/gui/BLASTBufferQueue.h | 2 +- services/surfaceflinger/BufferQueueLayer.cpp | 5 +---- services/surfaceflinger/SurfaceFlinger.cpp | 7 ------- services/surfaceflinger/SurfaceFlinger.h | 7 ------- 5 files changed, 5 insertions(+), 24 deletions(-) diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp index 82c9268feb..9490314b71 100644 --- a/libs/gui/BLASTBufferQueue.cpp +++ b/libs/gui/BLASTBufferQueue.cpp @@ -130,8 +130,7 @@ void BLASTBufferItemConsumer::onSidebandStreamChanged() { } BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const sp& surface, - int width, int height, int32_t format, - bool enableTripleBuffering) + int width, int height, int32_t format) : mName(name), mSurfaceControl(surface), mSize(width, height), @@ -143,9 +142,8 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const spsetDequeueTimeout(std::numeric_limits::max()); - if (enableTripleBuffering) { - mProducer->setMaxDequeuedBufferCount(2); - } + // safe default, most producers are expected to override this + mProducer->setMaxDequeuedBufferCount(2); mBufferItemConsumer = new BLASTBufferItemConsumer(mConsumer, GraphicBuffer::USAGE_HW_COMPOSER | GraphicBuffer::USAGE_HW_TEXTURE, diff --git a/libs/gui/include/gui/BLASTBufferQueue.h b/libs/gui/include/gui/BLASTBufferQueue.h index dd8e714e23..9516bfb4b0 100644 --- a/libs/gui/include/gui/BLASTBufferQueue.h +++ b/libs/gui/include/gui/BLASTBufferQueue.h @@ -74,7 +74,7 @@ class BLASTBufferQueue { public: BLASTBufferQueue(const std::string& name, const sp& surface, int width, - int height, int32_t format, bool enableTripleBuffering = true); + int height, int32_t format); sp getIGraphicBufferProducer() const { return mProducer; diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp index 63dd25f72f..c0ce84f31b 100644 --- a/services/surfaceflinger/BufferQueueLayer.cpp +++ b/services/surfaceflinger/BufferQueueLayer.cpp @@ -521,10 +521,7 @@ void BufferQueueLayer::onFirstRef() { mConsumer->setContentsChangedListener(mContentsChangedListener); mConsumer->setName(String8(mName.data(), mName.size())); - // BufferQueueCore::mMaxDequeuedBufferCount is default to 1 - if (!mFlinger->isLayerTripleBufferingDisabled()) { - mProducer->setMaxDequeuedBufferCount(2); - } + mProducer->setMaxDequeuedBufferCount(2); } status_t BufferQueueLayer::setDefaultBufferProperties(uint32_t w, uint32_t h, PixelFormat format) { diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 9da94832ae..284c715ef9 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -441,10 +441,6 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI mUseHwcVirtualDisplays = atoi(value); ALOGI_IF(mUseHwcVirtualDisplays, "Enabling HWC virtual displays"); - property_get("ro.sf.disable_triple_buffer", value, "0"); - mLayerTripleBufferingDisabled = atoi(value); - ALOGI_IF(mLayerTripleBufferingDisabled, "Disabling Triple Buffering"); - property_get("ro.surface_flinger.supports_background_blur", value, "0"); bool supportsBlurs = atoi(value); mSupportsBlur = supportsBlurs; @@ -4549,9 +4545,6 @@ void SurfaceFlinger::logFrameStats() { void SurfaceFlinger::appendSfConfigString(std::string& result) const { result.append(" [sf"); - if (isLayerTripleBufferingDisabled()) - result.append(" DISABLE_TRIPLE_BUFFERING"); - StringAppendF(&result, " PRESENT_TIME_OFFSET=%" PRId64, dispSyncPresentTimeOffset); StringAppendF(&result, " FORCE_HWC_FOR_RBG_TO_YUV=%d", useHwcForRgbToYuv); StringAppendF(&result, " MAX_VIRT_DISPLAY_DIM=%" PRIu64, maxVirtualDisplaySize); diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 3787b9db89..779859a7ad 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -1093,10 +1093,6 @@ private: void dumpOffscreenLayers(std::string& result) EXCLUDES(mStateLock); void dumpPlannerInfo(const DumpArgs& args, std::string& result) const REQUIRES(mStateLock); - bool isLayerTripleBufferingDisabled() const { - return this->mLayerTripleBufferingDisabled; - } - status_t doDump(int fd, const DumpArgs& args, bool asProto); status_t dumpCritical(int fd, const DumpArgs&, bool asProto); @@ -1250,9 +1246,6 @@ private: TransactionCallbackInvoker mTransactionCallbackInvoker; - // Restrict layers to use two buffers in their bufferqueues. - bool mLayerTripleBufferingDisabled = false; - // these are thread safe std::unique_ptr mEventQueue; FrameTracker mAnimFrameTracker; -- cgit v1.2.3-59-g8ed1b