当前仓库属于关闭状态,部分功能使用受限,详情请查阅 仓库状态说明
4 Star 0 Fork 2

OpenHarmony / graphic_surface
关闭

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_zh.md 3.14 KB
一键复制 编辑 原始数据 按行查看 历史

图形SURFACE组件

简介

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队列中。

图 2 Surface轮转流程

须知:

  1. 由于使用了共享内存,而共享内存的管理任务在首次创建Surface的进程中,因此需要对该进程格外关注,如果发生进程异常且没有回收处理会发生严重的内存泄漏;
  2. Surface一般用作图形/媒体中大块内存的跨进程传输(如显示数据),尤其在使用了连续物理内存的情况下,可以大幅提高传输速率。不建议用在小内存传输的场景,容易造成内存碎片化影响典型场景的性能。

使用说明

可参考轻量图形WMS组件

相关仓

图形子系统

window_window_manager_lite

graphic_surface_lite

arkui_ui_lite

graphic_graphic_utils_lite

1
https://gitee.com/openharmony/graphic_surface.git
git@gitee.com:openharmony/graphic_surface.git
openharmony
graphic_surface
graphic_surface
master

搜索帮助