diff options
| author | 2021-03-16 10:06:01 -0700 | |
|---|---|---|
| committer | 2021-03-18 18:33:22 +0000 | |
| commit | debd1cbcd488becc629293cfcc4fc5b2ee4ef8b2 (patch) | |
| tree | 2d67513c486a69c7525de3080534d81543e98db6 | |
| parent | 2bbc3a88bd653c050ea270b6456747b40a44c5b3 (diff) | |
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
| -rw-r--r-- | libs/gui/BLASTBufferQueue.cpp | 8 | ||||
| -rw-r--r-- | libs/gui/include/gui/BLASTBufferQueue.h | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/BufferQueueLayer.cpp | 5 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 7 | ||||
| -rw-r--r-- | 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<SurfaceControl>& 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 sp<SurfaceCont // explicitly so that dequeueBuffer will block mProducer->setDequeueTimeout(std::numeric_limits<int64_t>::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<SurfaceControl>& surface, int width, - int height, int32_t format, bool enableTripleBuffering = true); + int height, int32_t format); sp<IGraphicBufferProducer> 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<MessageQueue> mEventQueue; FrameTracker mAnimFrameTracker; |