首页 > 其他分享 >Android SurfaceFlinger——Fence流转状态(五十)

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

时间:2024-08-08 08:58:01浏览次数:9  
标签:dequeueBuffer set Fence fence hwc SurfaceFlinger Android GraphicBuffer

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

一、流转状态

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

        SurfaceFlinger 中核心的 4 个流程:

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

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

1、dequeueBuffer

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

标签:dequeueBuffer,set,Fence,fence,hwc,SurfaceFlinger,Android,GraphicBuffer
From: https://blog.csdn.net/c19344881x/article/details/140826570

相关文章

  • Android Qcom USB Driver学习(一)
    该系列文章总目录链接与各部分简介:AndroidQcomUSBDriver学习(零)USB接口类型Android终端上常用的USB接口:TypeC(现在的主流),MicroB(以前的设备)一、TypeCHardwareInterfaceUSB-C引脚和功能指南一文读懂USBTypeC与USB-…TypeC引脚定义USB-C(USBType-C)规范的简单介绍......
  • Android 是如何进行内存管理的
    目录1.垃圾回收(GarbageCollection)2.内存分配3.内存泄漏检测4.内存优化5.内存抖动(MemoryChurn)6.内存警告(MemoryWarning)7.内存分页(MemoryPaging)8.内存分段(MemorySegmentation)9.内存压缩(MemoryCompaction)10.内存分区(MemoryPartitionin......
  • Android Qcom USB Driver学习(零)
    该系列文章总目录链接与各部分简介:AndroidQcomUSBDriver学习(零)文章标题文章链接文章简介AndroidQcomUSBDriver学习(零)https://blog.csdn.net/qq_40405527/article/details/125460598本章主要学习博客各个标题的链接与简介AndroidQcomUSBDriver学习(......
  • Android开发基础06-Android项目结构
    详细介绍Android项目结构Android开发过程中,高效、清晰的项目结构是成功的关键。理解并合理组织项目结构,有助于提高代码的可维护性和团队协作的效率。目录概览一个典型的Android项目目录结构如下:MyApplication/├──app/│├──build/│├──libs/│├......
  • Java计算机毕业设计基于Android的公交线路状态查询系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,公共交通系统成为了城市居民日常出行不可或缺的一部分。然而,传统的公交线路查询方式往往依赖于纸质地图、公交站牌或电话查询,这......
  • Android开发基础04-Java 和 Kotlin
    引言Java和Kotlin是两种主要用于Android开发的编程语言。理解它们的基本概念、特点、优缺点及常见用法,对Android开发者来说非常重要。1.Java基本概念Java是一种面向对象、跨平台的编程语言,于1995年由SunMicrosystems(现为Oracle)发布。它的设计理念是“WriteOnce,Ru......
  • Android开发基础02-零基础学习Android指南
    学习路线1.理解Android开发基础1.1理解Android平台架构先从高层次上了解Android操作系统的架构,包括应用层、应用框架层、库和Android运行时、Linux内核。了解这些层次及其作用,会帮你更好地理解Android的工作原理。1.2学习Java乐Kotlin语言Java和Kotlin......
  • android源码编译
    搭建编译环境Ubuntu12.04更新源debhttp://old-releases.ubuntu.com/ubuntuprecisemainuniverserestrictedmultiversedebhttp://old-releases.ubuntu.com/ubuntuprecise-securityuniversemainmultiverserestricteddebhttp://old-releases.ubuntu.com/ubuntupre......
  • 记一次 Android 自定义相机拍照奔溃bug事件
    最近在开发一个美颜的相机功能,需要自定义抓取相机回调的数,生成照片并保存到相册,需要自定义保存照片。相机开始使用时没有任何问题,测试拍照几次后突然奔溃,跟踪代码日志发现是图片保存失败,同样的代码,同样的逻辑,正常使用很多次以后才奔溃报错,根据日志找到报错的位置,ContentValue......
  • Windows 和 MacOS 上安装配置ADB(安卓调试桥)_android adb工具安装 mac
    一、Android调试桥(ADB)Android调试桥(ADB)是一款多功能命令行工具,它让你能够更便捷地访问和管理Android设备。使用ADB命令,你可以轻松执行以下操作网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!在设备上安装、复制和删除文件;安装应用程序;录制设备屏幕或截......