Android P 图形显示系统(七) SurfaceFlinger合成流程(二)

SurfaceFlinger合成流程(二)

SurfaceFlinger合成流程

MessageQueue中分发两个消息,一个INVALIDATE,一个REFRESH,SurfaceFlinger对这两个消息的响应过程,就是合成的过程。

消息INVALIDATE处理

在onFrameAvailable时,调用signalLayerUpdate,将触发INVALIDATE消息。SurfaceFlinger收到这个消息的处理如下:

void SurfaceFlinger::onMessageReceived(int32_t what) {
    ATRACE_CALL();
    switch (what) {
        case MessageQueue::INVALIDATE: {
            bool frameMissed = !mHadClientComposition &&
                    mPreviousPresentFence != Fence::NO_FENCE &&
                    (mPreviousPresentFence->getSignalTime() ==
                            Fence::SIGNAL_TIME_PENDING);
            ATRACE_INT("FrameMissed", static_cast(frameMissed));
            if (mPropagateBackpressure && frameMissed) {
                signalLayerUpdate();
                break;
            }

    

你可能感兴趣的:(Graphics,Display)