Loading libs/gui/BLASTBufferQueue.cpp +11 −3 Original line number Diff line number Diff line Loading @@ -117,11 +117,13 @@ void BLASTBufferItemConsumer::getConnectionEvents(uint64_t frameNumber, bool* ne } BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const sp<SurfaceControl>& surface, int width, int height, bool enableTripleBuffering) int width, int height, int32_t format, bool enableTripleBuffering) : mName(name), mSurfaceControl(surface), mSize(width, height), mRequestedSize(mSize), mFormat(format), mNextTransaction(nullptr) { createBufferQueue(&mProducer, &mConsumer); // since the adapter is in the client process, set dequeue timeout Loading @@ -140,7 +142,7 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const sp<SurfaceCont mBufferItemConsumer->setFrameAvailableListener(this); mBufferItemConsumer->setBufferFreedListener(this); mBufferItemConsumer->setDefaultBufferSize(mSize.width, mSize.height); mBufferItemConsumer->setDefaultBufferFormat(PIXEL_FORMAT_RGBA_8888); mBufferItemConsumer->setDefaultBufferFormat(format); mTransformHint = mSurfaceControl->getTransformHint(); mBufferItemConsumer->setTransformHint(mTransformHint); Loading @@ -164,10 +166,16 @@ BLASTBufferQueue::~BLASTBufferQueue() { t.apply(); } void BLASTBufferQueue::update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height) { void BLASTBufferQueue::update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height, int32_t format) { std::unique_lock _lock{mMutex}; mSurfaceControl = surface; if (mFormat != format) { mFormat = format; mBufferItemConsumer->setDefaultBufferFormat(format); } ui::Size newSize(width, height); if (mRequestedSize != newSize) { mRequestedSize.set(newSize); Loading libs/gui/include/gui/BLASTBufferQueue.h +3 −2 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ class BLASTBufferQueue { public: BLASTBufferQueue(const std::string& name, const sp<SurfaceControl>& surface, int width, int height, bool enableTripleBuffering = true); int height, int32_t format, bool enableTripleBuffering = true); sp<IGraphicBufferProducer> getIGraphicBufferProducer() const { return mProducer; Loading @@ -88,7 +88,7 @@ public: void setTransactionCompleteCallback(uint64_t frameNumber, std::function<void(int64_t)>&& transactionCompleteCallback); void update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height); void update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height, int32_t format); void flushShadowQueue() { mFlushShadowQueue = true; } status_t setFrameRate(float frameRate, int8_t compatibility, bool shouldBeSeamless); Loading Loading @@ -136,6 +136,7 @@ private: ui::Size mSize GUARDED_BY(mMutex); ui::Size mRequestedSize GUARDED_BY(mMutex); int32_t mFormat GUARDED_BY(mMutex); uint32_t mTransformHint GUARDED_BY(mMutex); Loading libs/gui/tests/BLASTBufferQueue_test.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -45,11 +45,12 @@ using android::hardware::graphics::common::V1_2::BufferUsage; class BLASTBufferQueueHelper { public: BLASTBufferQueueHelper(const sp<SurfaceControl>& sc, int width, int height) { mBlastBufferQueueAdapter = new BLASTBufferQueue("TestBLASTBufferQueue", sc, width, height); mBlastBufferQueueAdapter = new BLASTBufferQueue("TestBLASTBufferQueue", sc, width, height, PIXEL_FORMAT_RGBA_8888); } void update(const sp<SurfaceControl>& sc, int width, int height) { mBlastBufferQueueAdapter->update(sc, width, height); mBlastBufferQueueAdapter->update(sc, width, height, PIXEL_FORMAT_RGBA_8888); } void setNextTransaction(Transaction* next) { Loading Loading
libs/gui/BLASTBufferQueue.cpp +11 −3 Original line number Diff line number Diff line Loading @@ -117,11 +117,13 @@ void BLASTBufferItemConsumer::getConnectionEvents(uint64_t frameNumber, bool* ne } BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const sp<SurfaceControl>& surface, int width, int height, bool enableTripleBuffering) int width, int height, int32_t format, bool enableTripleBuffering) : mName(name), mSurfaceControl(surface), mSize(width, height), mRequestedSize(mSize), mFormat(format), mNextTransaction(nullptr) { createBufferQueue(&mProducer, &mConsumer); // since the adapter is in the client process, set dequeue timeout Loading @@ -140,7 +142,7 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const sp<SurfaceCont mBufferItemConsumer->setFrameAvailableListener(this); mBufferItemConsumer->setBufferFreedListener(this); mBufferItemConsumer->setDefaultBufferSize(mSize.width, mSize.height); mBufferItemConsumer->setDefaultBufferFormat(PIXEL_FORMAT_RGBA_8888); mBufferItemConsumer->setDefaultBufferFormat(format); mTransformHint = mSurfaceControl->getTransformHint(); mBufferItemConsumer->setTransformHint(mTransformHint); Loading @@ -164,10 +166,16 @@ BLASTBufferQueue::~BLASTBufferQueue() { t.apply(); } void BLASTBufferQueue::update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height) { void BLASTBufferQueue::update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height, int32_t format) { std::unique_lock _lock{mMutex}; mSurfaceControl = surface; if (mFormat != format) { mFormat = format; mBufferItemConsumer->setDefaultBufferFormat(format); } ui::Size newSize(width, height); if (mRequestedSize != newSize) { mRequestedSize.set(newSize); Loading
libs/gui/include/gui/BLASTBufferQueue.h +3 −2 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ class BLASTBufferQueue { public: BLASTBufferQueue(const std::string& name, const sp<SurfaceControl>& surface, int width, int height, bool enableTripleBuffering = true); int height, int32_t format, bool enableTripleBuffering = true); sp<IGraphicBufferProducer> getIGraphicBufferProducer() const { return mProducer; Loading @@ -88,7 +88,7 @@ public: void setTransactionCompleteCallback(uint64_t frameNumber, std::function<void(int64_t)>&& transactionCompleteCallback); void update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height); void update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height, int32_t format); void flushShadowQueue() { mFlushShadowQueue = true; } status_t setFrameRate(float frameRate, int8_t compatibility, bool shouldBeSeamless); Loading Loading @@ -136,6 +136,7 @@ private: ui::Size mSize GUARDED_BY(mMutex); ui::Size mRequestedSize GUARDED_BY(mMutex); int32_t mFormat GUARDED_BY(mMutex); uint32_t mTransformHint GUARDED_BY(mMutex); Loading
libs/gui/tests/BLASTBufferQueue_test.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -45,11 +45,12 @@ using android::hardware::graphics::common::V1_2::BufferUsage; class BLASTBufferQueueHelper { public: BLASTBufferQueueHelper(const sp<SurfaceControl>& sc, int width, int height) { mBlastBufferQueueAdapter = new BLASTBufferQueue("TestBLASTBufferQueue", sc, width, height); mBlastBufferQueueAdapter = new BLASTBufferQueue("TestBLASTBufferQueue", sc, width, height, PIXEL_FORMAT_RGBA_8888); } void update(const sp<SurfaceControl>& sc, int width, int height) { mBlastBufferQueueAdapter->update(sc, width, height); mBlastBufferQueueAdapter->update(sc, width, height, PIXEL_FORMAT_RGBA_8888); } void setNextTransaction(Transaction* next) { Loading