From 497e81c9fb9d955391678bbf0776b75d397e9ad9 Mon Sep 17 00:00:00 2001 From: chaviw Date: Thu, 4 Feb 2021 17:09:47 -0800 Subject: Convert certain format types to another buffer format. Parity the code from BufferQueueLayer where it converted certain user passed formats into supported formats Test: Builds Fixes: 179066417 Change-Id: I3d9e04491ec4adbd27d5efd53e84075c762ee386 --- libs/gui/BLASTBufferQueue.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'libs/gui/BLASTBufferQueue.cpp') diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp index c62d9ad440..c2ec0fe078 100644 --- a/libs/gui/BLASTBufferQueue.cpp +++ b/libs/gui/BLASTBufferQueue.cpp @@ -142,7 +142,7 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const spsetFrameAvailableListener(this); mBufferItemConsumer->setBufferFreedListener(this); mBufferItemConsumer->setDefaultBufferSize(mSize.width, mSize.height); - mBufferItemConsumer->setDefaultBufferFormat(format); + mBufferItemConsumer->setDefaultBufferFormat(convertBufferFormat(format)); mTransformHint = mSurfaceControl->getTransformHint(); mBufferItemConsumer->setTransformHint(mTransformHint); @@ -175,7 +175,7 @@ void BLASTBufferQueue::update(const sp& surface, uint32_t width, std::unique_lock _lock{mMutex}; if (mFormat != format) { mFormat = format; - mBufferItemConsumer->setDefaultBufferFormat(format); + mBufferItemConsumer->setDefaultBufferFormat(convertBufferFormat(format)); } SurfaceComposerClient::Transaction t; @@ -683,4 +683,18 @@ void BLASTBufferQueue::createBufferQueue(sp* outProducer *outConsumer = consumer; } +PixelFormat BLASTBufferQueue::convertBufferFormat(PixelFormat& format) { + PixelFormat convertedFormat = format; + switch (format) { + case PIXEL_FORMAT_TRANSPARENT: + case PIXEL_FORMAT_TRANSLUCENT: + convertedFormat = PIXEL_FORMAT_RGBA_8888; + break; + case PIXEL_FORMAT_OPAQUE: + convertedFormat = PIXEL_FORMAT_RGBX_8888; + break; + } + return convertedFormat; +} + } // namespace android -- cgit v1.2.3-59-g8ed1b