OpenHarmony适配开源图形驱动(新框架)---RK3568

OpenHarmony适配开源图形驱动(新框架)---RK3568

    • 1.刷入openharmony版本,确保基线闭源GPU使能且屏幕能正常点亮
    • 2.编译Mesa3d,生成gpu驱动相关的mesa开源库
      • 2.1基于SIG代码仓对mesa进行编译
      • 2.2执行配置好的脚本生成相应的驱动so:
          • 注意:这里的openharmony的路径和mesa3d路径需要设置成自己的路径
    • 3.将编译出来的Mesa库接入到OpenHarmony
      • 3.1 找到上面编译好的mesa3d的库:
      • 3.2 修改对应的OH代码-Master:
      • 3.3 修改对应的OH代码-Release3.1:

本文主要介绍如何基于新框架将开源驱动适配OpenHarmony,在OH上使能开源GPU。我们使用的基线版本是基于openharmony最新的master版本,以及Releas3.1版本。

1.刷入openharmony版本,确保基线闭源GPU使能且屏幕能正常点亮

1)基线版本可以选择最新的master版本或者Releas3.1社区发布版本。

2)拉取代码,并进行编译与烧录,确定基线版本可以正常点亮。
拉取OH代码(我使用的是Ubantu20.0.4):

$ repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
$ repo sync -c
$ repo forall -c 'git lfs pull'

安装依赖工具,编译器,并进行编译,

$ sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev genext2fs liblz4-tool libtinfo5 lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby
$ sudo apt install openjdk-17-jre-headless
$ bash build/prebuilts_download.sh
$ ./build.sh --product-name rk3568 --ccache

编译完成后如下:
OpenHarmony适配开源图形驱动(新框架)---RK3568_第1张图片

编译完成后进行烧录,生成的镜像文件在\out\ohos-arm-release\packages\phone\images,烧录时依次选择对应的固件,点击执行耐心等待下载完成即可
OpenHarmony适配开源图形驱动(新框架)---RK3568_第2张图片

2.编译Mesa3d,生成gpu驱动相关的mesa开源库

2.1基于SIG代码仓对mesa进行编译

首先通过git clone下载已适配好的mesa源码。git clone https://gitee.com/openharmony-sig/third_party_mesa3d.git

2.2执行配置好的脚本生成相应的驱动so:

执行命令:python ohos/build_ohos.py ~/openHarmony路径 rk3568 ~/mesa3d路径

注意:这里的openharmony的路径和mesa3d路径需要设置成自己的路径

生成的相应的lib库位于build_ohos下

3.将编译出来的Mesa库接入到OpenHarmony

由于master和release的代码路径发生了变化,因此这里分为两个版本:

3.1 找到上面编译好的mesa3d的库:

配置项
文件名
output/target/usr/lib/libEGL.so.1
output/target/usr/lib/libGLESv1_CM.so.1
output/target/usr/lib/libGLESv2.so.2
output/target/usr/lib/libgbm.so.1
output/target/usr/lib/libglapi.so.0
output/target/usr/lib/dri/ panfrost_dri.so

将这些二进制文件拷贝到/device/soc/rockchip/hardware/gpu

3.2 修改对应的OH代码-Master:

  1. ~/base/startup/init_lite/ueventd/etc/ueventd.config
    增加card1和rendD129的权限,在该文件中加上:
    /dev/dri/card1 0666 0 1003
    /dev/dri/renderD129 0666 0 1003

  2. ~/openHarmonyMaster/device/soc/rockchip/device/soc/rockchip/hardware/display/src/display_gralloc/display_gralloc_gbm.c
    OpenHarmony适配开源图形驱动(新框架)---RK3568_第3张图片

  3. ~/openHarmonyMaster/device/board/hihope./rk3568/kernel/build_kernel.sh
    OpenHarmony适配开源图形驱动(新框架)---RK3568_第4张图片

  4. ~/openHarmonyMaster/foundation/ace/ace_engine/adapter/ohos/build/product_config.gni
    OpenHarmony适配开源图形驱动(新框架)---RK3568_第5张图片

  5. ~/openHarmonyMaster/foundation/graphic/standard
    a. ./frameworks/surface/src/egl_consumer_surface.cpp不需修改
    b. ./frameworks/surface/src/egl_surface.cpp 不需修改
    c. ./graphic_config.gni 路径不一致
    OpenHarmony适配开源图形驱动(新框架)---RK3568_第6张图片

    d. ./frameworks/surface/src/native_window.cpp 不需修改
    e. ./BUILD.gn去掉surfaceimage依赖
    OpenHarmony适配开源图形驱动(新框架)---RK3568_第7张图片

  6. ~/openHarmonyMaster/kernel/linux/config./linux-5.10/arch/arm64/configs/rk3568_standard_defconfig

3.3 修改对应的OH代码-Release3.1:

  1. ~/base/startup/init_lite/ueventd/etc/ueventd.config
    增加card1和rendD129的权限,在该文件中加上:
    /dev/dri/card1 0666 0 1003
    /dev/dri/renderD129 0666 0 1003

  2. ~/device/hihope/hardware/display/src/display_gralloc/display_gralloc_gbm.c

  3. ~/device/hihope./rk3568/kernel/build_kernel.sh

  4. ~/foundation/ace/ace_engine/adapter/ohos/build/product_config.gni

  5. ~/foundation/graphic/standard
    a. ./frameworks/surface/src/egl_consumer_surface.cpp
    b. ./frameworks/surface/src/egl_surface.cpp 不需修改
    c. ./graphic_config.gni 路径不一致
    d. ./frameworks/surface/src/native_window.cpp 不需修改
    e. ./BUILD.gn去掉surfaceimage依赖

  6. ~/kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig

版权声明:本文为CSDN博主「zleoyu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zleoy/article/details/122721370

你可能感兴趣的:(harmonyos,ubuntu,linux,gpu)