Damon_X
码龄9年
关注
提问 私信
  • 博客:164,071
    164,071
    总访问量
  • 80
    原创
  • 16,948
    排名
  • 206
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:新加坡
  • 加入CSDN时间: 2016-04-08
博客简介:

Damon_X的博客

查看详细资料
  • 原力等级
    当前等级
    3
    当前总分
    257
    当月
    37
个人成就
  • 获得350次点赞
  • 内容获得2次评论
  • 获得534次收藏
  • 代码片获得286次分享
创作历程
  • 4篇
    2025年
  • 37篇
    2024年
  • 48篇
    2021年
  • 20篇
    2020年
  • 7篇
    2017年
  • 39篇
    2016年
成就勋章
TA的专栏
  • LINUX
    3篇
  • 算法
    4篇
  • 算法学习总结
    3篇
  • 一个64位操作系统的设计与实现
    2篇
  • 树莓派
  • android
    27篇
  • audio
    9篇
  • C++
    23篇
  • JAVA
  • C
    10篇
  • kernel
    1篇
  • misc
    4篇
  • graphics
    29篇
  • media
    6篇
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

SurfaceFlinger代码笔记

native
ative\libs\gui\SurfaceComposerClient.cpp文件里的。看上去这是个从上到下的机制,还涉及到HAL。两侧是怎么建立连接的。
原创
发布博客 前天 16:23 ·
288 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

Widevine和ClearKey

尽管 Widevine L3 的安全性较低,但它仍然通过某些软件手段来提供基本的内容保护。不过,因为其加密和解码过程在普通操作系统中运行,易受恶意软件或破解工具攻击,敏感内容提供商通常不会为 L3 提供高质量的视频内容。尽管 ClearKey 提供一定的保护,但它无法满足严苛的商业需求,因为任何中间人攻击都可能获取密钥。ClearKey 提供基本的加密内容保护,主要通过提供一组明文加密密钥(Key ID 和 Content Key)来解密和播放加密媒体内容。规范的一部分,由万维网联盟(W3C)定义。
原创
发布博客 2025.01.07 ·
794 阅读 ·
18 点赞 ·
0 评论 ·
14 收藏

case积累(尽量不断更新)

CTS testVirtualDisplayRefreshRate的bug,最终发现是别人随意修改VirtualDisplayAdapter.java的Refresh Rate来源导致。在给mMode赋值的地方随意修改了rate来源。这说明不够deep dive,也不够are right, a lot.
原创
发布博客 2025.01.07 ·
83 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

各种layer dump手段总结

可能需要根据不同配置修改displaylog*,或者不带数字。后面参数根据需要选择对应的值。
原创
发布博客 2025.01.04 ·
150 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

FrameEventHistory

的机制,通常出现在与图形渲染和帧调度相关的模块中。它主要用于调试和分析显示系统中的帧延迟、掉帧和相关性能问题。是 Android 系统图形栈中的关键工具,旨在提供详细的帧时间跟踪与问题定位。提供了一种系统化方法来追踪这些帧的事件时间戳和相关状态。这些时间点用于全面追踪一帧从提交到呈现的完整生命周期。Systrace 可以完整记录每一帧的关键事件。,每一帧从开始渲染到显示都可能会记录事件。是 Android 中用于记录和跟踪。在 Android 的图形显示栈中,如。
原创
发布博客 2024.12.27 ·
738 阅读 ·
21 点赞 ·
0 评论 ·
15 收藏

cat /sys/kernel/debug/dri/0/state

fb=0rotation=1fb=86refcount=2layers:obj[0]:name=0refcount=1rotation=1fb=0rotation=1enable=1active=1enable=0active=0。
原创
发布博客 2024.12.27 ·
408 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

/d/dri/0/ 目录

【代码】/d/dri/0/ 目录。
原创
发布博客 2024.12.27 ·
211 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

SurfaceControl 构建过程分析

远程调用获取显示配置信息App 向 SF 发起远程调用,SF 中创建一个 Layer 对象,App 中创建一个 SurfaceControl 对象,SurfaceControl 对象中有一个 mHandle 成员,该成员可以索引到 Layer 对象远程调用,配置 Layer。
原创
发布博客 2024.12.24 ·
750 阅读 ·
15 点赞 ·
0 评论 ·
9 收藏

Native App 与 SurfaceFinger 建立 Binder 通信过程分析

SurfaceFlinger 进程中提供了 SurfaceFlinger Binder 服务,SurfaceFlingerAIDL Binder 服务和一个名为 Client 的匿名 Binder 服务App 向 ServiceManager 查询 SurfaceFlingerAIDL 服务,获取到服务的代理端对象接着远程调用 SurfaceFlingerAIDL 服务的 createConnection 函数,获取到 Client 匿名服务的代理端对象。
原创
发布博客 2024.12.24 ·
725 阅读 ·
8 点赞 ·
0 评论 ·
20 收藏

SurfaceControl类注释

注释得挺好的,关键成员都解释清楚了。
原创
发布博客 2024.12.24 ·
75 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

帧缓存的分配

因为在 Android 中,显示一帧画面需要涉及到多个进程,比如 App 进程、 Gralloc Hal 进程、HwComposer Hal 进程、SurfaceFlinger 进程,如果在不同的进程之间直接传递 buffer,开销过大,我们直接在不同进程之间传递 buffer 的索引 fd 即可,fd 是一个整型变量,大大减小了内存的开支。我们知道一个普通的 fd,比如某个文件对应的 fd,如果把它从 A 进程传递到 B 进程,在 B 进程中,这个 fd 的值是没有意义的,索引不到对应的文件的。
原创
发布博客 2024.12.24 ·
485 阅读 ·
8 点赞 ·
0 评论 ·
1 收藏

SurfaceControl,Surface和Layer

Surface 对象用于在 Native App 中描述一个图层,每一个 Surface 对象都是由一个 SurfaceControl 对象来创建的,可以认为 Surface 和 SurfaceControl 是等价的 Layer 对象用于在 SurfaceFlinger 中描述一个图层。 一个 Surface 对应一个 Layer
原创
发布博客 2024.12.24 ·
113 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

mLayerStack解释

Android 系统支持多种显示设备,比如说,输出到手机屏幕,或者通过WiFi 投射到电视屏幕。不是所有的 Layer 都会输出到所有的Display, 比如说,我们可以只将Video Layer投射到电视, 而非整个屏幕。LayerStack 就是为此设计,LayerStack 是一个Display 对象的一个数值, 而类Layer里成员State结构体也有成员变量mLayerStack, 只有两者的mLayerStack 值相同,Layer才会被输出到给该Display设备。
原创
发布博客 2024.12.24 ·
113 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

B2HGraphicBufferProducer和H2BGraphicBufferProducer

在 Android 的图形系统中,和是基于 Binder 机制的两个重要组件,它们负责图形缓冲区的生产接口。二者关系可以理解为是一个中间桥接类,它的主要功能是将 HAL(硬件抽象层)的 IGraphicBufferProducer实现桥接为 IGraphicBufferProducer,使其能通过 Binder IPC 机制进行通信。: 位于或相关 HAL 接口中,提供跨进程桥接能力。作用类似于适配器,将传统 HAL 中的缓冲区生产逻辑转换为面向高层的 Binder 调用。
原创
发布博客 2024.12.23 ·
869 阅读 ·
22 点赞 ·
0 评论 ·
18 收藏

桥接模式(Bridge Pattern)

定义高层的抽象接口,提供公共的方法声明。
原创
发布博客 2024.12.23 ·
673 阅读 ·
9 点赞 ·
0 评论 ·
5 收藏

Android上dump layer的方法

在 Android 上,是一种调试工具,用来获取 SurfaceFlinger 的图形层数据(Layer)以排查显示问题。以下是常用的是 Android 提供的强大的系统调试工具,通过它可以查询 SurfaceFlinger 信息以及图形系统状态。bashCopy codeadb shelldumpsysbashCopy codeLayer你可以直接筛选与 Layer 相关的部分:bashCopy code上面的命令会显示包含 “Layer” 的日志,并且扩展输出上下文。
原创
发布博客 2024.12.16 ·
888 阅读 ·
30 点赞 ·
0 评论 ·
20 收藏

禁用硬件合成 (Hardware Composer, HWC)

通常需要根据具体的设备平台和系统环境选择适合的方法。通过上述步骤,可以有效地禁用 HWC 合成,根据实际需求选择适合的方式。如果需要长期禁用,可以修改设备的启动配置,例如在。将设备重启后,HWC 合成会始终保持禁用状态。重编译系统后,HWC 功能将完全禁用。
原创
发布博客 2024.12.16 ·
476 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

Pacesetter Display 和 Follower Display

是两种用于描述显示器间关系及其更新时序的方法,特别是在多显示屏或显式同步(Explicit Synchronization)场景中。如果多个显示屏的刷新率不同,Follower 可能需要插帧(Frame Insertion)或跳帧(Frame Skipping)来适配 Pacesetter 的节奏。在显示墙或者类似场景中,必须保证所有屏幕内容“对齐”,即所有屏幕在同一帧时间呈现出一致的画面。在某些动态场景下,可以动态切换 Pacesetter(例如主屏切换或显示设备拔插)。在图形显示和屏幕同步领域,
原创
发布博客 2024.12.16 ·
482 阅读 ·
24 点赞 ·
0 评论 ·
10 收藏

AIS介绍

AIS(Automotive Imaging System,汽车成像系统)在汽车领域主要是指利用图像传感器和相关技术来捕获、处理和分析环境图像的系统。它广泛应用于现代汽车的各种功能中,尤其是在驾驶辅助和自动驾驶领域。AIS 的性能直接影响汽车对环境的感知精度。未来,这些系统可能会进一步与 AI 和机器学习算法深度融合,提升自动驾驶的安全性和可靠性。
原创
发布博客 2024.11.28 ·
376 阅读 ·
7 点赞 ·
0 评论 ·
5 收藏

汽车座舱系统名词

这些功能通常整合在智能座舱或ADAS系统中,随着汽车行业对智能化的需求增长,QNX 已成为许多 OEM 和供应商的首选平台。
原创
发布博客 2024.11.28 ·
665 阅读 ·
3 点赞 ·
0 评论 ·
7 收藏
加载更多