当前位置:   article > 正文

OpenHramony4.0下适配rk3568的mesa3d三方库_openharmony glmark2

openharmony glmark2

OpenHramony4.0下适配rk3568的mesa3d三方库

承接https://blog.csdn.net/qqq1112345/article/details/136653553
为了解决glmark2在dayu200开发板运行错误的问题,需要构建出基于OpenHramony4.0的mesa3d库的arm64版本,网上搜到的一些指导文章貌似都已经过时,因此开了此坑。

一、配置编译环境

sudo apt-get install python3 python3-pip ninja-build
pip3 install --user meson
sudo apt-get install pkg-config

没啥说的,直接按readme.md操作即可。

二、解决编译报错

进入目录/home/openharmony/third_party/mesa3d,运行编译命令

python ohos/build_ohos.py /home/openharmony rk3568 ./

该命令按readme.md提示修改参数中的路径即可。

错误一

报错

meson.build:983:2: ERROR: Problem encountered: Python (3.x) mako module >= 0.8.0 required to build mesa.

解决

pip install mako

错误二

在这里插入图片描述
解决:退回到ohos根目录,编译部件expat。运行命令

./build.sh --product-name rk3568-T third_party/expat:expat

然后在通过find命令找到相关的头文件和库目录,修改mesa3d/ohos/pkgconfig_template/expat.pc在这里插入图片描述
因为是在windows下改的,因此换行符有问题,不影响,不用在意哈哈,然后路径也因为偷懒用的绝对路径,追求极致的大家可以用“${ohos_project_dir}”。

然后删除mesa3d的相关配置文件重新编译

rm build-ohos pkgconfig cross_file -r

错误三

在这里插入图片描述
按错误提示,删除对应文件中的重复接口即可。

错误四

unable to find library -lhilog

解决:

在这里插入图片描述
同样再次删除相关配置文件后重新编译。
解决以上错误后,mesa3d成功编译。

root@a095fe4330fe:/home/openharmony/third_party/mesa3d# find ./ -name *.so
./build-ohos/src/gbm/libgbm.so
./build-ohos/src/mapi/shared-glapi/libglapi.so
./build-ohos/src/mapi/es1api/libGLESv1_CM.so
./build-ohos/src/mapi/es2api/libGLESv2.so
./build-ohos/src/gallium/targets/dri/mi0283qt_dri.so
./build-ohos/src/gallium/targets/dri/meson_dri.so
./build-ohos/src/gallium/targets/dri/rockchip_dri.so
./build-ohos/src/gallium/targets/dri/sun4i-drm_dri.so
./build-ohos/src/gallium/targets/dri/mcde_dri.so
./build-ohos/src/gallium/targets/dri/mali-dp_dri.so
./build-ohos/src/gallium/targets/dri/imx-lcdif_dri.so
./build-ohos/src/gallium/targets/dri/kirin_dri.so
./build-ohos/src/gallium/targets/dri/rcar-du_dri.so
./build-ohos/src/gallium/targets/dri/imx-drm_dri.so
./build-ohos/src/gallium/targets/dri/ingenic-drm_dri.so
./build-ohos/src/gallium/targets/dri/armada-drm_dri.so
./build-ohos/src/gallium/targets/dri/exynos_dri.so
./build-ohos/src/gallium/targets/dri/komeda_dri.so
./build-ohos/src/gallium/targets/dri/st7735r_dri.so
./build-ohos/src/gallium/targets/dri/hx8357d_dri.so
./build-ohos/src/gallium/targets/dri/ili9225_dri.so
./build-ohos/src/gallium/targets/dri/pl111_dri.so
./build-ohos/src/gallium/targets/dri/libgallium_dri.so
./build-ohos/src/gallium/targets/dri/ili9341_dri.so
./build-ohos/src/gallium/targets/dri/mediatek_dri.so
./build-ohos/src/gallium/targets/dri/repaper_dri.so
./build-ohos/src/gallium/targets/dri/st7586_dri.so
./build-ohos/src/gallium/targets/dri/imx-dcss_dri.so
./build-ohos/src/gallium/targets/dri/stm_dri.so
./build-ohos/src/gallium/targets/dri/panfrost_dri.so
./build-ohos/src/gallium/targets/dri/mxsfb-drm_dri.so
./build-ohos/src/egl/libEGL.so
./build-ohos/install/lib/libglapi.so
./build-ohos/install/lib/dri/mi0283qt_dri.so
./build-ohos/install/lib/dri/meson_dri.so
./build-ohos/install/lib/dri/rockchip_dri.so
./build-ohos/install/lib/dri/sun4i-drm_dri.so
./build-ohos/install/lib/dri/mcde_dri.so
./build-ohos/install/lib/dri/mali-dp_dri.so
./build-ohos/install/lib/dri/imx-lcdif_dri.so
./build-ohos/install/lib/dri/kirin_dri.so
./build-ohos/install/lib/dri/rcar-du_dri.so
./build-ohos/install/lib/dri/imx-drm_dri.so
./build-ohos/install/lib/dri/ingenic-drm_dri.so
./build-ohos/install/lib/dri/armada-drm_dri.so
./build-ohos/install/lib/dri/exynos_dri.so
./build-ohos/install/lib/dri/komeda_dri.so
./build-ohos/install/lib/dri/st7735r_dri.so
./build-ohos/install/lib/dri/hx8357d_dri.so
./build-ohos/install/lib/dri/ili9225_dri.so
./build-ohos/install/lib/dri/pl111_dri.so
./build-ohos/install/lib/dri/ili9341_dri.so
./build-ohos/install/lib/dri/mediatek_dri.so
./build-ohos/install/lib/dri/repaper_dri.so
./build-ohos/install/lib/dri/st7586_dri.so
./build-ohos/install/lib/dri/imx-dcss_dri.so
./build-ohos/install/lib/dri/stm_dri.so
./build-ohos/install/lib/dri/panfrost_dri.so
./build-ohos/install/lib/dri/mxsfb-drm_dri.so
./build-ohos/install/lib/libGLESv2.so
./build-ohos/install/lib/libGLESv1_CM.so
./build-ohos/install/lib/libEGL.so
./build-ohos/install/lib/libgbm.so

三、移植测试

根据前文运行glmark2时的错误提示,将编译出的mesa3d动态库打包到system镜像的lib目录下,方法参考前文中将glmark2相关文件打包到vendor镜像即可。

设备运行结果如下:
在这里插入图片描述
缺库的问题已经解决,继续解决其他问问题。

替换GPU库为mesa3d编译出来的,参照
https://blog.csdn.net/isoftstone_HOS/article/details/130622073
结果:
在这里插入图片描述
发现缺库,本以为相关库应该存在于/third_party/mesa3d/build-ohos/install/lib/dri,结果没有。。
在这里插入图片描述
在x86的工具链有同名库文件,但架构不同,不能拿来用,
在这里插入图片描述
arm的工具链也有,可以拿过来打包进system.img试一下

/usr/lib/aarch64-linux-gnu/dri/kms_swrast_dri.so
/usr/lib/aarch64-linux-gnu/dri/swrast_dri.so

测试失败,这两个库不能拿来用

MESA-LOADER: failed to open kms_swrast: Error loading shared library
/system/lib/kms_swrast_dri.so: Exec format error (search paths
/system/lib, suffix _dri) failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast: Error loading shared library
/system/lib/swrast_dri.so: Exec format error (search paths
/system/lib, suffix _dri) failed to load swrast driver

但构建mesa的时候,添加swrast 选项重新编译,也没有发现产物中有这两个库。。。

在这里插入图片描述

除此之外还报了“aduit denied {dac_override}”的错误,应该是权限问题,打算参照https://blog.csdn.net/jbhand/article/details/109776691 解决一下,但还没有找到对应的rc配置文件。

让人头大。。。。
解决:
修改ohos的编译脚本文件/home/openharmony/third_party/mesa3d/ohos/build_ohos.py
在这里插入图片描述
清空配置,重新编译,成功得到缺失的动态库文件。打包测试
在这里插入图片描述
桌面也起不来,继续修复。。。。

总结

暂无

参考

https://forums.openharmony.cn/forum.php?mod=viewthread&tid=944
https://blog.csdn.net/zhangh571354026/article/details/132913564
https://gitee.com/openharmony/third_party_mesa3d/blob/OpenHarmony-4.0-Release/ohos/README_zh.md
https://blog.csdn.net/u010164190/article/details/134588014

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/998807
推荐阅读
相关标签
  

闽ICP备14008679号