summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2020-09-21 14:37:41 -0700
committerJohn Reck <jreck@google.com>2020-09-21 21:43:20 +0000
commit58f3306d05ca50fab731d66d4df3e839f4f1eedd (patch)
tree739fd8211264de6fd003b195460ff5710b24edae
parent1989311276e851a2e9c8dadc44481a665b2bf39d (diff)
Fix override setBufferCount
The logic in setBufferCount was still assuming it needed to inject the extra buffers, however that injection was already happening in the min_undequeued query. So it was increasing buffercount by 2x the extraCount, or concretely 5 buffers when it should have been 4 on >75hz devices Bug: 168928692 Test: Boot coral, verify 4 buffers instead of 5 Change-Id: I0908228a6791d90544fbf4cb21170931bd31a9db
-rw-r--r--libs/hwui/renderthread/CanvasContext.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index a362bd220936..667a7517a24c 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -139,7 +139,7 @@ void CanvasContext::destroy() {
mAnimationContext->destroy();
}
-static void setBufferCount(ANativeWindow* window, uint32_t extraBuffers) {
+static void setBufferCount(ANativeWindow* window) {
int query_value;
int err = window->query(window, NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS, &query_value);
if (err != 0 || query_value < 0) {
@@ -148,7 +148,9 @@ static void setBufferCount(ANativeWindow* window, uint32_t extraBuffers) {
}
auto min_undequeued_buffers = static_cast<uint32_t>(query_value);
- int bufferCount = min_undequeued_buffers + 2 + extraBuffers;
+ // We only need to set min_undequeued + 2 because the renderahead amount was already factored into the
+ // query for min_undequeued
+ int bufferCount = min_undequeued_buffers + 2;
native_window_set_buffer_count(window, bufferCount);
}
@@ -179,7 +181,8 @@ void CanvasContext::setSurface(ANativeWindow* window, bool enableTimeout) {
mNativeSurface ? mNativeSurface->getNativeWindow() : nullptr, mSwapBehavior);
if (mNativeSurface && !mNativeSurface->didSetExtraBuffers()) {
- setBufferCount(mNativeSurface->getNativeWindow(), mRenderAheadCapacity);
+ setBufferCount(mNativeSurface->getNativeWindow());
+
}
mFrameNumber = -1;