surfaceflinger: skip buffer cache when BYPASS_IHWC
When SF talks to hwcomposer2 directly, we should skip HWC buffer
cache. The cache works somehow similar to
IGraphicBufferConsumer::acquireBuffer, where buffer is set to
nullptr when it is already seen previously. That confuses
hwcomposer2.
Bug: 35325794
Test: manual
Change-Id: I5306ecc9e7290bc6734091a9884024bf38667628
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index d2b26c2..4a281d4 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -914,6 +914,10 @@
const sp<GraphicBuffer>& buffer,
uint32_t* outSlot, sp<GraphicBuffer>* outBuffer)
{
+#ifdef BYPASS_IHWC
+ *outSlot = slot;
+ *outBuffer = buffer;
+#else
if (slot == BufferQueue::INVALID_BUFFER_SLOT || slot < 0) {
// default to slot 0
slot = 0;
@@ -934,6 +938,7 @@
// update cache
mBuffers[slot] = buffer;
}
+#endif
}
// ---------------------------------------------------------------------------