#创作者激励#RK3568开发板上应用Mesa 3D 原创 精华
【本文正在参加2023年第一期优质创作者激励计划】
前言
本次采用的开发板为扬帆“竞”开发板,扬帆“竞”采用瑞芯微RK3568(Cortex-A55)四核64位超强CPU,搭载OpenHarmony最新操作系统,主频最高达2.0GHz。采用 Mali-G52 GPU,支持4K、H.265/H.264视频解码。
OpenHarmony最新版本的L2标准版图形子系统相比之前版本有着非常大的改动,使用了全新设计的框架,并使用Render Service替换了原来的Weston。图形栈整体上分为三层,从上到下依次为接口层、框架层和引擎层。设计上更加清晰,可以更加的灵活的适配不同的底层图形库和不同的显示硬件,最大限度的发挥硬件性能而不用影响到整体图形栈。
框架层的整体功能如下表,框架层的核心就是Render Service渲染服务。
模块 | 能力描述 |
---|---|
Render Servicel (渲染服务) | 提供UI框架的绘制能力,其核心职责是将ArkUI的控件描述转换成绘制树信息,根据对应的渲染策略,进行最佳路径渲染。同时,负责多窗口流畅和空间态下UI共享的核心底层机制。 |
Drawing (绘制) | 提供图形子系统内部的标准化接口,主要完成2D渲染、3D渲染和渲染引擎的管理等基本功能。 |
Animation (动画) | 提供动画引擎的相关能力。 |
Effect (效果) | 主要完成图片效果、渲染特效等效果处理的能力,包括:多效果的串联、并联处理,在布局时加入渲染特效、控件交互特效等相关能力。 |
显示与内存管理 | 此模块是图形栈与硬件解耦的主要模块,主要定义了OpenHarmony 显示与内存管理的能力,其定义的南向HDI 接口需要让不同的OEM厂商完成对OpenHarmony图形栈的适配。 |
新的Render Service图形框架默认提供了对OpenGL的支持,并使用API HOOK技术,实现了OpenGL接口和实现的分离,大幅度降低了OpenGL库的适配难度。
扬帆“竞”开发板默认使用的是闭源的libmali-bifrost-g52-g2p0-ohos库,也可以使用开源的Mesa 3D库,实现对OpenGL的支持,在高级图形应用的开发和调试方面非常方便。
使用Mesa库
编译Mesa库
OpenHarmony已经在三方库中集成Mesa库。下载OpenHarmony全量代码,Mesa库在third_party/mesa3d。
进入third_party/mesa3d/目录,OpenHarmony已经提供了编译脚本。其中ohos/build_ohos.py就是针对新图形框架的编译脚本,参考README_zh.md文档,先进行一次全量编译,然后执行。
#python ohos/build_ohos.py </path/to/openharmony> yangfan-j </path/to/openharmony>/third_party/mesa3d
命令编译出mesa库。
生成Mesa组件
1.在device/soc/rockchip/rk3568/hardware/gpu/目录下新建lib-mesa目录,用于存放Mesa 3D库文件。
#mkdir …/device/soc/rockchip/rk3568/hardware/gpu/lib-mesa
2.将编译生成的Mesa 3D库文件拷贝到lib-mesa目录:
3.修改device/soc/rockchip/rk3568/hardware/gpu/BUILD.gn
4.修改device/soc/rockchip/rk3568/hardware/BUILD.gn,使用Mesa 3D库
修改内核的配置文件
修改内核配置文件,启用panforst驱动。
修改扬帆“竞”内核补丁
内核补丁需要在Linux系统上使用vim编辑器修改,Windows编辑器修改可能导致编译错误。
测试和验证
1.查看GPU中断,panforst驱动已经正常工作。桌面显示和操作正常
2.游戏效果
测试表明,扬帆“竞”开发板的图形界面使用正常且流畅,基础应用都可以正常运行,体验与使用libmali-g52库基本一致。
想看看视频或动图版本的游戏效果
紧接着上一篇的应用来了
git上有相关项目吗