- 博客(63)
- 资源 (6)
- 收藏
- 关注
原创 android display 笔记(十三)surfcaeflinger的DEQUEUED、QUEUED
DEQUEUED :缓冲区被生产者获取,正在填充数据(如 GPU 渲染或 Camera 写入) dequeueBuffer() 应用调用 Canvas.lock() 或 OpenGL 渲染前。ACQUIRED :消费者(SurfaceFlinger)已获取缓冲区,准备合成或显示 acquireBuffer() SurfaceFlinger 正在合成该帧。消费者:SurfaceFlinger 通过 acquireBuffer 获取已填充的缓冲区并合成显示。VSync 信号丢失或合成耗时过长。
2025-04-12 15:41:55
138
原创 android display 笔记(十二)CPU,GPU,DPU的区别
硬件加速合成:替代 GPU 完成 Overlay、缩放、旋转等操作。图形渲染:顶点着色、像素填充、光线追踪。低延迟:优先快速响应单线程任务。需要并行计算/图形 → GPU。需要通用计算 → CPU。需要显示优化 → DPU。
2025-04-12 15:34:47
131
原创 android display 笔记(十一)surfaceflinger 如何将图层传到lcd驱动的呢?
需 GPU 合成的图层:标记为 HWC2::Composition::Client,由 SurfaceFlinger 通过 OpenGL ES/Vulkan 渲染到临时缓冲区。LCD 驱动 从显存(Framebuffer)或 Overlay 缓冲区读取像素数据,通过 MIPI-DSI/RGB 接口 输出到屏幕。支持硬件合成的图层:标记为 HWC2::Composition::Device(由显示控制器直接处理)。配置 CRTC(显示控制器)的时序参数(VSync/HSync/像素时钟)。
2025-04-12 15:32:20
335
原创 android display 笔记(十)surfaceflinger与HWC的关系
在 Android 图形系统中,SurfaceFlinger 和 Hardware Composer (HWC) 是紧密协作的两个核心组件,共同负责屏幕内容的合成与显示。硬件合成(Overlay):由显示控制器(Display Controller)直接处理(性能最优)。GPU合成:无法硬件合成时(如复杂变换),回退到 GPU 渲染(通过 OpenGL ES)。SurfaceFlinger 根据 HWC 的能力调整图层分配(如避免频繁切换合成方式)。混合合成:部分图层用 Overlay,部分用 GPU。
2025-04-12 15:27:49
257
原创 android display 笔记(九)三重缓冲杂谈
双缓存意味着要使用两个缓存区,其中一个称为 Front Buffer,另外一个称为 Back Buffer。UI 总是先在 Back Buffer 中绘制,然后再和 Front Buffer 交换,渲染到显示设备中。理想情况下,这样一个刷新会在 16ms 内完成。那什么是Triple Buffer呢?
2025-03-19 11:33:50
147
原创 android display 笔记(八)WMS与SurfaceFlinger交互
在Android系统中由WindowManagerService也就是WMS承担窗口位置的管理。
2024-09-04 14:58:41
684
1
原创 android display 笔记(七)图层
SurfaceControl和Surface都可以表示窗口,窗口管理服务通过SurfaceControl控制图层的状态,应用进程通过Surface向图层传送缓冲数据。创建图层是在SurfaceComposerClient.cpp中的createSurface中,生产图形需要先创建窗口,创建窗口时会请求surfaceflinger创建图层。然后对mStatus进行判断,如果是NO_ERROR,则调用mClient的接口createSurface,并返回前面声明的result。
2024-08-30 09:55:15
326
原创 android display 笔记(六)SurfaceFlinger初始化
getComposerService():向服务管理进程查询得到ISurfaceComposer对象,客户进程可以通过该对象向Surfaceflinger发送请求。什么是客户进程,指的是使用SurfaceFlinger服务的进程,通常是通过SurfaceComposerClient与SurfaceFlinger进程交互。在/frameworks/native/services/surfaceflinger/路径下可以看到 与surfaceflinger 很多相关的文件。创建新线程并加入到线程池。
2024-08-13 14:16:31
605
原创 android display 笔记(五)HWC(Hardware Composer)
简单来说HWC是用来合成图形和显示图形的,可以把多个图形缓存传给硬件混合渲染器,让硬件混合渲染器执行合成操作,显示图形就是直接将图形缓存显示到屏幕。IComposer 用于客户进程与HWC进程建立通信链接,createClient 用于创建IComposerClient 的对象。在IComposerClient接口类中通过registerCallback注册回调,客户进程注册回调后就可以使用HWC进程事件。----------------后续有时间再补充。onRefresh:通知客户进程提供新的帧缓存。
2024-08-08 17:15:02
810
原创 android display 笔记(四)hardware 硬件抽象层
源码:android14硬件抽象层的接口定义在 hardware.h定义了以下三个结构体其中还有 hw_get_module方法,该方法用于获取模块第一个参数获取模块的 id,根据id查找对应库文件,匹配成功后通过第二个参数返回模块对象。
2024-07-29 15:54:03
467
原创 android framework input 及多指协议
input问题排查,如果数据能打印出来,则是framework 问题,如果没有数据打印出来,则要看驱动问题。ABS_MT_SLOT ,其value 代表手指id,可以代表不同的手指。每个slot与一个id对应,一个非负数表一此接触,-1表示接触结束。以上数据格式:时间,具体节点文件名,事件类型,事件值。SYN_REPORT:代表一个事件的结束。0004/0005:代表一个事件的开始。触碰按键,其值是DOWN或者UP。相对于屏幕中心的x,y坐标。
2024-06-03 15:04:17
335
1
转载 Android BufferQueue
图形数据的消费者也可以不用等BufferQueue的回调通知,每次都从BufferQueue中尝试获取数据,获取失败则尝试,只是这样效率比较低,需要不断的轮训BufferQueue(因为BufferQueue有同步阻塞和非同步阻塞两种机种,在非同步阻塞机制下获取数据失败不会阻塞该线程直到有数据才唤醒该线程,而是直接返回-1)。在新的GraphicBuffer入队BufferQueue时,BufferQueue会通过回调通知图形数据的消费者,有新的图形数据被生产出来了。
2024-05-29 17:04:46
174
原创 android display 笔记(三)WMS
总结,WMS的main方法在startOtherServices中,而startOtherServices在SystemServer的run方法中,运行在system_server线程中。该代码执行了WMS的main方法,会在内部创建一个WMS。其中有一个参数inputManager也是在startOtherServices中创建的,如下。回到上述的WindowManagerService main中。在SystemServer中的main方法中,调用run方法。用来记录学习wms,后续会一点一点更新。
2023-11-03 19:43:00
428
原创 android display笔记(二)winscope的使用
跟踪记录会被写入 /data/misc/wmtrace/wm_trace.winscope 和 /data/misc/wmtrace/layers_trace.winscope,同时还会包含在错误报告中。通常使用prebuilts/misc/common/winscope下的winscope.html。窗口转换完成后,打开快捷设置,然后点按 Winscope 跟踪记录以停用跟踪记录。依次转到开发者选项 > 快捷设置开发者图块。点按 Winscope 跟踪以启用跟踪。点击Add FILE。
2023-10-20 11:03:31
4119
原创 android display笔记(一)Window以及WindowManager
**什么时候会用到window,当桌面需要显示一个类似与悬浮窗的东西,那就需要用到Window,而创建window则就需要windowManager ***
2023-10-19 20:22:45
519
转载 闪屏问题常见处理思路
严格从技术来说,闪屏问题不能归为一类问题,他是因为屏幕快速变化导致用户看起来显示不正常的问题(很多测试者甚至会将花屏问题当做闪屏问题,这里不做讨论).它可能是多种完全不同的原因导致的,硬件问题,驱动问题,绘制问题,合成问题,窗口调度问题,activity问题,以及app本身的逻辑问题都有可能导致用户看起来屏幕闪屏的感觉,其中百分之九十以上闪屏的问题是由后三种问题导致的.闪屏问题作为Android的一类常见问题,原因复杂多样.我们在这里整理一下如何分析闪屏问题,找到具体导致闪屏问题的原因.
2023-06-26 20:23:45
1295
原创 android LCD背光服务修改自适应背光最低,最高亮度
文件路径:/device/sprd/sharkl3/moverlay/device/base/frameworks/base/core/res/res/values/config.xml。在学习lcd背光服务的时候发现的背光亮度默认修改的文件,并全编了一下试试,结果成功了,现在已经把亮度调到最低了,但还是很亮。可以看到minimumBacklight最小背光值在配置文件中,默认的是6,我们进行修改即可。BrightnessMappingStrategy 亮度映射策略,
2022-10-08 17:52:40
1145
原创 Settings动态添加一二级菜单
上文:https://blog.youkuaiyun.com/u013574207/article/details/127102294。首先先自定义一个top_level_settings_custom.xml文件。如top_level_settings_custom.xml。在TopLevelSettings.java。然后在需要触发的地方添加。
2022-09-29 11:27:40
814
原创 【Settings随记:二】一级菜单,二级菜单的添加与隐藏,添加辅助功能
首先会去调用父类的onCreatePreferences(Bundle savedInstanceState, String rootKey)方法,然后调用addPreferencesFromResource(R.xml.assistant_function)方法(这个方法是父类的)加载二级菜单的xml配置文件,实现创建二级菜单,这个配置文件路径在res/xml/assistant_function.xml。controller:该item的控制器,控制它的内容展示,是否可用,也可以控制它的点击事件等。
2022-09-29 11:04:31
1433
原创 Android状态栏添加快捷开关(Tile)
快捷开发读取的是config.xml配置文件,可以打log看输出的tile顺序是和那个配置文件的对上的,一般是读取。2、在case的条件判断中直接return null;
2022-09-26 17:49:22
1959
原创 修改systemui背景圆角大小
item项,@dimen/config_dialogCornerRadius所@dimen的值是不同的,最后发现当前主题引用的是config.xml全局配置文件的config_dialogCornerRadius值,该值写在/franeworks/base/core/res/res/values/config.xml。主题的路径是:/frantworks/base/core/res/res/values/目录下有多个theme.xml文件,不同的主题其。adb reboot完成重启。
2022-09-22 11:06:44
641
原创 android蓝牙开发的一个小Dome
实现蓝牙开发的多个功能> BluetoothAdapter 蓝牙适配器,即该类里面包含了蓝牙使用中常用到的一些API。 BroadcastReceiver> 广播接收者,不难猜测,蓝牙设备开启或者关闭、搜索到周边设备就要来通知应用,那么Android系统就会以广播的方式来通知。> BluetoothDevice> 蓝牙设备,即一个相当于蓝牙设备的类,实现了Parcelable接口,用于Android的IPC通信机制。里面实在广播时发送的蓝牙的相关信息:蓝牙名称,地址,类型和uuid等。...
2022-07-27 17:54:34
553
原创 Linux基础、vim、find命令等
rm命令 – 删除文件或目录rm命令来自于英文单词remove的缩写,其功能是用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。rm也是一个很危险的命令,使用的时候要特别当心,尤其对于新手更要格外注意,如执行rm -rf /*命令则会清空系统中所有的文件,甚至无法恢复回来。所以我们在执行之前一定要再次确认下在哪个目录中,到底要删除什么文件,考虑好后再敲击回车,时刻保持清醒的头脑。语法格式:rm [参数] 文件常用参数:-f 强制删除(不二次询问)-i 删除前会询问用户是
2022-07-12 14:25:12
1242
原创 cp命令 – 复制文件或目录|rm命令 – 删除文件或目录
rm命令 – 删除文件或目录rm命令来自于英文单词remove的缩写,其功能是用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。rm也是一个很危险的命令,使用的时候要特别当心,尤其对于新手更要格外注意,如执行rm -rf /*命令则会清空系统中所有的文件,甚至无法恢复回来。所以我们在执行之前一定要再次确认下在哪个目录中,到底要删除什么文件,考虑好后再敲击回车,时刻保持清醒的头脑。语法格式:rm [参数] 文件常用参数:-f 强制删除(不二次询问)-i 删除前会询问用户是
2022-07-11 17:11:16
710
原创 mkdir命令 – 创建目录文件
建立一个目录mkdir dir1设置一个700权限,不让除所有主以外任何人读,写,执行它mkdir -m 700 dir2当前目录中,一次创建多个目录文件mkdir di语法格式:cd [参数] [目录名]常用参数:-P 如果切换的目标目录是一个符号链接,则直接切换到符号链接指向的目标目录-L 如果切换的目标目录是一个符号链接,则直接切换到符号链接名所在的目录-- 仅使用”-“选项时,当前目录将被切换到环境变量”OLDPWD”对应值的目录~ 切换至当前用户目录.. 切换至当前目
2022-07-11 14:16:13
966
原创 cd命令 – 切换目录
cd命令来自于英文词组”change directory“的缩写,其功能是用于更改当前所处的工作目录,路径可以是绝对路径,也可以是相对路径,若省略不写则会跳转至当前使用者的家目录。语法格式:cd [参数] [目录名]常用参数:-P 如果切换的目标目录是一个符号链接,则直接切换到符号链接指向的目标目录-L 如果切换的目标目录是一个符号链接,则直接切换到符号链接名所在的目录-- 仅使用”-“选项时,当前目录将被切换到环境变量”OLDPWD”对应值的目录~ 切换至当前用户目录.. 切换至当前目
2022-07-11 14:00:34
8346
原创 (毕设课设)基于SSM的食堂订餐小程序(微信小程序+后台管理系统)
阐述了基于SSM的食堂订餐小程序系统的设计与实现的过程,运用了B/S架构,JAVA的SSM框架,前后端分离等设计模式,使用了mysql管理数据库,微信开发者工具开发小程序前端,eclipse开发系统后端,采用了前后端交互技术构建了一个管理员、商家和用户三端共同使用的系统,给同学们提供了一个更为便捷的订餐方式,给商家提供了一个更为高效的售卖途径。食堂订餐小程序的制定主要是详尽考虑到系统软件要保持的功能,明确要保持的功能,随后设计方案页面.
2022-05-30 22:02:05
3001
原创 PPT模板(毕业答辩55套+扁平风格11套+创意风格13套)79套模板
PPT模板(毕业答辩55套+扁平风格11套+创意风格13套)79套模板最近临近毕业,毕业答辩的时候发现很多ppt下载都很麻烦,而且找不到优质的,我收集了一下,整理到下面了,大家有用的可以拿去用ppt是指微软公司的演示文稿软件。用户可以在投影仪或者计算机上进行演示,也可以将演示文稿打印出来,制作成胶片,以便应用到更广泛的领域中。利用ppt不仅可以创建演示文稿,还可以在互联网上召开面对面会议、远程会议或在网上给观众展示演示文稿。演示文稿中的每一页就叫幻灯片。ppt是指微软公司的演示文稿软件。一套完整
2022-05-20 20:49:24
811
1
原创 【毕设课设】【毕设课设】JAVA web健身房管理系统(源码+文档+数据库)
(1)本系统使用数据库为MySql5.5.40,使用时向数据库导入文件gym-mysql.sql。(2)可登陆的管理员登录账号:20190001,密码为:123123;2) 程序说明(3)java所用的jdk版本为:JDK1.8.0_251。(4)web程序运行所用的服务器为tomcat-7.0.103,发布成功后在浏览器输入:localhost:8080,来访问系统。管理员登陆界面
2022-05-19 19:26:59
2420
学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析
2023-07-12
LINUX内核同步、信号、内存、调度、文件系统、网络系统
2023-07-11
【毕设课设】学生兴趣班管理系统 JAVA+SSM+Layui前端+Mysql
2022-05-19
毕设课设SSM学生信息教务学籍管理系统(源码+数据库文件+42节全套该软件从零到开发完成全套视频课程)
2022-05-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人