代码拉取完成,页面将自动刷新
Surface组件用于管理和传递图形和媒体的共享内存。具体场景包括了图形的送显、合成,媒体的播放、录制等。
Surface的跨进程传输使用IPC传输句柄等控制结构(有拷贝),使用共享内存传递图形/媒体数据(零拷贝)。
图 1 surface(即图中的Screen Buffer)在系统架构中的位置
/foundation/graphic/surface_lite
├── frameworks # 框架代码
├── interfaces # 接口
│ ├── innerkits # 模块间接口
│ └── kits # 对外接口
└── test # 测试代码
├── fuzztest # fuzz测试
└── unittest # 单元测试
# 通过gn编译,在out目录下对应产品的文件夹中生成libsurface.so
hb build surface_lite
以WMS组件和UI组件交互为例,UI为生产者,WMS为消费者。
生产者:从Free队列中获取Buffer,将UI内容绘制到Buffer中,然后将Buffer放到Dirty队列;
消费者:从Dirty队列中获取Buffer并进行合成,然后将Buffer重新放到Free队列中。
须知:
- 由于使用了共享内存,而共享内存的管理任务在首次创建Surface的进程中,因此需要对该进程格外关注,如果发生进程异常且没有回收处理会发生严重的内存泄漏;
- Surface一般用作图形/媒体中大块内存的跨进程传输(如显示数据),尤其在使用了连续物理内存的情况下,可以大幅提高传输速率。不建议用在小内存传输的场景,容易造成内存碎片化影响典型场景的性能。
可参考轻量图形WMS组件。
graphic_surface_lite
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。