开源!cix p1芯片适配OpenHarmony6.0r,对接vulkan同时提供vulkansdk工具

笔者最近将cix p1适配了OpenHarmony 6.0r并且提供了oh上的vulkansdk工具。现将成果开源如下:

gitee地址:https://gitee.com/cix_oh/cix_p1_oh

github地址:https://github.com/lbkg/cix_p1_oh

OpenHarmony上vulkan测试样例

提供的vulkansdk工具

编译步骤

javascript 复制代码
repo init -u https://gitcode.com/openharmony/manifest -b refs/tags/OpenHarmony-v6.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

# 搭建环境,/root/OpenHarmony/cixin/temp是oh源码目录
bash ./cix_env.sh /root/OpenHarmony/cixin/temp

# 进入源码目录打补丁
bash ./cix_patch/patch.sh

# 安装依赖
./build/build_scripts/env_setup.sh
source ~/.bashrc

# 下载OpenHarmony 6.0r vulkansdk
git clone -b 6.0_tag https://gitee.com/cix_oh/oh_vulkansdk.git device/soc/cix/sky1/resources/vulkansdk/oh_vulkansdk

rm -rf out && ./build.sh --product-name sky1_evb --ccache

对接OpenHarmony vulkan的思路

1.首先需要GPU驱动库提供vulkan支持。此芯提供的mali库libmail.so已经同时提供了opengl和vulkan的支持

2.创建vulkan的json配置文件,让Vulkan-Loader找到mali库

3.OpenHarmony中vulkan测试样例: https://gitcode.com/openharmony/applications_app_samples/tree/OpenHarmony-v6.0-Release/code/BasicFeature/Native/NdkVulkan

升级适配OpenHarmony 6.0r的思路

1.对于cix p1这款芯片来说,由于笔者已经为其适配了OpenHarmony公版6.6内核。所以升级oh版本第一件事情就是升级OpenHarmony社区内核。然后就是下载6.0r代码,修改board和vendor。

2.其中vendor仓库的修改

  • vendor/cix/sky1_evb/config.json中个子系统要更新为6.0r rk3568一样的,需要特别注意build_selinuxbuild_seccomp两个字段设置为false,device_stack_size设置为8388608(musl的栈大小
  • vendor/cix/sky1_evb/preinstall-config更新为6.0r rk3568的,并按需修改
  • vendor/cix/sky1_evb/resourceschedule更新为6.0r rk3568的,并按需修改
  • vendor/cix/sky1_evb/security_config更新为6.0r rk3568的,并按需修改
  • vendor/cix/sky1_evb/updater_config更新为6.0r rk3568的,并按需修改
  • vendor/cix/sky1_evb/window_config更新为6.0r rk3568的,并按需修改
    其他的主要就是build仓库的修改,先保证能编译通过,系统能起来。后面再进行深度适配

适配vulkansdk工具的思路

1.vulkansdk包含glslang、vulkan-headers、vulkan-loader、vulkan-validationlayers、vulkan-tools、shaderc等系列的工具。如果编写BUILD.gn,工作量会非常巨大。好在OpenHarmony中提供了交叉编译工具,笔者除了VulkanCapsViewer、Crash Diagnostic Layer、slang这个三个工具没有移植外,其他均交叉编译成功,开源地址:https://gitee.com/cix_oh/oh_vulkansdk

2.此外,由于笔者是直接交叉编译的vulkansdk源码,所以需要在oh下创建/usr/share/vulkan/icd.d/mali.json文件声明mali库。

3.还需要注意的一点是oh和笔者交叉编译的vulkansdk都有libvukan.so和libvulkan_swapchain.so库,所以使用的时候需要将两者做隔离,笔者的做法是将oh的libvukan.so重命名为libvukan_oh.so和libvulkan_swapchain_oh.so。

具体修改请参考
https://gitee.com/cix_oh/cix_p1_oh/tree/6.0.0_tag_kernel_6.6.101_g720/cix_patch/vulkan

往期文档回顾:

1.此芯p1开发板使用OpenHarmony时llama.cpp不同优化速度对比(GPU vs CPU)

2.以此芯p1芯片为例研究OpenHarmony上GPU (Vulkan) 加速在深度学习推理中的价值

3.开源!移植此芯p1芯片驱动到OpenHarmony社区内核上

4.cix p1芯片OpenHarmony社区内核版本从6.6.89升级到6.6.101

5.开源!!!cix p1 芯片OpenHarmony社区公版6.6.101适配AMD显卡

6.cix p1芯片OpenHarmony标准系统烧录方法