基于Android4.4.2 aosp源码
初始化流程:
SurfaceComposerClient::createSurface
Client::createSurface
SurfaceFlinger::createLayer
SurfaceFlinger::createNormalLayer
Layer::Layer
Layer::onFirstRef
GLConsumer::setConsumerUsageBits
BufferQueue::setConsumerUsageBits
GLConsumer::setDefaultMaxBufferCount
BufferQueue::setDefaultMaxBufferCount
GLConsumer::setTransformHint
BufferQueue::setTransformHint
Layer::setBuffers
BufferQueue::setDefaultBufferSize
BufferQueue::setDefaultBufferFormat
BufferQueue::setConsumerUsageBits
SurfaceFlinger::addClientLayer
Client::attachLayer
mCurrentState.layersSortedByZ.add
SurfaceFlinger::setTransactionFlags
SurfaceFlinger::signalTransaction
SurfaceFlinger::onMessageReceived
SurfaceFlinger::handleMessageTransaction
SurfaceFlinger::handleTransaction
SurfaceFlinger::handleTransactionLocked
SurfaceFlinger::commitTransaction
SurfaceFlinger::handleMessageInvalidate
SurfaceFlinger::handlePageFlip
SurfaceFlinger::signalRefresh
SurfaceFlinger::handleMessageRefresh
问题:
- 每一次发送invalidate消息,都会触发SurfaceFlinger::onMessageReceived以下代码整体被执行,而不管有没有layers,这块是否表示效率过低?
本文详细解析了Android 4.4.2版本中SurfaceFlinger的初始化过程,包括SurfaceComposerClient创建Surface的方法,以及SurfaceFlinger如何创建并管理Layers等关键步骤。针对每次invalidate消息触发SurfaceFlinger::onMessageReceived的效率问题进行了讨论。
1054

被折叠的 条评论
为什么被折叠?



