Move maxAcquired back to 1 and set maxDequeued
BufferQueue internally already limits number of acquired buffers to be 1
more than the maxAcquired set. We want to be able to acquire 2, so
setting back to 1. Enable triple buffering through maxDequeuedCount.
Bug: 146345307
Test: build, boot, turn BLAST ON, run manually, libgui_test
Change-Id: I1deff382da3b37a2bde840802fdc4c10a8b868ed
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp
index e2f5d31..4bbc855 100644
--- a/libs/gui/BLASTBufferQueue.cpp
+++ b/libs/gui/BLASTBufferQueue.cpp
@@ -19,6 +19,8 @@
#define ATRACE_TAG ATRACE_TAG_GRAPHICS
+#include <cutils/properties.h>
+
#include <gui/BLASTBufferQueue.h>
#include <gui/BufferItemConsumer.h>
#include <gui/GLConsumer.h>
@@ -99,7 +101,11 @@
mHeight(height),
mNextTransaction(nullptr) {
BufferQueue::createBufferQueue(&mProducer, &mConsumer);
- mConsumer->setMaxAcquiredBufferCount(MAX_ACQUIRED_BUFFERS);
+
+ int8_t disableTripleBuffer = property_get_bool("ro.sf.disable_triple_buffer", 0);
+ if (!disableTripleBuffer) {
+ mProducer->setMaxDequeuedBufferCount(2);
+ }
mBufferItemConsumer =
new BLASTBufferItemConsumer(mConsumer, AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER, 1, true);
static int32_t id = 0;
@@ -181,7 +187,7 @@
void BLASTBufferQueue::processNextBufferLocked() {
ATRACE_CALL();
- if (mNumFrameAvailable == 0 || mNumAcquired == MAX_ACQUIRED_BUFFERS) {
+ if (mNumFrameAvailable == 0 || mNumAcquired == MAX_ACQUIRED_BUFFERS + 1) {
return;
}