标签 SurfaceFlinger 下的文章

1. 用 mirrorDisplay() 做镜像显示 1.1 基本思路 1.2 mirrorDisplay 的接口与调用方式 1.2.1 IWindowManager 接口定义 1.2.2 SurfaceControl 与 Transaction 1.2.3 典型调用示例 1.3 它为什么延迟低 1.4 Native 侧实现原理 1.5 坐标系与显示投影 1.6 性能对比 2. 用 injectMotionEvent 做触摸传递 2.1 为什么要显式做输入注入 2.2 坐标映射 2.3 注入流程 2.4 为什么这种方式更稳 3. SurfaceControl 父节点差异:一个容易混淆的补充点 4. 为什么透明覆盖层和 blocker 往往不可靠 5. 权限要求与落地前提 5.1 常见权限 5.2 系统签名要求 6.

- 阅读剩余部分 -

一、硬件层与驱动交互 二、框架层(Framework) 三、HAL层与数据流 四、应用层显示 五、关键源码路径汇总 六、流程总结 本文首发地址 https://h89.cn/archives/319.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 一、硬件层与驱动交互 传感器与驱动 硬件层由图像传感器(如CMOS/CCD)和ISP(图像信号处理器)组成,通过V4L2(Video4Linux2)框架与内核驱动交互。 源码示例:Camera HAL通过/dev/videoX设备节点与传感器通信,如MTK平台的sensor_list.cpp 中通过get_number_of_cameras枚举设备节点。 HAL硬件抽象层 HAL层实现CameraHardwareInterface接口,封装硬件操作(如ope

- 阅读剩余部分 -

1、app请求Vsync部分 2、Vsync时间到了后触发timeCallback 3、app的vsync继续请求和sf的vsync申请 4、app vsync结束部分 原文 App-Sf的Vsync部分源码流程结合perfetto-systrace分析 本节将使用perfetto的trace来巩固Vsync的源码分析的部分的流程。 具体抓取trace方法及相关操作建议: a.抓取trace期间需要主要不能让画面一直刷新,因为这样一直刷新不方便看vsync的结束和开始 b.建议选着桌面,滑动桌面一下后停止1左右,再继续滑动,尽量让抓取的trace可以有如下图的间隔效果 c.需要在surfaceflinger中额外补充自己加的一些ATRACE代码方便追踪流程 1、app请求Vsync部分 这里我们回忆一下app的Vsync的申请,一般都是app

- 阅读剩余部分 -

引言 updateTexImage 简单使用 SurfaceTexture 初始化相关源码分析 Surface 绘制流程源码分析 createBufferQueue 源码分析 SurfaceTexture 之 updateTexImage 源码分析 结尾 本文首发地址 https://h89.cn/archives/140.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 引言 在Android系统中,SurfaceTexture 是一个特殊的类,它将来自硬件纹理缓冲区(如相机预览流或视频解码输出)的图像数据转换为 OpenGL ES 可以直接使用的纹理。updateTexImage() 方法是 SurfaceTexture 类的核心方法之一,此方法的主要作用是从 SurfaceTex

- 阅读剩余部分 -