往期推文全新看点
- 鸿蒙(HarmonyOS)北向开发知识点记录~
- 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
- 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
- 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
- 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
- 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
- 记录一场鸿蒙开发岗位面试经历~
- 持续更新中……
概述
SmartPerf Editor是一款PC端桌面应用,通过监测、采集应用运行时FPS、CPU、GPU、Memory、Battery、Network等性能数据,帮助开发者了解应用的性能状况。SmartPerf Editor还集成了DrawingDoc功能,可录制Render Service绘制指令,回放并生成不同图形库文件。通过逐帧逐绘制指令回放,来识别是否存在冗余绘制、是否可以优化绘制指令的数量,从而提升页面绘制性能。本文首先介绍DrawingDoc录制回放原理,然后结合场景示例阐述DrawingDoc在性能实践中的应用。
原理介绍
图1 Render Service处理流程图
Render Service详细步骤如下:
- 预处理:Render Service会接收渲染请求,并对其进行预处理,这个过程包括解析渲染指令、准备渲染资源、设置渲染环境等。
- 渲染树遍历:Render Service遍历构建生成的渲染树,对每个节点进行适当的处理,包括应用样式、计算布局、生成绘制指令等。
- RS绘制指令录制回放:在遍历渲染树的过程中,Render Service会生成RS绘制指令。RS指令录制时仅录制每帧的脏区内容,并将RS侧的绘制指令打包写入到文件中。RS指令回放时,使用OpenHarmony原本渲染库和程序读取指令文件。
- 生成Skia指令和DDGR指令:RS绘制指令会被转换为Skia指令和DDGR指令,Skia和DDGR是一个2D图形库,用于绘制各种形状、文本和图像。
- 生成Vulkan指令和OpenGL指令:DDGR指令会被转换为Vulkan指令,Skia指令会被转换为Vulkan指令和OpenGL指令。Vulkan和OpenGL是图形API,用于在硬件上执行高效的图形计算。
- GPU处理:Vulkan指令或OpenGL指令被发送到GPU进行处理,GPU会将接收到的指令转换为像素渲染操作,最终将页面渲染到屏幕上。