Handle buffer orientation when rejecting buffers via blast
Bug: 168504870
Test: SurfaceViewBufferTests
Test: go/wm-smoke with `adb shell device_config put window_manager_native_boot wm_use_blast_adapter true`
Test: atest libgui_test
Change-Id: Ib699b3d388b1b62346515d32bcde81bf03e6f5fd
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp
index cce434a..87f7972 100644
--- a/libs/gui/BLASTBufferQueue.cpp
+++ b/libs/gui/BLASTBufferQueue.cpp
@@ -18,7 +18,7 @@
#define LOG_TAG "BLASTBufferQueue"
#define ATRACE_TAG ATRACE_TAG_GRAPHICS
-// #define LOG_NDEBUG 0
+//#define LOG_NDEBUG 0
#include <gui/BLASTBufferQueue.h>
#include <gui/BufferItemConsumer.h>
@@ -252,8 +252,8 @@
}
if (rejectBuffer(bufferItem)) {
- BQA_LOGE("rejecting buffer: configured width=%d, height=%d, buffer{w=%d, h=%d}", mWidth,
- mHeight, buffer->getWidth(), buffer->getHeight());
+ BQA_LOGE("rejecting buffer:configured size=%dx%d, buffer{size=%dx%d transform=%d}", mWidth,
+ mHeight, buffer->getWidth(), buffer->getHeight(), bufferItem.mTransform);
mBufferItemConsumer->releaseBuffer(bufferItem, Fence::NO_FENCE);
return;
}
@@ -330,7 +330,15 @@
return false;
}
+ uint32_t bufWidth = item.mGraphicBuffer->getWidth();
+ uint32_t bufHeight = item.mGraphicBuffer->getHeight();
+
+ // Take the buffer's orientation into account
+ if (item.mTransform & ui::Transform::ROT_90) {
+ std::swap(bufWidth, bufHeight);
+ }
+
// reject buffers if the buffer size doesn't match.
- return item.mGraphicBuffer->getWidth() != mWidth || item.mGraphicBuffer->getHeight() != mHeight;
+ return bufWidth != mWidth || bufHeight != mHeight;
}
} // namespace android