OpenHarmony 开源 GPU 库 Mesa3D 适配说明
本文档主要讲解在 OpenHarmony 中,Mesa3D 的适配方法及原理说明。
环境说明:
OHOS 版本: 适用 3.2-Beta3 及以上
内核版本: linux-5.10
硬件环境: Dayu200-rk3568
一、背景介绍
OpenHarmony 对图形的渲染,支持 CPU 和 GPU 两种方式。为了支持流畅的用户体现,GPU 适配是必不可少的。OpenHarmony 使用 GPU 渲染,就必须依赖 OpenGL 接口。
OpenGL(Open Graphics Library) 开放图形库,是用于渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口(仅定义了接口及规范,没有实现)。OpenGL 的高效性(利用了图形加速硬件)依赖于显示设备厂家的硬件及实现。
OpenGL API 实现的方式又分为闭源及开源两种方式。闭源实现一般由设备厂家完成,这种方式充分保证了它的高效性,但移植起来比较麻烦。今天我们要重点介绍的是另外一种开源实现的方式:mesa3D。
Mesa3D 图形库就是 OpenGL API 的一种开源实现。新版本还支持 OpenCL、OpenGL ES 等等。Mesa3D 对上提供标准的 OpenGL 接口,对下使用 Gallium 框架,屏蔽驱动差异。在 RK3568 中,panfrost 对 ARM GPU 提供了非常好的开源驱动支持。
二、适配方法
在 RK3568 GPU 开源库 mesa3D 适配时,我们同时依赖了 drm panfrost 的实现。目前 OpenHarmony 3.2-Release 基线中,支持 4.19 及 5.10 两个 Linux 版本,而只有 5.10 才提供了对 panfrost 的支持。如果当前 Linux 版本不支持 panfrost,那就需要升级内核版本,或者把 panfrost 移植到当前版本上。
2.1 适配框架说明
以下是我们这次适配的框架示意图:
阅读全文,请移步至 Laval 社区:https://laval.csdn.net/64804567ade290484cb2ed06.html
评论