当前位置:   article > 正文

Android SurfaceFlinger——Fence流转状态(五十)_isfencepending

isfencepending

        明白了 fence 的基本原理,我们可以进一步的探索整个 SurfaceFlinger 的中 fence 在其中处于什么角色。

一、流转状态

        从启动到屏幕的第一帧的渲染,fence 是不会有任何效果的。因为此时 fence 还没有经过 hwc_set 给 fence 进行赋值。但是到了第二帧开始,已经存在的 Layer 已经经过了 hwc_set 的赋值,存在 Layer 的 releaseFence 中。

        SurfaceFlinger 中核心的 4 个流程:

  • dequeueBuffer:GraphicBuffer 的出队。
  • queueBuffer:GraphicBuffer 的入队。
  • updateTexImage:GraphicBuffer 的消费。
  • releaseBufferLockedGraphicBuffer 的释放

        下面我们看一下 Fence 在上面几个流程中参与的角色。

1、dequeueBuffer

        我们先来看看 Surface 中的 lock 方法,这个方法是 onDraw 方法之前,ViewRootImpl 绘制之前进行调用。这个方法最终会调用 IGraphicBuffe

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/970494
推荐阅读
相关标签
  

闽ICP备14008679号