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 适配框架说明

以下是我们这次适配的框架示意图:

通过上图我们可以看出,一个大致的UI显示流程如下:

JS创建window->调用skia完成接口封装->调用mesa3D的OpenGL接口完成渲染->返回EglSurface数据->送到Dislay HDI的GFX合成->调用KMS完成数据转换->LCD硬件完成显示

2.2 适配前提条件

从适配框架图可以看出,GPU适配,需要建立在Dislay HDI、DRM、LCD驱动完整的基础之上,否则Launcher没有启动,也不能确定适配是否完好。所以,在GPU适配之前,需要确保在CPU渲染的基础上,Launcher是能正常启动的。

CPU渲染修改方法: 设置graphic_standard_feature_ace_enable_gpu = false。包含在以下路径中:

bash 复制代码
foundation/graphic/standard/graphic_config.gni
productdefine/common/inherit/rich.json
productdefine/common/products/ohos-arm64.json

编译过程中,旧版本可能会报如下错误:

解决方案如下:

bash 复制代码
vendor/hihope/rk3568/config.json
"ace_engine_feature_enable_web = false"

使用CPU模式能正常进入桌面,代表系统启动正常。 2.3 Mesa3D适配

依赖库安装

sql 复制代码
sudo apt-get install -y meson cmake llvm ninja-build pkg-config 
python3 -m pip install meson==0.62.0
python -m pip install --upgrade pip
pip install mako atomic  markupsafe

合入patch

gitee.com/openharmony... //mesa3D相关 必须合入 gitee.com/zleoyu/devi... //合入产品配置 必须合入。

OpenHarmony开源GPU库Mesa3D适配说明-鸿蒙开发者社区

-------------欲知详情,请移步LAVAL社区----------- laval.csdn.net/64804567ade...

相关推荐
AI精钢1 小时前
谷歌时隔一年发布“更加开源“的 Gemma 4,意图何为?
人工智能·云原生·开源·aigc
芯智工坊3 小时前
第4章 Mosquitto命令行工具快速上手
网络·人工智能·mqtt·开源
芥子沫4 小时前
可独立部署的健身饮食管理推荐:wger,Docker一键安装部署教程
docker·容器·开源·健身
darkb1rd6 小时前
claurst:Rust 重构终端编码代理实战指南
开源·github·好物分享
AI自动化工坊7 小时前
实战教程:使用CapCut AI免费视频编辑器2小时制作专业宣传视频
人工智能·ai·开源·编辑器·音视频
AI成长日志7 小时前
【GitHub开源项目】Harness CI/CD平台深度解析:架构设计、核心功能与实战指南
ci/cd·开源·github
lulu12165440788 小时前
谷歌Gemma 4实战指南:Apache 2.0开源,移动端AI新时代来临
java·开发语言·人工智能·开源·apache·ai编程
NocoBase8 小时前
为 Excel 数据快速构建 Web 应用:4 种方法对比
前端·人工智能·低代码·开源·excel
最新快讯8 小时前
云端商用vs端侧开源:微软谷歌同日发布新一代AI模型
人工智能·microsoft·开源
人间打气筒(Ada)9 小时前
「码动四季·开源同行」go实战案例:如何在微服务中集成 Zipkin 组件?
微服务·golang·开源·grpc·zipkin·http调用