diff options
author | Alec Mouri <alecmouri@google.com> | 2019-03-21 11:44:18 -0700 |
---|---|---|
committer | Alec Mouri <alecmouri@google.com> | 2019-03-28 11:43:03 -0700 |
commit | d7b3a8bcf9946a32213812a46f9c88a910151686 (patch) | |
tree | 72870b23665ad96b703f4e1d32b7c0dabce54e89 /libs/gui/include | |
parent | dc705b9eafeb07326155a580e722c7dca8d61892 (diff) | |
download | android_frameworks_native-d7b3a8bcf9946a32213812a46f9c88a910151686.tar.gz android_frameworks_native-d7b3a8bcf9946a32213812a46f9c88a910151686.tar.bz2 android_frameworks_native-d7b3a8bcf9946a32213812a46f9c88a910151686.zip |
Create EGLImages during buffer allocation
EGLImage creation is now performed on an async binder thread, so now GPU
composition should rarely be stalled by expensive image creation.
Bug: 129008989
Test: systrace
Change-Id: I9732f866933a8950a4c69ff51d5ac1622bbb3470
Diffstat (limited to 'libs/gui/include')
-rw-r--r-- | libs/gui/include/gui/BufferQueue.h | 1 | ||||
-rw-r--r-- | libs/gui/include/gui/ConsumerBase.h | 1 | ||||
-rw-r--r-- | libs/gui/include/gui/IConsumerListener.h | 7 |
3 files changed, 9 insertions, 0 deletions
diff --git a/libs/gui/include/gui/BufferQueue.h b/libs/gui/include/gui/BufferQueue.h index da952744f..721427be7 100644 --- a/libs/gui/include/gui/BufferQueue.h +++ b/libs/gui/include/gui/BufferQueue.h @@ -61,6 +61,7 @@ public: void onDisconnect() override; void onFrameAvailable(const BufferItem& item) override; void onFrameReplaced(const BufferItem& item) override; + void onBufferAllocated(const BufferItem& item) override; void onBuffersReleased() override; void onSidebandStreamChanged() override; void addAndGetFrameTimestamps( diff --git a/libs/gui/include/gui/ConsumerBase.h b/libs/gui/include/gui/ConsumerBase.h index 366ced380..7c2648250 100644 --- a/libs/gui/include/gui/ConsumerBase.h +++ b/libs/gui/include/gui/ConsumerBase.h @@ -141,6 +141,7 @@ protected: // classes if they want the notification. virtual void onFrameAvailable(const BufferItem& item) override; virtual void onFrameReplaced(const BufferItem& item) override; + virtual void onBufferAllocated(const BufferItem& item) override; virtual void onBuffersReleased() override; virtual void onSidebandStreamChanged() override; diff --git a/libs/gui/include/gui/IConsumerListener.h b/libs/gui/include/gui/IConsumerListener.h index c0828820e..03fefbe90 100644 --- a/libs/gui/include/gui/IConsumerListener.h +++ b/libs/gui/include/gui/IConsumerListener.h @@ -61,6 +61,13 @@ public: // This is called without any lock held and can be called concurrently by multiple threads. virtual void onFrameReplaced(const BufferItem& /* item */) {} /* Asynchronous */ + // onBufferAllocated is called to notify the buffer consumer that the BufferQueue has allocated + // a GraphicBuffer for a particular slot. Only the GraphicBuffer pointer and the slot ID will + // be populated. + // + // This is called without any lock held and can be called concurrently by multiple threads. + virtual void onBufferAllocated(const BufferItem& /* item */) {} /* Asynchronous */ + // onBuffersReleased is called to notify the buffer consumer that the BufferQueue has released // its references to one or more GraphicBuffers contained in its slots. The buffer consumer // should then call BufferQueue::getReleasedBuffers to retrieve the list of buffers. |